새로 생성된 디렉토리에 대한 쓰기 권한을 자동으로 얻는 방법은 무엇입니까?

새로 생성된 디렉토리에 대한 쓰기 권한을 자동으로 얻는 방법은 무엇입니까?

서버의 공유는 다음과 같이 정의됩니다.

[share]
path = ...
read only = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
valid users = dobiasd

fstab클라이언트를 통해 설치됩니다.

//server/share /home/dobiasd/share/ cifs file_mode=0777,dir_mode=0777,iocharset=utf8,username=dobiasd,password=dummy 0 0

클라이언트는 파일과 디렉터리를 생성할 수 있습니다. 새로 생성된 디렉터리를 다시 삭제할 수도 있지만 해당 새 디렉터리에 새 파일이나 디렉터리를 생성할 수는 없습니다. 이를 달성하기 위해 먼저 chmod -R 777 .서버에서 작업을 수행해야 했기 때문에 해당 디렉토리의 "drwxrwxr-x"는 "drwxrwxrwx"가 되었습니다.

Samba가 새 디렉토리를 즉시 생성하여 그 안에 하위 폴더를 만들 수 있게 하려면 어떻게 해야 합니까?

답변1

그렇다면 이것은 Linux 시스템에 마운트된 Samba 공유입니다(Windows를 사용하는 클라이언트에는 이 문제가 없습니다). 내가 올바르게 이해한다면 이것은 문제가 될 수도 있습니다 umask. umask클라이언트에 이것을 입력 하면 0002새 디렉터리를 생성할 때 해당 ACL이 rwxrwxr-x( rw-rw-r--파일의 경우)이라는 의미를 얻을 수 있습니다.

그러니 원한다면새로 생성된 모든 폴더와 파일은 누구나 쓰기 가능합니다., 설정할 수 있습니다 umask 0000(예를 들어 .bash_profile). 물론, 이것은 나쁜 생각일 수도 있습니다.

내가 당신이라면, 신뢰할 수 있는 모든 사용자가 동일한 그룹의 구성원인지 확인 friends하고 상위 공유 디렉터리에 다음과 같은 권한을 설정하겠습니다.

chmod g+rwxs /path/to/share

여기서 역할은sgid 비트( s위)은 이 디렉터리 아래에 생성된 모든 디렉터리와 파일이 상위 디렉터리의 그룹 소유자가 소유하는지 확인하는 것입니다.

보다 명확한 예(여기(기본) 및 apaul그룹 구성원):usersfriends

$ mkdir /tmp/share
$ mkdir /tmp/share/dir1
$ ls -l /tmp/share
drwxrwxr-x 2 apaul users  4096  7 april 21:48 dir1

$ chgrp friends /tmp/share
$ chmod g+rwxs /tmp/share
$ ls -ld /tmp/share
drwxrwsr-x 4 apaul friends 4096  7 april 21:49 share/

$ mkdir /tmp/share/dir2
$ ls -l /tmp/share
drwxrwxr-x 2 apaul users   4096  7 april 21:48 dir1
drwxrwsr-x 2 apaul friends 4096  7 april 21:49 dir2

그러면 그룹의 모든 구성원이 friends공유 아래에 하위 디렉터리(또는 파일)를 만들 수 있지만 전역적으로 쓸 수는 없습니다.

관련 정보