다른 질문을 살펴본 후 다음을 수행했습니다.
chmod g+s MEDIA
setfacl -R -d -m g::rwx MEDIA
setfacl -R -d -m o::rwx MEDIA
참고: MEDIA는 추가된 모든 파일/폴더가 상위 폴더와 동일한 사용자/그룹을 갖도록 설정하려는 폴더입니다.
이 예에서 MEDIA는 Bob
사용자 및 그룹이 소유합니다 SharedFiles
. 목표는 새로 생성된 파일/폴더가 이 소유권을 유지하도록 하는 것입니다( Bob
및 SharedFiles
:
MEDIA Bob SharedFiles
MEDIA/NewFolder Bob Bob <BAD
MEDIA/NewFolder Bob SharedFiles <GOOD
사용자 "Bob"으로 로그인한 동안 하위 폴더를 생성하면 해당 폴더는 예상대로 [rwxrwxrwx] 권한이 있는 Bob:SharedFiles의 소유가 됩니다. 문제 없다!
Sue로 로그인하면 새 폴더는 [rwxr-xr-x]를 사용하여 Sue:Sue의 일부가 됩니다.
KDE에 설치된 드라이브(사용자 Sue)를 통해 다른 컴퓨터에서 로그인하면 폴더는 [rwxr-xr-x]를 사용하여 Bob:Bob의 일부가 됩니다.
이제 Bob과 Sue는 둘 다 SharedFiles의 일부입니다. 제가 어디에서 잘못되었나요? SharedFiles 그룹의 모든 사용자에게 RWX 권한이 있고 SharedFiles 그룹의 사용자가 만든 모든 파일/폴더가 상위 폴더와 동일한 사용자/그룹을 가지기를 원합니다. 왜 이런 일이 컴퓨터 자체의 소유자에게만 발생합니까? 몸.
getfacl MEDIA/
반품
# file: MEDIA/
# owner: Bob
# group: SharedFiles
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
samba.conf에는 다음이 포함됩니다.
[MEDIA]
read only = no
locking = yes
path = /mnt/local/int001/MEDIA
guest ok = yes
create mask = 0775
directory mask = 0775
답변1
Samba는 (계층적) NTFS 권한 스타일을 더욱 유사하게 모방하기 위해 파일에 자체 권한 및 소유권 개념을 적용하는 경향이 있습니다.
force user
및 지시문을 포함하도록 Samba 정의를 확장하면 force group
Samba를 통해 공유에 생성된 모든 파일에 지정된 소유자와 그룹이 포함되도록 할 수 있습니다.
[MEDIA]
read only = no
locking = yes
path = /mnt/local/int001/MEDIA
guest ok = yes
create mask = 0664
directory mask = 0775
force user = Bob
force group = SharedFiles
그러나 사용자가 다른 사람이 소유한 파일을 생성하는 것은 불가능하기 때문에 로컬 사용자와 직접 동일한 작업을 수행할 수 없습니다. 여기 inotifywait
에 도움이 올 수 있습니다. 디렉터리 계층 구조를 모니터링하고 새로 생성된 파일의 소유권을 변경하려면 시작 시 이를 설정합니다.
cd /mnt/local/int001/MEDIA || exit
inotifywait --monitor --recursive --event create --format '%w%f' . |
while IFS= read -r file
do
if [[ -f "$file" || -d "$file" ]] && [[ ! -h "$file" ]]
then
chown Bob:SharedFiles "$file"
chmod u+rw,go=u,o-w "$file"
fi
done
이 inotifywait
솔루션을 사용하면 파일 시스템 ACL이 필요하지 않습니다.
개인적으로 저는 파일 소유권을 실제로 변경할 필요가 없다고 생각합니다. 지정한 ACL(및 force group
Samba의 해당 콘텐츠)은 디렉터리 트리의 모든 사용자가 . 일반 사용자는 정당한 이유로 거부됩니다 chown
.