파일 시스템에 읽기 / 쓰기 액세스 권한이있는 다른 폴더의 쓰기 전용 “보기”를 제공하고 싶습니다.
FTP 드롭 박스와 비슷한 동작을 보이는데 파일을 복사 할 수는 있지만 읽을 수는 없습니다. 예 :
$ ls read-write-view/ write-only-view/
read-write-view/:
a b c
write-only-view/:
$ cp d write-only-view/
$ ls read-write-view/ write-only-view/
read-write-view/:
a b c d
write-only-view/:
이는 예제와 같이 작동하는 것이 중요합니다.를 통해 액세스 할 때 내용이 계속 표시 read-write-view/
되고 두 “보기”가 단일 사용자에게 작동합니다.
이와 같은 것을 어떻게 설정할 수 있습니까? 심볼릭 링크의 영리한 배열일까요? 아니면 바인드 마운트의 비정상적인 구성입니까?
답변
몇 년 전 삼바 메일 링리스트에있는 학생 드롭 박스 (http://lists.samba.org/archive/samba/2008-September/143610.html)에 대해 이와 동일한 질문을했으며 그 대답은 우리에게 도움이되었습니다. 파일 시스템에서 확장 된 acl 속성이 필요합니다 (acl 패키지에서). Jeremy Allison의 대답은 다음과 같습니다.
문제는 학생들이 새 파일을 끌어다 놓기 위해 포함 디렉토리를 읽을 수 있어야한다는 것입니다. 그 이유는 대소 문자를 구분하지 않는 조회를 수행하기 위해 Samba가 디렉토리를 대신하여 스캔 할 수 있어야하기 때문입니다.
그러나 학생들이 서로의 파일 이름을 볼 수있게하는 것이 마음에 들지 않는 한 학생들이 파일에 쓸 수는 있지만 다른 파일을 편집하거나 볼 수 없도록 DropBox를 설정할 수 있습니다.
먼저 DropBox 디렉토리에서 작성된 파일이 학생의 기본 그룹이 아니라 DropBox 디렉토리 그룹 소유자가 소유하고 있는지 확인하십시오. 그래서 :
chgrp 교사 DropBox
교사 그룹이 소유하도록합니다. 그런 다음 DropBox 디렉토리에 setgid 비트를 설정하여 파일 내에 생성 된 파일에 교사 그룹이 있는지 확인하십시오.
chmod g + s DropBox
그런 다음 파일 소유자, 디렉토리 소유자 또는 루트 (/ tmp의 동일한 권한) 만 DropBox의 파일 이름을 바꾸거나 삭제할 수 있는지 확인하십시오.
chmod + t DropBox
그런 다음 학생들이 ACL을 추가하여 디렉토리에 쓸 수 있도록합니다.
setfacl -mg : 학생 : rwx DropBox
defaul acl이 “others”에게 권한이 없도록 설정되어있는 한, 학생이 해당 디렉토리에 기록한 파일은 자체적으로 소유하지만 “teachers”그룹을 소유하게되며 학생들은 각각을 읽을 수 없습니다. 다른 파일들.
파일을 만든 학생이 아닌 디렉토리 소유자가 파일을 소유해야하는 경우 위에서 설명한대로 별도의 공유를 설정해야하지만 공유 레벨 매개 변수를 추가해야합니다.
상속자 = 예
그러면 해당 공유의 디렉토리 내에서 작성된 파일이 작성 소유자가 아닌 포함 디렉토리가 소유하게됩니다.
답변
대상 사용자에게 폴더에 대한 쓰기 권한은 있지만 읽기 권한은 없도록 폴더에 대한 권한을 설정하여이 중 일부를 달성 할 수 있습니다.
예를 들어, 모든 사람이 폴더에 쓰지만 내용을 나열하지 못하게하려면 다음을 수행하십시오.
chmod o=wx folder
또는 특정 사용자 그룹에게만이 액세스 권한을 부여하려면 다음을 수행하십시오.
chgrp groupname folder
chmod o=,g=wx folder
이제 해당 사용자는 폴더의 내용을 나열 할 수 없지만 폴더에 파일을 배치 할 수 있습니다.
$ ls folder
ls: cannot open directory folder: Permission denied
$ touch folder/filename
사용자가 이름을 추측 할 수 있으면 폴더의 파일에 계속 액세스 할 수 있기 때문에 원하는 모든 작업을 수행 할 수 없습니다. 드롭 박스 폴더에서 다른 사용자가 액세스 할 수없는 위치로 파일을 정기적으로 이동시킨 크론 작업을 통해이 위험을 최소화 할 수 있습니다.
답변
rw 액세스 권한이있는 드롭 폴더 “쓰기 전용보기”를 작성하고 cronjob 또는 inode 알림을 사용하여 컨텐츠를 다른 “읽기-쓰기-보기”로 이동할 수 있습니다.
답변
다음과 같이 바인드 마운트 트릭을 사용할 수 있다고 생각합니다 /etc/fstab
.
/path/to/read-write-view /path/to/write-only-view none bind 0 0
따라서 아마도 다음과 같이 할 수 있습니다.
chmod a=wx /path/to/write-only-view
chmod a=rwx /path/to/read-write-view
답변
“다른 위치에 디렉토리를 마운트하고 권한 비트를 변경”하도록 설계된 bindfs를 사용하십시오 .
읽기 및 쓰기 권한이 모두있는 일반 폴더로 시작하십시오.
$ mkdir read-write-view && touch read-write-view/{a,b,c}
$ ls read-write-view
a b c
읽기 권한없이 폴더를 마운트하려면 bindfs를 사용하십시오.
$ mkdir write-only-view
$ sudo bindfs --perms=a-r read-write-view write-only-view
원래 폴더의 내용 만 나열 할 수 있는지 확인하십시오.
$ ls read-write-view write-only-view
read-write-view:
a b c
ls: cannot open directory write-only-view: Permission denied
마운트를 통해 원래 폴더를 쓸 수 있는지 확인하십시오.
$ echo 'Can you read this?' > write-only-view/d
$ cat read-write-view/d
Can you read this?
마운트를 통해 파일을 읽을 수 없는지 확인하십시오.
$ cat write-only-view/d
cat: write-only-view/d: Permission denied
답변
첫째, 이것을 반대로 생각하는 것이 더 쉽습니다. 쓰기 권한이 필요한 사람에게는 rw 폴더가 있으며 읽기 전용 액세스가 필요한 사람에게는이 폴더의 읽기 전용 “보기”가 있습니다.
mount –bind -o ro 옵션을 올바르게 작동시킬 수 없었습니다. 가장 안정적인 방법은 nfs를 사용하는 것입니다. / etc / exports에 다음을 추가하십시오
/path-to-folder/folder 127.0.0.1(secure,ro,no_root_squash)
그런 다음 읽기 전용 “보기”를
mount -o ro 127.0.0.1:/path-to-folder/folder /read-only-folder
이제 원래 폴더의 읽기 전용보기가 있어야합니다.
나는 당신이 samba / cifs로 똑같은 일을 할 수 있다고 생각하지만 이것은 네트워크 액세스에만 의미가 있습니다.
이 솔루션은 (영감을 얻었다 도난에서 ) 이 하우투 . 도움이 되길 바랍니다.
답변
내용을 표시하려면 “쓰기 전용”디스크를 읽어야하므로 이것이 가능하지 않다고 생각합니다.
그러한 장치를 판매한다면 누구나 어떻게 작동하는지 확인할 수 있습니까? 어쩌면 이것은 킥 스타터를위한 것일 수도 있습니다.