폴더의 쓰기 전용보기를 만들려면 어떻게해야합니까?


12

파일 시스템에 읽기 / 쓰기 액세스 권한이있는 다른 폴더의 쓰기 전용 "보기"를 제공하고 싶습니다.

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/되고 두 "보기"가 단일 사용자에게 작동합니다.

이와 같은 것을 어떻게 설정할 수 있습니까? 심볼릭 링크의 영리한 배열일까요? 아니면 바인드 마운트의 비정상적인 구성입니까?

답변:


2

몇 년 전 삼바 메일 링리스트에있는 학생 드롭 박스 (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"그룹을 소유하게되며 학생들은 각각을 읽을 수 없습니다. 다른 파일들.

파일을 만든 학생이 아닌 디렉토리 소유자가 파일을 소유해야하는 경우 위에서 설명한대로 별도의 공유를 설정해야하지만 공유 레벨 매개 변수를 추가해야합니다.

상속자 = 예

그러면 해당 공유의 디렉토리 내에서 작성된 파일이 작성 소유자가 아닌 포함 디렉토리가 소유하게됩니다.


1

대상 사용자에게 폴더에 대한 쓰기 권한은 있지만 읽기 권한은 없도록 폴더에 대한 권한을 설정하여이 중 일부를 달성 할 수 있습니다.

예를 들어, 모든 사람이 폴더에 쓰지만 내용을 나열하지 못하게하려면 다음을 수행하십시오.

chmod o=wx folder

또는 특정 사용자 그룹에게만이 액세스 권한을 부여하려면 다음을 수행하십시오.

chgrp groupname folder
chmod o=,g=wx folder

이제 해당 사용자는 폴더의 내용을 나열 할 수 없지만 폴더에 파일을 배치 할 수 있습니다.

$ ls folder
ls: cannot open directory folder: Permission denied
$ touch folder/filename

사용자가 이름을 추측 할 수 있으면 폴더의 파일에 계속 액세스 할 수 있기 때문에 원하는 모든 작업을 수행 할 수 없습니다. 드롭 박스 폴더에서 다른 사용자가 액세스 할 수없는 위치로 파일을 정기적으로 이동시킨 크론 작업을 통해이 위험을 최소화 할 수 있습니다.


1

rw 액세스 권한이있는 드롭 폴더 "쓰기 전용보기"를 작성하고 cronjob 또는 inode 알림을 사용하여 컨텐츠를 다른 "읽기-쓰기-보기"로 이동할 수 있습니다.


1

다음과 같이 바인드 마운트 트릭을 사용할 수 있다고 생각합니다 /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

1

"다른 위치에 디렉토리를 마운트하고 권한 비트를 변경"하도록 설계된 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

0

첫째, 이것을 반대로 생각하는 것이 더 쉽습니다. 쓰기 권한이 필요한 사람에게는 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로 똑같은 일을 할 수 있다고 생각하지만 이것은 네트워크 액세스에만 의미가 있습니다.

이 솔루션은 (영감을 얻었다 도난에서 ) 이 하우투 . 도움이 되길 바랍니다.


읽기 전용보기에 대해 묻지 않고 읽기 쓰기 및 쓰기 전용입니다.
ændrük

0

내용을 표시하려면 "쓰기 전용"디스크를 읽어야하므로 이것이 가능하지 않다고 생각합니다.

그러한 장치를 판매한다면 누구나 어떻게 작동하는지 확인할 수 있습니까? 어쩌면 이것은 킥 스타터를위한 것일 수도 있습니다.


0

이것은 대답이 아니라 실제로 더 많은 생각과 다른 질문입니다. 나에게 이것은 일종의 후크 또는 트리거를 통해 구현 될 수있는 것처럼 들립니다.

백그라운드의 일부 프로그램은 쓰기 전용 폴더를보고 (폴링이 아니라 FAM 등 으로 알릴 수 있음 ) 각 파일이 표시되는 즉시 읽기 전용 폴더로 이동합니다.

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