수년 동안 Linux를 사용한 후 여유 시간이 생겼기 때문에 몇 가지 기본 사항을 다시 살펴보기로 결정했습니다. 그래서 나는 권한(소스 코드를 확인하지 않고)과 폴더에 대한 특별한 경우에 대해 다시 읽고 폴더 권한(특정 사용자/그룹/기타에 대한)에 대해 (적어도 나에게는...) 생각하는 새로운 방식을 생각해 냈습니다. ): 저는 폴더를 다음과 같이 두 개의 열이 있는 테이블로 상상합니다.
filename | inode
foo | 111
bar | 222
이것읽다권한은 테이블의 왼쪽 열을 읽고 나열할 수 있음을 의미합니다.쓰다권한은 테이블에 항목을 추가하고 삭제하는 데 해당합니다.구현하다권한은 파일 이름을 inode로 변환할 수 있는 것과 같습니다.사용할 권리폴더의 내용입니다.
나는 몇 가지 실험을 했고 그 결과는 나의 "세계관"과 일치했지만 한 가지 결론은 불가피해 보입니다. 권한이 있는 폴더는 d-w-------
전혀 쓸모가 없다는 것입니다. 자세히 말하자면, 내용을 나열할 수 없고, 그 안에 있는 파일을 읽을 수 없으며(이름을 inode로 변환할 수 없기 때문에), 파일을 삭제하거나 이름을 바꾸거나 추가할 수 없습니다. 번역하면 하드 링크를 추가할 수도 없습니다. (제 생각에는 이름과 inode 번호를 추가하는 것을 의미하기 때문에 두 가지를 모두 알게 되며, 아마도 실행 권한 설정을 해제하려는 목적을 무효화할 것입니다.) . 물론, 있다면예해당 폴더에 파일을 포함시키면 해당 내용을 삭제할 수 없기 때문에 폴더도 삭제할 수 없습니다.
그래서...두 가지 질문을 하고 싶습니다.
- 내 비유가 맞는 걸까, 아니면 큰 실수인 걸까?
- 이전 답변에 관계없이 존재합니까?어느설명된 권한을 가진 폴더를 갖는 것이 적절합니까?
답변1
당신의 이해는 매우 정확합니다. 실행 권한에 대해 생각하는 더 좋은 방법은일하다이름 자체를 읽는 것이 아니라 디렉터리 내의 파일 또는 디렉터리 이름이 있습니다. 대부분의 작업에는 이름을 inode로 변환하는 작업이 포함되지만 새 이름을 만들고 기존 이름을 삭제하는 작업도 포함됩니다.
따라서 실행하지 않고 디렉토리에 대한 쓰기 권한은 꽤 쓸모가 없습니다. 디렉토리에 있는 파일에 액세스할 수 없으면 실제로 아무것도 쓸 수 없기 때문입니다.
답변2
- 내 비유가 맞는 걸까, 아니면 큰 실수인 걸까?
제 생각에는 이것이 맞다고 생각합니다. 폴더에 쓰려면 wx 권한이 필요합니다.
- 이전 답변에 관계없이 설명된 권한이 있는 폴더가 적절한 상황이 있습니까?
폴더에 정보를 쓰는 프로세스와 이를 사용하는 다른 프로세스가 있을 수 있지만 작성자가 해당 위치에 저장된 다른 정보를 읽지 못하도록 해야 합니다.
이전에 설명한 상황은 자동화된 속도 단속 장치에 유용합니다. 해당 단위는 검증 과정을 거쳐야 하며 주정부 공무원은 불순물이 포함될 가능성을 최소화해야 합니다. 일부 자동 속도계에는 시스템이 위반 레지스터를 저장하는 외부 SD 메모리 카드가 있습니다. 그러나 검증된 장치의 동작을 불법적으로 변경하는 "마법의" 구성 파일을 저장할 수도 있습니다. 따라서 문제가 있는 레지스터에 쓰는 프로세스는 SD 메모리 카드에서 어떤 것도 읽어서는 안 됩니다.
다음은 예제입니다. 먼저 작성하고 wx와 함께 작동하게 만드는 방법은 다음과 같습니다.
장비를 설치하다
root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp 4096 Dec 31 1969 .
drwxr-xr-x 8 root root 4096 Oct 17 16:14 ..
그런 다음 사용자 실행기를 사용하여 새 파일에 쓰기를 시도하십시오.
enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied
wx를 사용하여 제거 및 재설치
root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim 4096 Dec 31 1969 .
drwxr-xr-x 8 root root 4096 Oct 17 16:14 ..
다시 시도하십시오
enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied
ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp 4096 Oct 20 10:20 .
drwxr-xr-x 8 root root 4096 Oct 17 16:14 ..
--wxr-x--- 1 enforcer wim 0 Oct 20 10:20 hola
이 구성을 사용하면 이제 다음을 작성할 수 있습니다.