"sudo -i"와 "sudo bash -l"의 차이점은 무엇입니까


13

루트로 작동하는 여러 sysadmin에 관한 최근 질문 이 있으며 sudo bash -l참조되었습니다.

나는 구글과 SE에서이 검색,하지만 난 차이 이해가 안 sudo bash -lsudo -i.

bash 및 sudo 매뉴얼 페이지 sudo bash -l에서 루트 사용자의 ~ / .bash_profile, ~ / .bash_login 및 ~ / .profile 및 ~ / .bash_logout 을 실행 하는 차이점이있을 수 있지만 직접 테스트하면 다음과 같습니다. 루트가 아닌 일반 사용자의 .bashrc를 실행합니다. 매뉴얼 페이지에서 ~ 표현식이 참조하는 사용자를 잘못 이해했을 수도 있습니다. 차이점과 사용 시나리오에 대한 설명을 부탁드립니다.

답변:


10

/ etc / passwd에 지정된 루트 사용자 로그인 쉘이 bash가 아닌 경우 두 번째 명령은 bash 쉘을 루트로 가져오고 첫 번째 명령은 루트 사용자가 가진 대화식 쉘을 사용한다는 점에서 다릅니다.


@ johnshen64 안녕하세요, 다른 사용 시나리오를 명확히 할 수 있습니까?
Rqomey

2
셸을 사용하는 사람들이 있으므로 bash를 사용하려면 두 번째 양식을 사용해야합니다. 두 번째 형식은 또한 실제 로그인을 시뮬레이트합니다 (즉 -l의 의미). 물론 sudo -i를 사용하여 사용자 (기본값은 root)에 대화 형 쉘로 bash가없는 것을 발견하면 bash를 입력 할 수도 있습니다. 그렇지 않으면 차이가 매우 작습니다. 다른 답변에서 볼 수 있듯이 약간의 환경 차이도 있습니다. 대부분의 경우 가장 일반적인 배포판은 bash를 사용하므로 차이는 중요하지 않으며 첫 번째는 더 짧습니다. 나는 거의 두 번째 형태를 사용하지 않습니다.
johnshen64

4

또한 @ johnshen64 나는 것으로 나타났습니다 답변을 추가하는 sudo -i호출이 업데이트 $USERNAME에 ENV 변수를 root하고 cd ~그래서 같이 사용자 홈에;

$ sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root

그러나 for sudo bash -l $USERNAME는 성 가시지 않으며 작업 디렉토리는 변경되지 않습니다. (이것은 다른 사용자에게 일관성이 없지만 주석을 참조하십시오 ...)

$ sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX

아마 당신은 정확히 같은 집합을 얻지 ~/.bashrc못하거나 같은 순서로되지 않을 것입니다.

(내 상자가 내 .bashrc어설프게 약간 엉망이되었을 수 있으므로 YMMV)


감사합니다 @Tom H : echo $USERNAME내 우분투 데스크탑과 centos 5.2에서 루트를 두 번 반환합니다. 그러나 귀하가보고 한대로 PWD입니다.
Rqomey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.