su 루트 없이 /root에 있는 파일이 존재하는지 어떻게 테스트할 수 있습니까?

su 루트 없이 /root에 있는 파일이 존재하는지 어떻게 테스트할 수 있습니까?

내 운영 체제는 Ubuntu 14.04 LTS입니다. 파일을 받았고 /root/1.txt파일에 대한 읽기 권한이 없는 "yu"를 사용하여 로그인했습니다.

코드를 사용하면 if [ -e /root/1.txt ]false가 반환됩니다. 나는 이것을 사용하여 su - root사용자를 변경하고 올바른 결과를 얻을 수 있다는 것을 알고 있습니다.

내 질문은: 그렇지 않다면 어떻게 할 수 있습니까 su - root? 이 상황을 해결할 수 있는 방법이 있나요 sudo?

이 상황을 해결했어요test

sudo test -e /root/1.txt &&echo "the file is exist" ||echo "the file isn't exist"

답변1

아니요.

/root/전 세계에서 읽을 수 없음좋은 이유. 파일을 꼭 사용해야 한다면 다른 곳에 두십시오.

답변2

분명히 시스템의 /root 디렉토리에는 (적어도) 그룹 멤버십이나 "기타" 비트를 통해 사용자 "yu"에 대한 "실행" 권한이 없습니다. 따라서 'yu'는 /root/1.txt가 존재하는지 확인하기 위해 /root 디렉토리의 내용을 나열할 수 없습니다.

파일 및 디렉터리 권한(Linux에서는 Ubuntu에서 언급한 대로)에 대한 자세한 설명은 다음을 참조하세요. 비트를 실행하고 읽습니다. Linux에서 디렉토리 권한은 어떻게 작동합니까?

/root에 대한 권한을 변경하고 싶지 않다면 test해당 디렉터리를 읽을 수 있도록 자신의(물론 그렇습니다) 권한을 업그레이드해야 합니다. [실제 프로그램( ) 이고 /usr/bin/[쉘이 내장되어 있으므로 sudo sudo [ -e /root/1.txt ] && echo yes || echo no:를 사용할 수 있습니다. [[( 반대로오직외부 프로그램이 아닌 내장 프로그램).

만약 너라면/root에 대한 권한을 변경하려는 경우 최소한의 변경은 "다른" 권한을 열어 "실행" 비트( sudo chmod o+x /root예:)를 추가하는 것입니다. 이렇게 하면 디렉터리의 일반적인 목록이 표시되지 않지만 특정 파일을 검사할 수 있습니다.

user@host:~$ ls -ld /root
drwx-----x 2 root root 4096 Apr  3 04:55 /root
user@host:~$ [ -e /root/1.txt ] && echo yes
yes
user@host:~$ ls /root
ls: cannot open directory /root: Permission denied

"other+execute"의 변형은 그룹에 실행 권한을 추가하고 /root 그룹을 "yu"가 속한 그룹으로 변경하는 "group+execute"입니다.

간단히 말해서 이 진술은 다음과 같습니다.

if [ -e /root/1.txt ] 코드를 사용하면 false가 반환됩니다. 나는 su - root를 사용하여 사용자를 변경하고 올바른 결과를 얻을 수 있다는 것을 알고 있습니다.

"올바른"이라는 단어의 사용은 오해의 소지가 있습니다. 파일 시스템 권한이 test동작을 결정합니다. 상관없어요파일이 존재하는지 아는 것이 중요합니다. 프로그램에 파일을 볼 수 있는 권한이 있는지가 중요합니다.

답변3

su 대신 sudo를 사용하여 이 작업을 수행하려면 다음을 수행할 수 있습니다.

sudo sh

그러면 루트로 터미널에 로그인할 수 있으며 원하는 것은 무엇이든 할 수 있습니다. 하지만 다른 사용자가 액세스할 수 없는 이유가 있기 때문에 /root를 함부로 사용하지 않는 것이 좋습니다. "1.txt"를 다른 곳으로 옮겨야 합니다.

관련 정보