기본적으로 쓰기 가능한 디렉터리는 전 세계에 어떤 디렉터리인가요?

기본적으로 쓰기 가능한 디렉터리는 전 세계에 어떤 디렉터리인가요?

표준 Linux 파일 시스템에서 전역적으로 쓸 수 있는 공통 디렉터리는 무엇입니까?기본적으로?

 /tmp 
 /etc
 /var 
 /proc 
 /bin 
 /boot
 /....
 ....

왜 세계적으로 쓰기가 가능합니까? 이것이 보안 위험을 초래합니까?

답변1

오직FHS 필수 요구 사항일반적으로 누구나 쓰기 가능한 디렉토리는 /tmp및 입니다 /var/tmp. 두 경우 모두 누구나 만들 수 있는 임시 파일을 저장하도록 설계되었기 때문입니다.

/dev/shm로 보는 것도 일반적이다 .임시 파일 시스템(RAM 지원 파일 시스템) 프로세스 간에 공유되는 중간 크기의 데이터에 빠르게 액세스하거나 단순히 재부팅 시 삭제가 보장되는 파일을 생성하기 위한 것입니다.

/var/mail때로는 /var/spool/mail다른 스풀러 디렉토리가 있을 수도 있습니다 . 이는 메시지가 처리되기 전에 일시적으로 메시지를 보관하는 데 사용됩니다. 사용되는 도구에 따라 항상 전역적으로 쓸 수 있는 것은 아닙니다. 존재하는 경우 이는 사용자 도구가 데몬이 처리할 파일을 생성할 수 있기 때문입니다.

이 모든 디렉토리에는 일반적으로끈끈한 비트( t) 설정은 해당 파일이나 디렉터리의 소유자만이 그 안의 파일을 이동하거나 삭제할 수 있음을 의미합니다.

모든 사용자로 실행되는 모든 프로그램은 이러한 디렉터리에 파일을 생성할 수 있으며, 특정 데이터의 보안에 관한 한 올바른 작업을 수행하는 것은 생성 프로그램에 달려 있습니다. 누군가가 파일 시스템을 가득 채울 가능성이 있다는 것 외에 특별히 널리 퍼진 보안 문제는 없지만 프로그램이 잘못될 여지는 충분합니다.

가 있었다일부 작업서비스별 /tmp카탈로그의 경우. 이는 발생할 수 있는 일부 잠재적인 오류를 방지하므로 오류가 없는 것이 프로그램이 디렉토리를 사용하는 방식에 그다지 중요하지 않습니다.


다음을 통해 시스템에서 전역적으로 쓰기 가능한 디렉토리를 찾을 수 있습니다.

find / -maxdepth 3 -type d -perm -777

답변2

/tmp, /var/tmp/var/lock는 기본적으로 전역적으로 쓸 수 있습니다. /usr/tmp→ 와 같은 기호 링크는 /var/tmp이전 애플리케이션과의 호환성을 위해 제공될 수 있습니다 .

/tmp/var/tmp모든 사용자가 임시 저장소로 사용할 수 있다는 점에서 전 세계적으로 쓰기가 가능합니다 . /var/lock전역적으로 쓰기가 가능하므로 모든 사용자로 실행되는 모든 프로세스는 중앙 위치에 잠금 파일을 생성할 수 있습니다.

보안 위험이 있나요? 아니요, 하지만 어느 정도 그렇습니다.

이러한 모든 디렉토리에 대한 권한은 입니다 1777. 여기서 앞부분은 다음 1과 같습니다 .끈끈한 비트. 즉, 누구나 쓰기 가능한 디렉터리에 파일을 만들 수 있지만 소유자만 자신의 파일을 삭제할 수 있습니다(물론 루트도 마찬가지입니다).

안전하지 않은 임시 파일 생성은 잠재적인 보안 위험을 초래할 수 있습니다. 이러한 디렉터리는 무료이므로 사용자는 자신이 만드는 파일이 실제로 새 파일인지, 악의적인 사용자가 심을 수 있는 기존 파일이나 기호 링크를 열지 않도록 예방 조치를 취해야 합니다. 파일이 open(…, O_EXCL)또는 등의 올바른 기술을 사용하여 생성된 경우mkstemp(3), 그러면 그러한 위험을 피할 수 있습니다.

답변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를 남용하는 경우"는 제외)

페도라 리눅스에서 -http://fedoraproject.org/wiki/Features/ServicesPrivateTmp

시스템 설명 -http://0pointer.de/blog/projects/security.html

답변4

세계적으로 쓰기 가능한 디렉토리를 찾으려면 다음을 사용할 수 있습니다.

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

파일의 경우 유형을 다음으로 변경하십시오.f

심볼릭 링크의 경우 다음을 입력합니다.l

고정 비트를 설정합니다.

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t

관련 정보