1. root 계정
- Ubuntu에서는 일반적으로 root 계정이 잠겨 있음.
- 따라서 잠겨있는 root 계정으로 로그인할 수 없음.
- 일반 사용자는 root 계정으로 로그인하는 대신 일시적으로 root 권한을 얻기 위해 sudo 명령어를 사용함.
2. sudo 명령어
- Super User DO 의 줄임말이었으나, UNIX의 기능이 확장되며 Substitute User DO(다른 사용자의 권한으로 실행) 으로도 사용됨.
- 일반 사용자가 root 권한을 잠시 빌려 실행하게 하는 명령어.
- 권한만 잠시 빌리는 것이기 때문에 근본적으로 명령을 내리는 주체는 현재 사용자이다.
- 그런데 sudo 명령어를 사용할 때 root 사용자가 아닌 현재 로그인한 일반 사용자의 비밀번호를 요구함.
- 그렇다면 아무나 root권한을 사용하는 건데 의미가 있을까?
- 하지만 sudo 명령어를 사용할 수 있는 사용자 or 그룹은 /etc/sudoers에 등록되어야 한다.
- 허락받은 계정만 sudo 권한을 잠시 빌려올 수 있다.
3. su 명령어
- substitute user, super user, switch user로 사용됨.
su [변경하고자 하는 사용자 ID]
- ID를 입력하지 않으면 default로 su root로 동작함.
- 그런데 su 명령어를 입력하면 su root으로 동작하고, 이는 root의 비밀번호를 물어봄.
- 비밀번호를 설정한 적이 없음. 즉 로그인이 불가능함.
- sudo passwd root 명령어를 통해 root의 비밀번호 설정이 가능함
- root의 비밀번호를 설정했다면, root 계정이 잠금 해제됨. 즉 로그인이 가능해짐.
- 하지만 sudo su는 root의 비밀번호를 묻지 않음. sudo 명령어를 실행하는 일반 사용자의 비밀번호를 요구함.
- 이런 구조를 취하는 이유는 보안상의 이유 때문.
3. su vs su -, su -l, su --login
- su: root 사용자로 전환. 하지만 현재 사용자의 환경 변수와 현재 디렉토리를 유지.
- su -(su -l, su --login): root 사용자로 전환. 하지만 환경변수, 디렉토리를 root 사용자의 것으로 변경. root 사용자가 로그인한 것처럼 작동.
결론: root 계정을 잠근 상태로 유지하고, 관리 작업에 sudo 명령어를 사용하자.
출처
https://www.leafcats.com/168
https://storycompiler.tistory.com/44
https://jjeongil.tistory.com/1761
https://serina-the-best.tistory.com/16