/tmp에 대한 올바른 권한은 무엇입니까? 실수로 모든 것을 재귀적으로 공개로 설정했습니다.

/tmp에 대한 올바른 권한은 무엇입니까? 실수로 모든 것을 재귀적으로 공개로 설정했습니다.

나는 몇 시간 동안 일부 사용자들과 공유하고 싶은 매우 짧은 임시 디렉토리를 만들었습니다./some/path/tmp

sudo chown 777 -R /tmp안타깝게도 제가 대신 활성화했기 sudo chown 777 -R tmp때문에 이제 내 /tmp파일이 완전히 공개되었습니다.

이제 완전히 공개되었으므로 보안 문제가 있습니까? 더 안전한 설정으로 다시 변경해야 합니까? 올바른 권한은 무엇입니까 /tmp?

답변1

일반 설정은 /tmp1777이며, ls로 표시됩니다 drwxrwxrwt. 즉, 완전히 열려 있지만 파일 소유자만 삭제할 수 있습니다(이것이 t디렉토리에 대한 추가 비트의 의미입니다).

모드 777을 사용할 때의 문제점은 /tmp다른 사용자가 귀하가 만든 파일을 삭제하고 원하는 콘텐츠로 바꿀 수 있다는 것입니다.

파일 시스템이 tmpfs 인 경우 /tmp재부팅하면 모든 것이 복원됩니다. 그렇지 않으면 를 실행하십시오 chmod 1777 /tmp.

또한 많은 문서를 /tmp기밀로 유지해야 합니다. 그러나 적어도 하나의 디렉토리는 누구나 읽을 수 있어야 하며 /tmp/.X11-unix, 다른 유사한 디렉토리( /tmp/.XIM-unix등)도 가능해야 합니다. 대부분의 경우 다음 명령을 사용하면 올바르게 설정됩니다.

chmod 1777 /tmp
find /tmp \
     -mindepth 1 \
     -name '.*-unix' -exec chmod 1777 {} + -prune -o \
     -exec chmod go-rwx {} +

즉, 모든 파일과 디렉터리를 비공개로 설정하되(모든 권한, 그룹 등을 제거) 모든 사람이 X11 소켓에 액세스할 수 있도록 만드세요. 이러한 소켓에 대한 액세스 제어는 파일 권한이 아닌 서버에 의해 시행됩니다. 노출되어야 하는 다른 소켓이 있을 수 있습니다. find /tmp -type s -user 0전 세계에서 액세스할 수 있도록 하는 데 필요할 수 있는 루트 소유 소켓을 찾으려면 실행하세요 . 다른 시스템 사용자가 소유한 소켓이 있을 수도 있습니다(예: 시스템 버스와 통신하는 데 사용됨). 탐색 find /tmp -type s ! -user $UID( $UID사용자 ID가 있는 위치)

답변2

/tmp모든 사람에 대한 읽기, 쓰기 및 실행 권한이 있어야 하지만 일반적으로 사용자가 다른 사용자에게 속한 파일/디렉터리를 삭제하지 못하도록 /var/tmp고정 비트( )도 추가합니다 . o+t그래서 chmod a=rwx,o+t /tmp작동해야합니다.

권한을 재귀적으로 변경하는 경우... 파일 및 디렉터리의 소유자/그룹이 동일하게 유지되는 한 큰 문제가 발생하지 않습니다. 그러나 /tmp사용자 개인정보 보호를 위해 다른 사람이나 전체 그룹의 권한을 제거하여 /tmp 자체가 아닌 모든 항목에 대한 권한을 변경할 수도 있습니다 .rx

찾기는 이를 수행하는 좋은 방법입니다. 루트로서 다음을 수행합니다.

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

답변3

[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

CentOS 5.9 시스템에서.

관련 정보