나는 Debian Jessie를 새로 설치하여 이것을 테스트했지만 다른 컴퓨터에서도 이 문제가 있었습니다(예: Ubuntu 12.04). 기본 설치 외에 , sudo
, samba
도 설치해 봤습니다 cifs-utils
.
기본 ACL을 사용하는 공유 디렉터리
루트 파일 시스템에서 ACL을 활성화하고 공유 디렉터리를 만들었습니다.
sudo mount -o remount,acl /
mkdir -p /home/ryan/shared
setfacl -d -m u:ryan:rwx /home/ryan/shared
삼바 구성
모든 기본값을 유지 /etc/samba/smb.conf
하고 공유를 추가했습니다.
[shared]
comment =
path = /home/ryan/shared
writable = yes
valid users = ryan
삼바 사용자 추가
그런 다음 자신을 Samba 사용자로 추가하고 서비스를 다시 시작했습니다.
sudo smbpasswd -a ryan
sudo systemctl restart smbd
리눅스 클라이언트
다음으로 Samba 공유를 위한 마운트 지점을 생성하고 이를 마운트한 후 빈 텍스트 파일을 생성했습니다.
mkdir -p /home/ryan/mnt/shared
sudo mount -t cifs -o user=ryan //127.0.0.1/shared /home/ryan/mnt/shared
touch /home/ryan/mnt/shared/linux.txt
윈도우 클라이언트
또한 Windows 8 컴퓨터에서 연결하여 windows.txt
.
공유 디렉터리 목록
이후 디렉터리 목록은 /home/ryan/shared
다음과 같습니다.
-rw-r--r--+ 1 ryan ryan 0 Jun 20 23:45 linux.txt
-rwxrwxr--+ 1 ryan ryan 0 Jun 20 23:46 windows.txt
파일 ACL
ACL은 linux.txt
다음과 같습니다.
# file: linux.txt
# owner: ryan
# group: ryan
user::rw-
user:ryan:rwx #effective:r--
group::r-x #effective:r--
mask::r--
other::r--
ACL은 windows.txt
다음과 같습니다.
# file: windows.txt
# owner: ryan
# group: ryan
user::rwx
user:ryan:rwx
group::r-x
mask::rwx
other::r--
질문
Linux 클라이언트는 내가 예상한 대로 정확하게 작동합니다. Windows 클라이언트를 사용할 때 왜 다른가요? Windows 클라이언트가 Linux 클라이언트와 동일한 권한을 설정하도록 하려면 어떻게 해야 합니까?
답변1
Samba가 클라이언트가 보낸 모든 것을 표준화하도록 할 수 있습니다 man smb.conf
. 예를 들면 다음과 같습니다.
create mask = 0775
force create mode = 0660
directory mask = 2775
force directory mode = 2771
답변2
첫째, 이러한 권한에는 ACL이 필요하지 않습니다. ACL은 사용자, 그룹 및 기타 권한보다 더 세분화되어 있습니다.
하지만 귀하의 질문에 대답하자면, 제 생각에는 Linux에서 생성된 파일은 사용자의 umask 설정에서 권한을 얻습니다. 아마도 다른 디렉토리에서 파일을 생성할 때 얻는 것과 동일한 권한일 것입니다.
Windows 환경에는 umask 같은 것도 없고, 유닉스 그룹의 개념도 모릅니다. Windows에서 생성된 파일은 smb.conf의 설정에서 권한을 얻습니다. 이러한 설정을 직접 입력하지 않더라도 기본값이 있습니다. 명령을 사용하여 이러한 값을 볼 수 있습니다 testparm -s -v smb.conf | grep mask
. smb.conf의 마스크는 동일한 umask에 비해 반대 값을 갖습니다. 즉, -rw-r--r-- 권한이 있는 파일을 얻으려면 umask 022가 필요하지만 samba 생성 마스크는 644입니다.