내가 Alice라는 사용자이고 공개적으로 액세스할 수 있는 폴더가 있다고 가정해 보겠습니다./samba/public
공용 Samba 폴더( )의 권한은 /samba/public/
none:nogroup 및 0777입니다.
Alice가 자신의 홈 폴더에서 공유 공용 드라이브로 무언가를 복사하려고 할 때
(예를 들어 cp ~/Downloads/* /samba/public
),
Alice는 공용 Samba 공유에 액세스할 수 있는 모든 게스트가 새로 복사된 파일을 편집/삭제할 수 있기를 원합니다.
복사하려는 파일은 누구도 소유하지 않습니다: nogroup 및 0777로 설정됩니다.
대신 새로 복사된 파일은 alice:alice가 소유하며 공용 드라이브의 게스트 사용자는 이러한 파일을 편집하거나 삭제할 수 없습니다.
향후 Alice의 홈 폴더에서 공유/공용 Samba 폴더로의 콘텐츠 복사/이동 작업이 누구도 소유하지 않도록 하려면 어떻게 해야 합니까? nogroup 게스트 사용자가 파일 자체를 삭제/편집하는 것을 차단하지 않도록 합니까?
답변1
이제 문제가 해결된 것 같습니다(나무를 만져보세요).
모든 종류의 다양한 수정 사항을 시도했기 때문에 모든 것이 작동하는 원인을 정확히 찾아내기는 어렵지만 다음 단계가 도움이 될 것이라고 생각합니다.
- 나는도커 애플리케이션이를 실행하면 내용이 내 홈 디렉터리에 다운로드되었습니다(당시에는 중요하지 않은 것 같았습니다).
- @sourcejedi의 제안을 따른 후 내
umask
것이0002
. /samba/public/
@Isaac의 조언에 따라 홈 디렉터리에서 게스트 사용자가 자유롭게 이름 바꾸기/편집/삭제를 할 수 있는 Samba 로 파일과 디렉터리를 생성/복사/이동할 수 있었습니다 .
그러나 이 Docker 애플리케이션을 사용하여 다운로드한 홈 디렉터리의 항목을 복사/이동하려고 하면 Samba 게스트 사용자가 자유롭게 이름을 바꾸거나 편집/삭제할 수 없습니다(Docker 애플리케이션이 chmod 값이 755인 디렉터리를 생성하기 때문입니다).
그런 다음
umask
Docker 애플리케이션을 0002로 변경했습니다. Docker 애플리케이션에서 생성된 후속 다운로드 및 디렉터리는 chmoded val 775입니다./samba/public/
이제 Samba 게스트 사용자는 이러한 디렉토리가 에 복사될 때 이름 바꾸기/편집/삭제를 할 수 있습니다.
각주:
umask를 원하는 값으로 변경하는 것은
umask XXXX
XXXX가 원하는 값인 곳에서 실행하는 것만큼 간단합니다.umask
터미널에 간단히 입력하면 umask 값을 확인할 수 있습니다 .내가 사용하고 있는 Docker 애플리케이션의 umask 변경은
umask
ENV라는 새 매개변수를 추가하고 로 설정하여 수행됩니다0002
. Docker 컨테이너를 시작할 때 CLI를 통해, Portianer를 사용하여 실행 중인 컨테이너를 관리하는 경우 웹 UI를 통해 이 매개변수를 전달할 수 있습니다.주요 경고:작동시키는 과정의 일환으로 먼저 제공된 조언을 따르려고 노력했습니다.공용 폴더 스레드에 대한 권한 설정그리고 @Isaac의 제안을 따르기 전에 @sourcejedi가 권장하는 UPG(User Private Group) 패턴을 사용해 보세요.
나중에 비슷한 문제가 발생하는 경우에도 관련이 있을 수 있습니까?
답변2
U&L에 오신 것을 환영합니다! 파일이 none:nogroup 0777일 필요는 없을 것입니다. 죄송합니다. 원하는 패턴이 Gnome/systemd(및 udisk)에 의해 깨졌습니다. 적어도 앨리스가 이것을 사용한다면Samba 서버를 실행하는 동일한 컴퓨터에서.
이것은 질문에서 논의됩니다 (매우 명확하지 않음)일반 사용자에게 적합한 공유, 읽기 및 쓰기, 사진 디렉토리 트리그리고ext4 디스크의 여러 사용자 간에 폴더/파일 공유
앨리스라면아니요Samba 서버를 실행하는 동일한 시스템에서 Gnome(Gnome 파일 관리자 포함) 또는 udisk(사용자가 이동식 파일 시스템을 마운트할 수 있음)를 사용하면 실제로 원본 버전을 사용할 수 있습니다.사용자 비공개 그룹무늬.
IIRC, Redhat 시스템에는 이미 UPG에 대한 올바른 umask 세트가 있습니다. Debian 기반 시스템의 경우 pam_umask를 활성화하고 구성해야 할 수도 있습니다. 바라보다https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask
편집: 을 변경해야 하는 경우 umask
모든 액세스 모드도 변경해야 합니다.기존의나중에 공유하고 싶은 파일입니다. 예를 들어 chmod -R g+w $HOME/*
또는 chmod -R g+w /home/*/*
. 하다아니요사용 chmod -R g+w $HOME
. 모드가 변경되어 $HOME/.ssh
로그인을 사용하지 못하게 될 수 있습니다 ssh
.
그렇지 않으면 누군가가 이 정보를 기반으로 해결 방법을 제안할 수도 있습니다.
스레드를 기반으로 대안을 제안할 수 있습니다.자주 사용하는 폴더에 대한 권한 설정
게스트 사용자가 이러한 파일을 삭제하고 편집할 수 있기를 원하는 것 같습니다. 이는 파일이 매우 크지 않을 수 있음을 의미합니다.
귀하가 제공한 정보에 따르면 Alice는 Samba 공유를 사용하여 파일을 업로드하는 게스트 역할을 직접 수행할 수 있는 것으로 보입니다. ...서버에서 Samba 디렉토리가 어디에 있는지 Alice에게 알려주지 않으면 됩니다. 그녀가 그것을 찾을 만큼 똑똑하다면, 컴퓨터가 버그이고 그녀의 완벽하게 논리적인 아이디어가 이유가 있기 때문에 작동하지 않을 것이라는 말을 들을 수도 있을 만큼 똑똑합니다.
(꼭 필요한 경우 LXC와 같은 컨테이너 내부에서 Samba 서버를 실행하여 "숨길" 수 있습니다.)
Alice가 Samba 서버에 게스트 계정이 아닌 경우 다음을 사용해야 할 수도 있습니다 chmod g+s
.smb.conf
create mask = 0775
directory mask = 0775