루트 사용자의 파일 지우기가 작동하지 않습니다.

루트 사용자의 파일 지우기가 작동하지 않습니다.

다음 명령을 사용하여 파일을 지웁니다.

> file.txt

잘 작동해요! 하지만 root사용자 권한이 있는 파일도 있습니다 . 그래서 나는 노력했다

sudo > different-file.txt

다음 세부정보를 얻었습니다.

usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s]
        [<command>]
usage: sudo -e [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...

이는 내 명령에 일부 구문 오류가 있음을 나타냅니다.

뭐가 문제 야?

답변1

루트로 파일을 비우려면 다음 truncate명령을 사용할 수도 있습니다.

$ sudo truncate -s0 file.txt

-s0파일 크기를 0으로 설정하여 효과적으로 비웁니다.

답변2

sudo -i루트가 되어 시작하십시오(root-shell 사용).

sudo달리기를 위해주문하다루트로 실행되지만 >명령으로 실행되는 것은 아니지만 쉘 내에서 리디렉션으로 실행됩니다. 둘 다 루트로 실행되지는 않습니다.

도망쳤다고 해 sudo cat foo > bar...

cat루트로 실행하면 열기를 포함한 모든 작업에 액세스하고 수행할 수 있습니다."부자"귀하가 아닌 다른 사용자가 소유하고 있으며 모든 읽기 권한이 꺼져 있더라도 마찬가지입니다.

하지만 >속해있다껍데기 sudo cat루트가 아닌 사용자와 일반 권한으로 실행하고 실행하세요. 파일도 있어요"술집"또한 일반(루트가 아닌) 사용자로서 쉘을 통해 액세스할 수 있으므로 일반 사용자는 1) 디렉토리에 대한 쓰기 권한이 있거나 2) 파일을 소유해야 합니다. 해당 디렉터리나 파일을 다른 사용자(루트 포함)가 소유한 경우 해당 디렉터리나 파일에 액세스할 수 없습니다.

답변3

new아래와 같이 루트 사용자가 소유한 새 파일을 만들었습니다 .

ls -lat new
-rw-r--r-- 1 root root 42 Sep  9 13:37 new

이제 일반 사용자로 로그인하여 다음 명령어를 이용하여 파일의 내용을 삭제해 보았습니다.

sudo sh -c " > /root/new"

이제 루트로 다시 로그인하여 콘텐츠가 삭제되었는지 확인할 수 있습니다.

ls -lat new
-rw-r--r-- 1 root root 0 Sep  9 13:42 new

인용하다

이것대답은 다음과 같습니다.

또는 sudo sh -c "echo 'text' >> /file.txt"를 실행할 수도 있습니다. 이 방법도 작동하지만 모든 보간/이스케이프가 방해할 수 있는 복잡한 표현식이 있는 경우 약간 번거롭습니다.

하지만 파일을 삭제하는 것이므로 문제가 발생하지 않을 것이라고 생각합니다.

답변4

sudo > different-file.txt인수 없이 시작 sudo하고 표준 출력을 different-file.txt.

cat /dev/null > different-file.txt(루트 프롬프트에서) 시도해 보십시오 .

다음 방법 중 하나를 통해 루트가 됩니다 sudo -i.sudo /bin/bash

관련 정보