Samba 공유 폴더의 Setgid 문제

Samba 공유 폴더의 Setgid 문제

공유 디렉터리가 있는 파일 서버를 설정 중입니다. 내부에는 모든 사용자가 읽을 수 있는 사용자별 폴더와 모든 사용자가 읽고 쓸 수 있는 공유 디렉터리가 있습니다. 사용자별 폴더는 매우 간단합니다. 그러나 공유 폴더에 몇 가지 문제가 있습니다. GID 폴더를 생성하는 표준 절차를 따랐습니다.

# chown root shared
# chmod -R ug+rwX shared
# chgrp -R users shared
# find shared -type d -exec chmod g+s "{}" \;
# find shared -type d -exec setfacl -m "default:group::rwx" "{}" \;

모든 사용자가 "users" 그룹에 있는지 확인한 후 직접 콘솔, ssh, rsync 등을 통해 로그인하면 완벽하게 작동합니다. 그러나 삼바에는 몇 가지 문제가 있습니다.

기본 삼바 구성을 사용하면 SGID 비트와 GID가 전파되지만 새 파일과 폴더에는 그룹 쓰기 비트가 설정되어 있지 않습니다. 이는 ACL이 무시되기 때문인 것으로 보입니다. ~에 따르면Samba는 POSIX ACL을 무시합니다., 해결책은 smb.conf 에 추가하는 것입니다 vfs objects = acl_xattr. 설정해보니 그룹 쓰기 권한이 올바르게 설정되어 있었습니다. 그러나 그룹은 상위 디렉터리의 그룹이 아닌 사용자의 홈 그룹으로 설정되므로 GID 비트 설정 목적이 무효화됩니다. 링크(, 및)에 언급된 다른 smb.conf 조정을 시도했지만 map acl inherit = yes아무런 효과가 없었습니다 store dos attributes = yes. inherit acls = yes이 작업을 수행하는 올바른 방법은 무엇입니까?

답변1

새 파일 및 폴더에 대한 그룹, 사용자 및 권한을 설정하기 위해 서버에서 다음 구성을 사용합니다( smb.conf).

[shared-folder]
   writeable = yes
   force user  = "user"
   force group = "users"
   create mask = 0664
   force create mode = 0664
   directory mask = 0775
   force directory mode = 0755

별도의 공유 폴더를 통해 이러한 방식으로 공용 폴더를 처리할 수 있습니다.

노트:설명에서 지적했듯이 이 설정은 ACL과 호환되지 않을 수 있습니다. UNIX 권한에만 의존하는 경우에만 이 작업을 수행하는 것이 좋습니다.

답변2

이면 다음 에 설명된 매뉴얼 페이지를 vfs objects = acl_xattr자동으로 inherit acls = yes따릅니다 .inherit aclssmb.conf

VFS 모듈을 사용하는 경우acl_xattr또는 기본 Windows를 메타데이터로 저장하는 acl_tdb는 Windows ACL을 올바르게 에뮬레이션하려면 이 옵션이 필요하므로 로드된 모든 공유에 대해 이 옵션을 자동으로 켭니다.

일단 inherit acls켜지면 새 파일/디렉토리를 생성하는 데 사용되는 유닉스 모드는 0777이 됩니다(효과적으로 비트 setgid를 0으로 지움).

이 옵션을 활성화하면 unix 모드가 0777로 설정되어 기본 디렉터리 ACL이 전파됩니다.

inherit acls = no명시 적으로 나란히 지정하는 것이 vfs objects = acl_xattr효과가 있는 것처럼 보이지만 이러한 방식으로 함께 사용하는 것은 적합하지 않을 수 있으며 알 수 없거나 숨겨진 부작용이 있을 수 있습니다.

관련 정보