Linux_su(substitute user): 사용자 전환
■ 개념
su(substitute user) : 대체 사용자 및 그룹 ID로 명령을 실행
■ 문법
su [options] [-] [user [argument...]]
■ 설명
su는 대체 사용자 및 그룹 ID로 명령을 실행
인수 없이 호출하면 su는 기본적으로 대화형 셸을 root로 실행
이전과의 호환성을 위해 su는 기본적으로 현재 디렉터리를 변경하지 않고 HOME 및 SHELL 환경변수들만 설정한다
(plus USER and LOGNAME if the target user is not root). 혼합 환경의 영향으로 발생하는 부작용을 피하기 위해선
- 대신에 항상 --login 옵션 사용을 권장한다.
su는 대부분 권한이 없는 사용자를 위해 설계되었다.
su -를 입력하면 환경 변수를 적용하지만 su만 입력하면 환경 변수를 적용하지 않는다.
root 계정은
■ 옵션
-c, --comand=command
-c 옵션을 사용하여 shell에 명령을 전달. 대화형 shell을 실행하지 않는다.
-, -l, -login
실제 로그인과 유사한 환경에서 shell을 login shell로 시작한다.
TERM을 제외한 모든 환경 변수 제거
환경 변수 HOME, SHELL, USER, LOGNAME 및 PATH 초기화
대상 사용자의 홈 디렉토리 변경
shell을 login shell로 만들기 위해 shell의 argv[0]을 -로 설정
-m, -p, -preserve-environment
전체 환경, 즉 HOME, SHELL, USER, LOGNAME을 설정하지 않는다. -login 옵션이 명시된 경우엔 이 옵션이 무시.
※ 사용자 간 전환 시 일반 사용자가 다른 일반 사용자의 계정으로 전환하려면 전환하려는 사용자 계정의 패스워드가 설정되어있어야 가능
출처 : Rocky Linux release 8.9