이번 시간에는 Linux에서 사용되는 sudo / su / su - 의 차이점에 대해 알아보자. 위 명령어는 주로 일반 사용자가 관리자 권한을 통해 특정 행위를 수행해야 하는 경우 사용이되는 명령어다.
01. sudo / su / su - ??
리눅스에서는 특정 명령을 수행하기위해 관리자 권한(root)이 필요한 경우가 존재한다. 일반 사용자가 관리자 권한(root)을 사용하기 위해서는 su(switch user) or sudo(SuperUser Do) 명령어를 사용하면 된다.
✅ 01-1. su(Switch User)
su [option] [username]
- su 다음에 사용자명을 입력하지 않으면 root로 사용자 전환
- 현재 계정을 로그아웃 하지 않고 다른 계정으로 전환하는 명령어
- 사용자 전환 시 해당 사용자의 패스워드 입력 필요
- root 사용자 → 일반 사용자 전환 시 패스워드를 묻지 않는다
# 관리자 계정으로 전환
su root
- 관리자 계정으로 전환 하면서, 기존 사용자의 환경변수를 사용 한다
# 관리자 계정으로 전환 + 관리자 환경 변수 사용
su - root
su -l roo
# 일반 계정으로 전환 + 일반 계정 환경 변수 사용
su - user1
su -l user1
- 관리자 계정으로 전환 하면서, 관리자의 환경 변수 사용
- 일반 계정으로 전환 하면서, 일반 계정의 환경 변수 사용
# 로그인 전환 안하고, 1회성 명령어 수행
su root -c
- 사용자를 전환하지 않고, 1회성으로 명령 수행 시 -c 옵션 사용
su -s /bin/bash user1
- 기본적으로 su 명령어 수행 시 /etc/passwd에 지정된 사용자의 기본 shell이 실행된다. 하지만 -s 옵션을 사용하면 이를 무시하고 원하는 shell 실행이 가능하다.
✅ 01-2. sudo(SuperUser Do)
sudo [option]
- sudo 명령어는 다른 사용자(root)의 권한을 이용하여 명령을 실행하도록 하는 명령어다.
- sudo [command] 는 root 권한으로 명령을 실행하는 것을 의미
- /etc/sudoers 파일에 지정되어 있는 사용자만 sudo 명령 사용 가능
sudo [command]
- root 계정으로 로그인 없이 명령 실행
- root 계정 패스워드 필요
sudo su
- root 비밀번호가 아닌, 현재 사용자의 비밀번호로 su를 실행 할 수 있음
- root의 환경변수, 현재 디렉토리 유지
- 현재 사용자의 비밀번호로 su를 실행하기에, sudo 명령을 실행할 수 있는 권한이 있어야함
- /etc/sudoers 파일에 지정되어 있는 사용자만 sudo 명령 사용 가능
sudo -s
- root 비밀번호를 기반으로, root 권한만 얻는다
- 현재 사용자의 환경변수, 현재 디렉토리 유지
99. 참고 자료
[Linux] 관리자 권한 sudo vs su 차이점
su(substitute user)는 대리 유저의 의미로 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 Shell을 실행할 수 있도록 전환하는 명령어다. 사용자 전환: su 다른 사용자로 전환(로그인)하는
anggeum.tistory.com
su/ su - / sudo 명령어, 차이
리눅스에서 특정 명령을 실행하거나 , 특정 파일에 접근하기 위해서 때로는 루트(root) 권한이 필요한 경우가 있다. 이러한 경우에 사용하게 되는 su / su- / sudo 명령어들과 각 명령어들의 차이점,
velog.io