Skip to content

linux su 명령어

su(subsitute user) 명령어는 사용자의 권한을 다른 사용자로 전환할 때 사용하는 명령어다.

일반적으로 root 권한을 얻기 위해 가장 많이 사용됨.

root가 되어볼게 얍

shell
su
su root

두 커맨드는 모두 root 계정으로 전환하는 명령어다 su 뒤에 값을 입력하지 않을 경우 su root와 동일하게 동작함.

su -

shell
OPTIONS
       -, -l, --login
           Start the shell as a login shell with an environment similar to a real login:

   clears all the environment variables except TERM and variables specified by --whitelist-environment

   initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH

   changes to the target user’s home directory

   sets argv[0] of the shell to '-' in order to make the shell a login shell

man su 를 입력하면 옵션 값들을 확인할 수 있는데 그중 -l 옵션을 살펴보면,
일반적으로 사용하는 형태는 su - 처럼 많이 사용한다

shell
대상 사용자의 로그인(login shell) 시작하며, 실제 로그인 시와 유사한 환경을 구성합니다:
- TERM과 --whitelist-environment로 지정된 변수들을 제외한 모든 환경 변수를 초기화(삭제) 합니다.
- 환경 변수 HOME, SHELL, USER, LOGNAME, PATH를 새로 설정합니다.
- 대상 사용자의 디렉터리로 이동합니다.
- 셸의 argv[0]을 '-'로 설정하여, 해당 셸이 로그인 셸임을 나타냅니다.

su - 는 단순히 사용자만 전환하는 것이 아닌, 완전히 새로운 로그인 환경으로 전환한다는 뜻이다