나는 전체 쓰기 가능 파일을 갖는 것이 위험할 수 있다는 것을 알고 있으며 많은 사람들이 시스템에 전체 쓰기 가능 파일을 두지 말라고 조언합니다.
내 Linux를 "보호"하기 위해 를 사용합니다 find / -perm -0002 -type f
. 이 명령 덕분에 root_directory 아래에서 전역적으로 쓰기 가능한 파일을 찾았습니다 /root/a_directory/world_writable_file
. 내 /root
디렉토리는 700이므로 다른 사용자는 쓰기 가능한 파일을 편집할 수 없습니다.
그래서 제 질문은 다른 사용자가 액세스할 수 없는(다른 사용자의 x 권한 부족) 디렉터리에 누구나 쓰기 가능한 파일이 있는 경우 어떤 위험이 있습니까?입니다.
예를 들어 /root/directory1/world_writable_file.sh
777이고 /directory1/
700이면 안전할까요? 이 상황에서는 위험이 없나요?
답변1
권한에 대한 귀하의 이해는 올바른 것 같지만 완전하지 않을 수 있습니다.
파일에 액세스하려면 요청하는 사용자가 파일의 모든 경로 요소에 액세스해야 합니다. 디렉터리의 경우 x
디렉터리를 탐색하려면 권한이 필요함을 의미합니다.
777
따라서 권한이 있는 디렉터리에 있는 권한이 있는 파일은 해당 디렉터리의 소유자가 아닌 사람이 액세스할 수 없습니다 .700
예를 들어:
$ sudo ls -al XX
total 40
drwx------ 2 root root 4096 Dec 21 07:43 .
drwxrwxrwt 13 root root 36864 Dec 21 07:43 ..
-rwxrwxrwx 1 root root 0 Dec 21 07:43 yy
디렉토리를 탐색할 수 없기 yy
때문에 파일을 읽거나 쓸 수 없습니다 .XX
$ cat XX/yy
cat: XX/yy: Permission denied
$ echo test >> XX/yy
/bin/ksh: XX/yy: cannot create [Permission denied]
그러나 기존 권한이 파일 액세스 권한을 부여하는 유일한 방법은 아닙니다. 가지다반품ACL...
$ sudo setfacl -m u:sweh:rwx XX
$ ls -ld XX
drwxrwx---+ 2 root root 4096 Dec 21 07:43 XX/
$ echo test >> XX/yy
$ cat XX/yy
test
이제 디렉터리 권한이 로 나타나더라도 770
ACL이 부여한 파일이므로 계속해서 파일을 읽고 쓸 수 있습니다. +
ACL은 권한 목록 끝에 나타납니다.
drwxrwx---+ 2 root root 4096 Dec 21 07:43 XX/
특정 경우에는 ACL과 기존 권한이 겹치는 방식이 겹칩니다. 이 setfacl
명령은 모드를 로 설정합니다 770
. 다시 설정하면 700
...
$ sudo chmod 700 XX
$ ls -ld XX
drwx------+ 2 root root 4096 Dec 21 07:43 XX/
이제 ACL이 여전히 존재하지만 유효합니다.아니요액세스 권한 부여:
$ getfacl XX
# file: XX
# owner: root
# group: root
user::rwx
user:sweh:rwx #effective:---
group::---
mask::---
other::---
#effective:---
항목을 참고하세요 . 이는 그룹 값을 설정하면 mask
값이 수정되기 때문입니다. chmod
이는 ACL과 파일 권한 간의 미묘한 상호 작용입니다.
그래서..
$ cat XX/yy
cat: XX/yy: Permission denied
간단히 말해서... 700
디렉터리에 있는 모든 쓰기 가능한 파일은 안전해야 하지만 디렉터리에 있는 유사한 파일은 안전 770
하지 않을 수 있습니다.