루트로 디렉토리에 어떻게 CD를 넣을 수 있습니까?


10

액세스 권한이없는 디렉토리가 있다고 가정 해 봅시다. 모든 쉘에 쉘이 내장되어 sudo cd foo있기 때문에 분명히 작동하지 않습니다 cd.

지금까지 sudo bash루트 프롬프트를 얻기 위해 방금 사용했습니다 (예 더 나은 방법이 있음을 알고 있습니다). 그런 다음 cd디렉토리로 찔러 볼 수 있습니다.

더 좋은 방법이 있습니까?


cd실제로 루트 쉘에 있지 않은 한 왜 루트로 사용 하고 싶 습니까?
tripleee

만약 루트가 디렉토리를 소유하고 있고 글로벌 실행이 없다면
strugee

1
실제로 유효한 사례는 아닙니다. 디렉토리를 읽을 수 있으면 유용하지만 디렉토리가 작업 디렉토리 일 필요는 없습니다 (예 : 필요 없음) cd.
tripleee

그래, 나는 받아 들여진 대답이 내가 할 수 있다고 지적 할 때까지 그것을 알지 못했다 sudo ls.
strugee

답변:


12

아니, cd루트 가 아닌 루트 만 허용하는 디렉토리 로가는 방법은 없습니다 . 이 제한이있는 디렉토리가 너무 많으면 안됩니다. 대부분의 경우 /etc/shadow파일 또는 아래의 특정 로그 파일 과 같이 제한된 특정 파일에 대한 액세스 권한 /var/log입니다.

sudo ls <dir>대신에 그들을 볼 수 있습니다 bash. 또한 sudo루트가되기 위해 사용할 때 일반적으로 su대신에 사용자 ( 명령) 를 설정하려고 bash하므로 대신이 명령을 사용하십시오.

$ sudo su -

sudo -i스위치를 사용하여 동일한 작업을 수행 할 수도 있습니다 .

$ sudo -i

맨 페이지에서 발췌 sudo -i

-i (초기 로그인 시뮬레이션) 옵션은 대상 사용자의 passwd (5) 항목에 지정된 쉘을 로그인 쉘로 실행합니다. 이는 .profile 또는 .login과 같은 로그인 특정 자원 파일을 쉘에서 읽음을 의미합니다. 명령이 지정되면 실행을 위해 셸로 전달됩니다. 그렇지 않으면 대화식 쉘이 실행됩니다.

액세스 할 수없는 파일의 경우 다음 sudo명령 중 하나를 사용할 수 있습니다 .

$ sudo tail /var/log/messages

$ sudo less /etc/shadow

3
sudo su -대신에 사용 sudo -i하시겠습니까? CAP_DAC_READ_SEARCH 기능 만 있으면 모두 수퍼 유저 권한을 모두 부여합니다.
Stéphane Chazelas

@StephaneChazelas-전에는 그 스위치를 본 적이 없습니다. 제가 처음 소개 한 sudo것은 Solaris 환경을 통한 sudo것이 었으며 해당 버전 에는이 스위치가 포함되어 있지 않았습니다. sudo changelog를 살펴보면 2004 년에 해당 옵션이 추가 된 것 같습니다. 둘 다 포함하도록 답변을 수정하겠습니다. 감사합니다!
slm

@ StéphaneChazelas 동의합니다. sudo -Hi홈 디렉토리도 설정하기 때문에 선호합니다 (디스플레이에서 기본적으로 홈을 설정하지 않으므로 기본값이 다를 수 있음). 그렇지 않으면 집에 루트 소유 파일이 생길 수 있습니다 (새 파일이 생성 될 경우).
doug65536


0

그렇습니다. 그래도 해결 방법은 다음과 같습니다.

sudo sh -c "cd restricted-dir; some_command"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.