몇 년 동안 리눅스와 함께 일하면서 자유 시간을 보냈을 때 몇 가지 기본 사항을 다시 살펴보기로 결심했습니다. 그래서 권한 (소스 코드를 확인하지 않고)과 폴더의 특별한 경우에 대한 내용을 다시 읽고 폴더 권한에 대한 새로운 (적어도 …) 생각을했습니다 (특정 사용자 / 그룹 / 기타) : 폴더를 두 개의 열이있는 테이블로 생각합니다.
filename | inode
foo | 111
bar | 222
읽기 당신이 테이블의 왼쪽 열을 읽을 수 (및 목록) 할 수있는 권한 수단의 쓰기 추가하고 테이블에 항목을 제거하고에 권한 대응 실행 아이 노드에 파일 이름에서 번역 할 수있는 권한에 해당합니다; 즉 , 폴더의 내용에 액세스 할 수 있습니다 .
몇 가지 실험을 해본 결과 결과는이 “세계관”과 일치하지만 한 가지 결론은 피할 수없는 것 같습니다. 권한이있는 폴더 d-w-------
는 전혀 쓸모가 없습니다. 정교하게 : 내용을 나열 할 수 없으며 내부에 존재하는 파일을 읽을 수 없습니다 (이름을 inode로 변환 할 수 없기 때문에). 번역을 의미하는 파일을 제거하거나 이름을 바꾸거나 추가 할 수 없습니다 그리고 하드 링크를 추가 할 수도 없습니다 (따라서 이름과 inode 번호를 추가해야한다는 것을 의미하기 때문에 실행 권한을 설정하지 않는 목적을 위반한다는 것을 의미합니다. . 이 경우 물론, 있는 하나의 폴더 안에 파일이 당신이 그 내용을 삭제할 수 없기 때문에, 당신은 어느 폴더를 삭제할 수 없습니다.
그래서 … 나는 두 가지 질문을하고 싶습니다 :
- 이 비유가 맞습니까, 아니면 큰 실수입니까?
- 에 관계없이 이전의 대답은,이 모든 설명이 적절한 같은 권한을 가진 폴더를 가진 상황은?
답변
당신의 이해는 꽤 정확합니다. 실행 권한을 생각하는 더 좋은 방법은 디렉토리에서 파일이나 디렉토리 이름 으로 작업 을 수행 할 수 있다는 것 입니다 (이름 자체를 읽는 것 이외). 대부분의 경우 이름을 inode로 변환하는 것이 포함되지만 새 이름을 만들고 기존 이름을 제거하는 것도 포함됩니다.
따라서 실행하지 않고 디렉토리에 대한 쓰기 권한은 쓸모가 없습니다. 디렉토리 내의 파일에 액세스 할 수 없으면 실제로 쓸 수있는 것이 없기 때문입니다.
답변
- 이 비유가 맞습니까, 아니면 큰 실수입니까?
나는 그것이 맞다고 생각합니다. 폴더에 쓸 수 있으려면 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
이 구성으로 이제 쓸 수 있습니다