티스토리 뷰

 

알고싶지 않았지만 알게된 ,, su와 sudo의 차이점

Jenkins Agent의 계정을 다른 계정으로 변경하려고 작업을 했는데 문제가 생겼었다.

Jenkins 작업 뒤에 CP작업이 있다면 계정과 로그인간에 연결된 무언가가 있는지 확인하세요 다덜 (sudo로 작업해서 환경변수가 안바뀌는 참사 발생) 

그래서 알아본 su 와 sudo의 차이점이다.

 

아래 설명과 예시들은 변경해야 할 계정명을 'cicdagent'라고 했지만, 아마 가장 많이 쓰일 계정은 'root'일 것이다

root도 동일하게 적용되지만, 꼭 root만 su/sudo를 사용하는게 아니라는걸 기억하기 위함임

 

🔎 su

✔︎ su ?

  • su : substitute user의 약자. 사용자를 완전히 전환하여 해당 계정으로 로그인한 것 처럼 동작한다.
  • su - cicdagent는 cicdagent계정으로 전환하며, 사용자의 환경 변수도 해당 계정의 초기 설정으로 로드된다.

✔︎ 주요 특징

  • 완전한 사용자 전환 : 현재 세션에서 cicdagent계정으로 전환
  • 환경 변수 초기화 : - 옵션은 로그인 셸을 실행하며, 홈 디렉터리 및 PATH같은 환경변수를 새로 설정
  • 암호 요구 : cicdagent계정의 암호를 입력해야 전환이 가능

✔︎ 사용 상황

  • 특정 사용자의 환경을 완전히 가져와야 할 때
  • cicdagent계정으로 실행해야 하는 스크립트나 명령어가 있을 때

 

🔎 sudo

✔︎ sudo ?

  • sudo : superuser do의 약자. 현재 사용자의 권한으로 특정 명령어를 다른 사용자(cicdagent)의 권한으로 실행한다.
  • -cicdagent는 -u cicdagent의 축약형으로, 명령어를 cicdagent사용자의 권한으로 실행한다는 의미이다.

✔︎ 주요 특징

  • 명령어 단위 실행 : 사용자를 전환하지 않고, 특정 명령어를 cicdagent권한으로 실행
  • 환경 변수 유지 : 기본적으로 현재 사용자의 환경 변수를 유지. (-i 옵션으로 초기화 가능)
  • 암호 요구 : sudo 권한이 설정된 계정의 암호를 입력해야 실행 가능

✔︎ 사용 상황

  • cicdagent권한으로 특정 명령어만 실행해야 할 때
  • 전체 세션 전환 없이 일회성 작업이 필요할 때

 

🍀 주요 차이점 비교

특징 su - cicdagent sudo - cicdagent
사용자 전환 방식 계정 전환 (새로운 셸 시작) 특정 명령어만 다른 사용자로 실행
환경 변수 초기화 초기화됨 (cicdagent의 환경 적용) 초기화되지 않음 (기본적으로 현재 환경 유지)
암호 요구 cicdagent의 암호 현재 사용자의 암호 (sudo 설정된 경우)
적합한 작업 장시간 cicdagent로 작업 단일 명령어를 cicdagent 권한으로 실행

 

 

💡 정리

su [계정명]

  • 다른 계정으로 전환

su - [계정명]

  • 다른 계정으로 전환 + 그 계정의 환경변수 적용
  • 장기 작업이 필요할 때 적합

sudo [계정명]

  • 현재 계정에서 다른 계정의 권한만 빌림
  • 특정 단일 작업 및 임시작업이면 sudo - [계정명]이 효율적

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
250x250