su 명령어에 대해 몇자 적어본다.
리눅스 ( linux ) 를 사용하면서 많이 사용하는 명령어 기본명령어 이지만
잘 사용하지 않는 옵션이 있어 포스팅 한다.
나는 CentOS 를 사용하기 때문에 ubuntu ( 우분투 ) 는 잘 모른다.
비슷한 맥락일테니 필요하면 읽어보자.
su ( substitute ) 명령어는 다른 계정으로 계정을 바꿀 때 사용하는 명령어로,
일반 사용자 계정에서 root나 다른 사용자 계정으로 변환 할 때 패스워드를 물어보지만,
root에서 다른 사용자로 변환할 때는 패스워드를 물어보지 않는다.
왜냐하면 root라는 계정 자체가 시스템의 모든 권한을 가지고 있기 때문이다.
su 명령어를 사용할 때 옵션으로 -c, -s, -, -l 이 있는데
먼저 -c 옵션은 쉘을 실행하지 않고 주어진 명령만을 수행한다.
-s 옵션은 지정된 쉘로 로그인을 할 수 있고, -와 -l 옵션은 같은건데
지정한 사용자의 환경변수를 적용하여 로그인 하는 것이다.
명령어 방법으로 몇가지 예를 들어볼건데
[ 계정 변환 ]
- 쉘 환경변수 미적용
-> # su root
-> # su
위 두 명령은 같은 명령이다 생략하면 root가 실행된다.
이렇게 명령하면 쉘 환경변수를 가져오지 않고 계정만 변경된다.
- 쉘 환경변수 적용
-> # su - root
-> # su -
위와 같이 -를 사용하면 root의 쉘 환경변수를 가져온다.
- 일반 계정으로 변환
-> # su user1
-> # su user2
.
.
.
위와같이 su 뒤에 바꿀 계정을 입력하면 된다.
root에서 일반계정으로 변환 시 패스워드를 물어보지 않으며
일반 계정에서 일반 계정으로, 일반계정에서 root 계정으로 변환시
패스워드를 물어본다.
여기까지 계정 변환에 대한 내용은 리눅스 사용자라면 대부분이 알고 있을 것이다.
자주 사용된다는 의미이기도 하다.
다음은 계정변환 없이 특정 명령어만 실행 할 수도 있는데
사용법은 이러하다.
[ 계정변환없이 특정 명령어만 실행 ]
-> # su -c 'cat /etc/shadow' - root
이렇게 명령하면 사용자 계정 변환 없이 root의 권한으로 shadow 파일의 내용을 출력 해 준다.
sudo와 같은거라고 생각하면 된다.
[ 쉘을 변경하여 다른 계정으로 변환 ]
-> # su -s /bin/csh - root
이렇게 입력하면 c쉘로 변경해서 root 사용자로 바꿔준다.
su 명령어는 우리가 많이 사용하면서도 이런 옵션이 있었나 할 만큼 많이 안쓰는 옵션이 있었다.
이걸 알게 된다고 해서 대단해 지는 것은 아니지만 티끌모아 태산이라고 했던가.
그냥 알아두자.