답변:
세계적으로 쓸 수 있는 유일한 FHS 필수 디렉토리는 /tmp
및 /var/tmp
입니다. 두 경우 모두, 누군가가 만들 수있는 임시 파일을 저장하기위한 것이기 때문입니다.
프로세스간에 공유되는 중간 크기의 데이터에 빠르게 액세스하거나 재부팅 할 때 파기되도록 보장하는 파일을 만들기 /dev/shm
위한 tmpfs (RAM이 지원하는 파일 시스템) 도 일반적입니다 .
/var/mail
또는 또는 /var/spool/mail
때로는 다른 스풀러 디렉토리 가있을 수도 있습니다 . 메일은 처리되기 전에 일시적으로 메일을 보관하는 데 사용됩니다. 사용중인 도구에 따라 항상 쓰기 가능한 것은 아닙니다. 그것들은 데몬에 의해 처리하기 위해 사용자 도구로 파일을 만들 수 있기 때문입니다.
이러한 모든 디렉토리에는 일반적으로 고정 비트 ( t
) 세트가 있습니다. 즉, 파일 소유자 나 디렉토리의 소유자 만 파일을 이동하거나 삭제할 수 있습니다.
사용자로 실행되는 모든 프로그램은 이러한 디렉토리에 파일을 만들 수 있으며 특정 데이터에 대한 보안이 유지되는 한 올바른 작업을 수행하는 것은 프로그램을 만드는 데 달려 있습니다. 잠재적으로 파일 시스템을 채우는 사람 이외의 일반적인 일반적인 보안 문제는 없지만 프로그램이 잘못 할 수있는 충분한 범위가 있습니다.
가 있었다 일부 이동 서비스 별에 대한 /tmp
디렉토리. 이로 인해 발생할 수있는 잠재적 인 버그를 피할 수 있으므로 디렉토리를 사용하는 방법에있어 프로그램에 버그가없는 것이 중요하지 않습니다.
다음을 사용하여 시스템에서 세계 쓰기 가능한 디렉토리를 찾을 수 있습니다.
find / -maxdepth 3 -type d -perm -777
/tmp
, /var/tmp
그리고 /var/lock
세계 쓰기 기본적으로 있습니다. 이전 응용 프로그램과의 호환성을 위해 제공되는 /usr/tmp
→ 와 같은 심볼릭 링크가있을 수 있습니다 /var/tmp
.
/tmp
및 /var/tmp
세계 쓰기 그들은 임시 저장을위한 모든 사용자가 사용할 수 있도록 의미하기 때문이다. /var/lock
모든 사용자가 실행하는 모든 프로세스가 중앙 위치에 잠금 파일을 작성할 수 있도록 세계 쓰기가 가능합니다.
보안 위험이 있습니까? 아니요,하지만 그렇습니다.
해당 디렉토리의 모든 권한은 1777
선도와 함께, 1
되는 스티키 비트 . 즉, 누구나 쓸 수있는 해당 디렉토리에 파일을 만들 수는 있지만 소유자 만 자신의 파일을 삭제할 수 있습니다 (물론 루트 사용자도 가능).
안전하지 않은 임시 파일 작성으로 인해 보안 위험이 발생할 수 있습니다. 이러한 디렉토리는 모두 무료이기 때문에 사용자는 악의적 인 사용자가 생성 한 기존 파일이나 심볼릭 링크를 열지 않고 자신이 만든 파일이 실제로 새 파일인지 확인하기 위해주의를 기울여야합니다. 파일과 같은 적절한 기술을 사용하여 생성하는 경우 open(…, O_EXCL)
나 mkstemp(3)
, 그러한 위험은 피할 수있다.
/tmp
안전하게 사용하려면 추가 코드를 추가해야하므로 위험합니다. 분명히 이것은 간과됩니다.
Steve Kemp가 최근 예를 들었습니다. http://blog.steve.org.uk/sometimes_reading_code_makes_you_scream_.html
./mgmt/tools/SysAPI.cc: tmp = fopen("/tmp/shadow", "w"); ./mgmt/tools/SysAPI.cc: system("/bin/mv -f /tmp/shadow /etc/shadow");
두 번째 줄 이전에 (공격자) / tmp / shadow를 바꾸면 모든 사람의 비밀번호를 바꾸게됩니다. (공격을 위해서는 첫 번째 줄 전에 파일을 작성하고 파일을 세계 기록 가능하게 만들어야한다고 생각합니다.)
Linux에서 Systemd를 사용하면 많은 시스템 서비스에 대해 / tmp를 격리하여 이러한 취약점을 완화 할 수 있습니다. ( "IPC 소켓 및 기타 통신 기본 요소의 위치로 / tmp를 오용하는"것 제외).
Fedora Linux에서-http: //fedoraproject.org/wiki/Features/ServicesPrivateTmp
체계적인 설명-http: //0pointer.de/blog/projects/security.html
fopen
덮어 쓰지만 권한을 재설정하지 않으므로 악의적 인 사용자가 여전히 변경할 수 있습니다. 또한 악의적 인 사용자가 ln -s /bin/bash /tmp/shadow
첫 번째 줄 이전 과 같은 작업을 수행 하여 필수 시스템 이진을 덮어 쓸 수 있습니다.
/var/lock
→/run/lock