내가 액세스할 수 없는 디렉토리가 있다고 가정해 보겠습니다. 분명히 모든 쉘에는 내장 쉘이 있기 sudo cd foo
때문에 작동하지 않습니다 .cd
sudo bash
지금까지 나는 루트 프롬프트를 얻기 위해 (예, 더 좋은 방법이 있다는 것을 알고 있습니다) 사용해 왔습니다 . 그런 다음 cd
카탈로그로 이동하여 찾아볼 수 있습니다.
더 좋은 방법이 있나요?
답변1
cd
아니요, 루트만 허용하고 루트는 허용하지 않는 디렉터리에 들어갈 수 있는 방법은 없습니다 . 이 제한 사항이 적용되는 디렉터리가 너무 많아서는 안 됩니다. 대부분의 경우 특정 파일에 대한 액세스가 제한 됩니다 /etc/shadow
./var/log
sudo ls <dir>
대신 to 를 사용하여 이를 볼 수 있습니다 bash
. 또한 sudo
to 를 사용하여 루트가 될 때 일반적으로 대신 사용자( su
명령) 를 설정하려고 하므로 bash
다음 명령을 사용하십시오.
$ sudo su -
-i
sudo 스위치를 사용하여 동일한 작업을 수행 할 수도 있습니다 .
$ sudo -i
관련 매뉴얼 페이지에서 발췌sudo -i
-i(초기 로그인 시뮬레이션) 옵션은 대상 사용자의 passwd(5) 항목에 지정된 쉘을 로그인 쉘로 실행합니다. 이는 쉘이 .profile 또는 .login과 같은 로그인별 리소스 파일을 읽는다는 것을 의미합니다. 명령이 지정되면 실행을 위해 쉘로 전달됩니다. 그렇지 않으면 대화형 쉘이 실행됩니다.
액세스할 수 없는 파일의 경우 다음 명령 중 하나를 사용할 수 있습니다 sudo
.
$ sudo tail /var/log/messages
$ sudo less /etc/shadow
답변2
아니요, 없습니다. 루트로 실행되는 쉘이 필요합니다.
답변3
예, 그럴 수 없습니다. 그러나 해결 방법은 다음과 같습니다.
sudo sh -c "cd restricted-dir; some_command"