Samba가 UNIX 권한을 처리하는 방법을 이해하려고 합니다.

Samba가 UNIX 권한을 처리하는 방법을 이해하려고 합니다.

Linux, ZFS, Samba를 사용하여 백업 서버를 구축하고 있습니다. 저를 제외한 모든 클라이언트는 Windows 10을 사용할 것이므로 저는 Windows 10을 적절하게 지원하는 데 중점을 두지만 이것이 Linux 측의 권한이 안전하지 않게 허용되어야 한다는 의미는 아닙니다(예: 누구나 읽고 쓸 수 있음).

모든 파일에서 POSIX ACL을 실수로 제거한 후 처음에 그룹 액세스를 허용하도록 설정된 것으로 생각하여 Windows 측 파일에 대한 모든 권한이 손상되었습니다.

이 문제는 설명서의 모든 옵션을 살펴보고 구성을 다시 실행하여 원하는 동작을 얻기 위해 어떤 옵션을 설정해야 하는지 알아냈습니다. 즉, UNIX 권한을 안전하게 유지하면서 Windows 측에서만 권한을 설정하는 것이었습니다. Samba가 UNIX 권한을 처리하는 방법에 대해 아직 이해하지 못하는 두 가지가 있습니다.

설정하면 acl_xattr:ignore system acls = noUNIX 권한이 Windows ACL(CREATOR, GROUP 및 EVERYONE 항목)의 항목이 되지만, 로 설정하면 yes소유자, 그룹 및 권한이 여전히 Windows 측의 권한에 영향을 미치는 것처럼 보입니다. 여전히 Samba에 의해 시행됩니다. 디렉터리에 root:backup 0660권한이 있는 Domain User경우 Windows ACL에 Domain Users. 그룹을 NT 그룹에 매핑되는 위치 backup로 변경 하면 작동합니다. 따라서 UNIX 권한은 여전히 ​​적용됩니다.usersusersDomain Users

Windows ACL이 나머지를 거부하도록 하는 설정이 있습니까? 즉, Windows ACL이 허용하는 경우 Domain UsersUNIX 권한에 관계없이 허용됩니다. 아니면 UNIX 권한을 사용하여 Samba를 비활성화할 수 있습니까?

다른 질문은 Samba가 UNIX 권한을 저장하는 방법입니다. 새로운 구성에서는 inherit owner = yes. UNIX 그룹을 다른 그룹으로 변경하려고 시도한 경우를 제외하고는 Windows와 UNIX 모두에서 예상대로 작동하는 것 같았습니다. 처음에는 setgid 비트가 john해당 그룹 과 공유에 설정되어 inherit owner그룹이 아닌 소유자에게만 영향을 미친다고 생각합니다. 그러나 공유에서 setgid 비트를 제거하고 그룹을 users재귀적 으로 변경하면 inherit owner = yesWindows 10 클라이언트에서 만들어진 새 파일과 디렉터리가 여전히 그룹과 함께 생성되었습니다 john. 디렉터리 트리 어디에도 그룹이 john남아 있는 디렉터리가 없었습니다. 만일을 대비해 Windows 클라이언트와 Samba 서버를 다시 시작해 보았지만 아무 것도 바뀌지 않았습니다.

Samba는 UNIX 권한을 다른 곳에 저장하므로 파일 시스템에서 직접 UNIX 그룹을 변경해도 Samba가 추적하는 그룹에는 영향을 미치지 않습니까? 아니면 Samba가 여전히 새 파일과 디렉터리에 대해 이 이전 그룹을 사용하는 원인은 무엇일까요?

아래에서는 Samba 버전 4.7.6 구성과 관련이 있을 수 있는 옵션을 찾을 수 있습니다. 더 많은 정보가 필요하면 알려주세요.

[global]
access based share enum = yes
acl group control = no
acl map full control = yes
acl_xattr:ignore system acls = yes
acl_xattr:default acl style = windows
create mask = 0775
directory mask = 0775
dos filemode = yes
dos filetime resolution = no
dos filetimes = yes
ea support = no
force create mode = 0600
force directory mode = 0600
force unknown acl user = no
guest account = nobody
guest ok = no
guest only = no
inherit acls = no
inherit owner = unix only
inherit permissions = no
invalid users = root
map acl inherit = yes
map archive = no
map hidden = no
map readonly = no
map system = no
map to guest = never
nt acl support = yes
obey pam restrictions = no
read only = yes
restrict anonymous = 2
security = user
server role = active directory domain controller
store dos attributes = yes
unix extensions = yes
vfs objects = dfs_samba4 acl_xattr shadow_copy2

[backups]
create mask = 0660
directory mask = 0770
ea support = yes
path = /mnt/pool/backups
read only = no

답변1

Samba는 UNIX 권한을 다른 곳에 저장하므로 파일 시스템에서 직접 UNIX 그룹을 변경해도 Samba가 추적하는 그룹에는 영향을 미치지 않습니까? 아니면 Samba가 여전히 새 파일과 디렉터리에 대해 이 이전 그룹을 사용하는 원인은 무엇일까요?

나는 이 두 번째 질문에 대해서만 답을 찾을 수 있었습니다. 실험 중에 inherit ownerNT ACL의 일부로 저장된 값이 무엇인지 알고 싶었기 때문에 디렉터리를 검사했는데 samba-tool ntacl get /path/to/dir놀랍게도 이전 GID가 group_sid. 그리고 더 이상 파일 시스템의 다른 곳에서는 이전 GID에 대한 다른 참조가 없었기 때문에 이것이 Samba가 이전 UNIX 그룹을 유지하는 원인인 것 같습니다. 특히 상속 소유자를 unix only또는 로 설정할 때 no마다 이전 UNIX 그룹. 따라서 (ie ) inherit owner로 설정하면 Samba가 UNIX 그룹을 NT ACL에 저장된 그룹으로 설정하게 됩니다.yesunix and windows

첫 번째 질문에 대한 답변은 여전히 ​​마음에 들지만 다음 방법을 찾아 해결 방법을 찾았습니다.NT 그룹을 Domain Users내가 선호하는 UNIX 그룹에 매핑POSIX ACL을 통해 다른 사람의 권한을 0으로 설정합니다 setfacl -Rm d:o:---,o:--- /my/share.

관련 정보