[Linux] 관리자 권한 sudo vs su 차이점
su(substitute user)는 대리 유저의 의미로 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 Shell을 실행할 수 있도록 전환하는 명령어다.
사용자 전환: su
다른 사용자로 전환(로그인)하는 명령어이다.
su 명령어의 필요성
대부분 리눅스 배포판에서는 원격에서 접속할 때 직접적으로 root 계정으로 로그인이 불가능하도록 설정되어 있다. 따라서 관리자라고 하더라도 일반 사용자로 로그인 한 뒤 root로 전환해야 하는데 이때 필요한 명령어가 su 이다.
💡 su [option] [username]
· 사용자명을 입력하지 않으면 root로 사용자 전환을 한다.
· 사용자 전환 시 해당 사용자의 패스워드를 입력해야 한다.
· root에서 다른 사용자로 전환 시 별도로 패스워드를 묻지 않는다. · 다른 사용자로 전환 후 원래 사용자로 돌아가려면 exit을 입력하면 된다.
su : root 권한 + 기존 사용자 환경변수
- root 사용자로 전환한다. root로 권한을 가지지만 환경 변수 등은 기존 사용자의 환경으로 적용되며 완전한 root 권한이 아닌 어느정도 제약이 따른다.
su - : root 권한 + root 환경변수
- root 사용자로 전환한다. 실제 root로 로그인한 것 처럼 모든 환경이 root의 상태가 된다.
su root -c “tail -f /var/log” : 일회성으로 root 권한을 빌려 명령어 실행
- 사용자를 전환하지 않고 일회성으로 명령을 내릴 때 -c 옵션을 사용한다.
Sudo (substitute user do)
다른 사용자의 권한을 이용하여 명령을 실행하도록 하는 명령어이다. sudo [command] 는 root 권한으로 명령어를 실행하는 것을 의미한다. /etc/sudoers 파일에 지정되어 있는 사용자만 sudo 명령어 사용이 가능하다.
sudo: root 권한 Only
- root 계정으로 로그인 없이 명령어 실행
- root 계정 패스워드 필요
sudo su: Interactive Non-Login Shell(대화형 비로그인 쉘) 동작
- 비로그인 쉘을 실행시키기 위한 시동파일 실행 (~/.bashrc, /etc/bashrc)을 읽어들임
- 현재 계정 Shell 유지 (현재 디렉토리 유지)
- 현재 계정 패스워드 필요
sudo -s: Interactive Non-Login Shell(대화형 비로그인 쉘) 동작
- 비로그인 쉘을 실행시키기 위한 시동파일 실행 (~/.bashrc, /etc/bashrc) 을 읽어들임
- 현재 계정 Shell 유지 (현재 디렉토리 유지)
- root 계정 패스워드 필요
sudo -i: Interactive Login Shell(대화형 로그인 쉘) 동작
- 로그인 쉘을 실행시키기 위한 시동 파일 실행 (/etc/profile & ~/.profile & (~/.bashrc or ~/.login))
- root 쉘 실행("/root"로 디렉토리 변경)
- root 계정 패스워드 필요
sudo -i vs sudo su -
sudo su - 및 sudo -i 모두 로그인 쉘로서 실행이 된다. -i 옵션은 2004년에 추가가 되었고 sudo su - 는 sudo -i 와 동일한 역할을 수행하기 위한 템플릿의 일종이었다고 한다. 그래서 둘은 거의 비슷하다고 볼 수있으며, 차별화 하여 사용할 필요는 없다고 한다.
참조: https://unix.stackexchange.com/questions/218169/is-there-ever-a-good-reason-to-run-sudo-su
참조
'Engineering > Linux & Shell' 카테고리의 다른 글
[Shell] 디렉토리 내 여러파일 문자 바꾸기 (0) | 2024.07.07 |
---|---|
[리눅스] 파일과 디렉토리의 허가권과 소유권 (0) | 2022.04.03 |
[Linux] Locate 와 FIND 명령어 차이점 (0) | 2021.12.31 |
Login vs Non-Login Shell (/etc/profile, .bash_profile, .bashrc) (0) | 2021.12.10 |
소스 컴파일 ↔ 바이너리 패키지 설치방식의 차이점 (Source Compile vs Binary Package) (0) | 2021.12.03 |
댓글