쓰기 권한 만있는 폴더는 쓸모가 없습니다…


10

몇 년 동안 리눅스와 함께 일하면서 자유 시간을 보냈을 때 몇 가지 기본 사항을 다시 살펴보기로 결심했습니다. 그래서 권한 (소스 코드를 확인하지 않고)과 폴더의 특별한 경우에 대한 내용을 다시 읽고 폴더 권한에 대한 새로운 (적어도 ...) 생각을했습니다 (특정 사용자 / 그룹 / 기타) : 폴더를 두 개의 열이있는 테이블로 생각합니다.

filename | inode    
foo      | 111  
bar      | 222 

읽기 당신이 테이블의 왼쪽 열을 읽을 수 (및 목록) 할 수있는 권한 수단의 쓰기 추가하고 테이블에 항목을 제거하고에 권한 대응 실행 아이 노드에 파일 이름에서 번역 할 수있는 권한에 해당합니다; 즉 , 폴더의 내용에 액세스 할 수 있습니다 .

몇 가지 실험을 해본 결과 결과는이 "세계관"과 일치하지만 한 가지 결론은 피할 수없는 것 같습니다. 권한이있는 폴더 d-w-------는 전혀 쓸모가 없습니다. 정교하게 : 내용을 나열 할 수 없으며 내부에 존재하는 파일을 읽을 수 없습니다 (이름을 inode로 변환 할 수 없기 때문에). 번역을 의미하는 파일을 제거하거나 이름을 바꾸거나 추가 할 수 없습니다 그리고 하드 링크를 추가 할 수도 없습니다 (따라서 이름과 inode 번호를 추가해야한다는 것을 의미하기 때문에 실행 권한을 설정하지 않는 목적을 위반한다는 것을 의미합니다. . 이 경우 물론, 있는 하나의 폴더 안에 파일이 당신이 그 내용을 삭제할 수 없기 때문에, 당신은 어느 폴더를 삭제할 수 없습니다.

그래서 ... 나는 두 가지 질문을하고 싶습니다 :

  1. 이 비유가 맞습니까, 아니면 큰 실수입니까?
  2. 에 관계없이 이전의 대답은,이 모든 설명이 적절한 같은 권한을 가진 폴더를 가진 상황은?

3
모든 조합이 유용한 것은 아닙니다. 예를 들어 영어에는 단어가 있습니다.이 단어는 글자로 구성되어 있지만 모든 조합이 유효한 단어를 구성하는 것은 아닙니다. 예 : aoeuidhtns
ctrl-alt-delor

이런 식으로 파일을 만들 수 없었습니까? 당신은 요청 파일 시스템 공간과 아이 노드에, 당신이 당신의 디렉토리 표에 이름과 아이 노드를 작성 후. 같은 디렉토리에 이름은 같지만 inode가 다른 2 개의 파일이있는 문제 만있을 것입니다.
Hastur

@Hastur : 난 너무 너무 생각했지만, 이후 mkdir foo ; chmod 200 foo ; touch foo/bar내가 얻을 touch: cannot touch ‘foo/bar’: Permission denied. 이것은 foo / bar가 이미 존재하더라도 발생합니다. bash (Arch Linux)에서 테스트 중입니다.
wmnorth

내 잘못은 시스템에서 소스 코드로 다시 작성한다고 생각하고 있었는데 같은 디렉토리에 같은 이름의 두 파일을 가질 수 없으므로 그것을 만들 수있는 것은 논리입니다.
Hastur

예, 쓸모가 없습니다. inode 해상도에는 "x"및 "r"도 필요하므로 디렉토리에서 단일 "rw"도 쓸모가 없습니다.
peterh-Reinstate Monica

답변:


3

당신의 이해는 꽤 정확합니다. 실행 권한을 생각하는 더 좋은 방법은 디렉토리에서 파일이나 디렉토리 이름 으로 작업수행 할 수 있다는 것 입니다 (이름 자체를 읽는 것 이외). 대부분의 경우 이름을 inode로 변환하는 것이 포함되지만 새 이름을 만들고 기존 이름을 제거하는 것도 포함됩니다.

따라서 실행하지 않고 디렉토리에 대한 쓰기 권한은 쓸모가 없습니다. 디렉토리 내의 파일에 액세스 할 수 없으면 실제로 쓸 수있는 것이 없기 때문입니다.


1
  1. 이 비유가 맞습니까, 아니면 큰 실수입니까?

나는 그것이 맞다고 생각합니다. 폴더에 쓸 수 있으려면 wx 권한이 필요합니다.

  1. 이전 답변에 관계없이 설명에 따라 권한이있는 폴더를 갖는 것이 적절한 상황이 있습니까?

폴더에 정보를 쓰는 프로세스가 있고 다른 폴더가 정보를 사용하는 프로세스가있을 수 있지만 기록기가 해당 위치에 저장된 다른 정보를 읽지 못하게해야합니다.

앞에서 설명한 상황은 자동 속도 적용 장치에 유용합니다. 이 부서는 주무관이 간통 가능성을 최소화해야하는 검증 절차를 거쳐야합니다. 일부 자동 속도 적용 장치에는 시스템이 위반 레지스터를 저장하는 외부 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

이 구성으로 이제 쓸 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.