
Linux 서버에서 진정한 공유 폴더를 어떻게 만듭니까? 프로젝트 팀원들이 파일을 폴더에 복사하거나 이동했는지, 폴더 안에 직접 생성했는지, 다른 사람이 파일을 생성했는지 여부에 관계없이 모든 파일을 자신의 파일처럼 읽고 쓸 수 있기를 바랍니다. 다른 사람.
지금까지 나는 다음과 같은 문제에 직면했습니다.
- umask는 시스템 전체 수준에서만 작동하며 기존 파일을 무시합니다.
- ACL은 사용자가 폴더로 이동한 파일을 무시합니다.
- inotify는 나중에 권한을 수정하여 일부 사무실 문서에 문제를 일으킬 수 있으므로 해킹처럼 보입니다.
chgrp -R projectteam /folder/
성능, 지연 및 백업에 정기적으로 문제가 발생합니다.
현재 솔루션은 동일한 서버에 탑재되어 활성화된 SAMBA 공유 force user
입니다 force group
. 그러나 이는 여러 프로젝트 그룹을 관리하기가 번거롭고 성능에 타격을 받고 있다고 생각합니다.
어떤 도움이나 아이디어라도 대단히 감사하겠습니다. 저는 데비안 10을 사용하고 있습니다.
독일 함부르크에서 인사드립니다.
남자 이름
답변1
모든 프로젝트 사용자에게 공통 프로젝트 그룹이 할당된 경우 프로젝트 디렉터리(및 해당 하위 디렉터리)에서 setgid 비트를 설정할 수 있습니다.
find /path/to/teamfolder -type d -exec chmod g+s '{}' \;
또한 프로젝트 디렉터리에 다음과 같이 ACL 권한을 설정합니다.
setfacl -d -m u::rwx,g::rwx,o::r-x /path/to/teamfolder
setgid 비트가 디렉토리에 설정되면 해당 디렉토리 내에 생성된 모든 파일은 해당 디렉토리의 그룹 소유권을 상속합니다. ACL 권한은 프로젝트 디렉터리 내에 생성된 파일이 그룹에 대한 쓰기 권한을 갖도록 허용합니다.
새 사용자는 다음과 같이 추가될 수 있습니다.
sudo usermod -a -G projgrp newuser
도움이 되었기를 바랍니다.
답변2
여러 계층의 구성을 구성할 수 있으며 이를 통해 관리를 매우 간단하게 만들 수 있습니다.
Abhishek이 제안한 것처럼 디렉터리에 대해 setgid 비트를 설정하면 새로 생성된 파일 및 디렉터리에 대해 기본적으로 디렉터리의 그룹 소유권을 상속할 수 있기 때문에 매우 유용합니다.
그러나 복사된 파일은 관찰한 대로 소유권을 유지합니다. 그룹 소유권을 재설정하려면 incrontab 접근 방식이 좋습니다. 보다 현대적인 접근 방식은 systemd .path 파일을 사용하여 수정 사항을 모니터링하고 해당 .service 파일을 사용하여 chgrp를 실행하는 것입니다.
많은 프로젝트 그룹을 지원하도록 구성하는 방법에 대한 질문을 해결하려면 다음을 고려하십시오.
먼저, Samba는 인증만 제공하며 파일 시스템 권한과 호스트 사용자 계정에 의존한다는 점을 기억하십시오.
umask를 0002로 설정하면 기본적으로 그룹 쓰기 권한이 허용됩니다.
각 사용자에 대한 호스트 계정을 만듭니다.
sudo useradd andreas
sudo useradd beatrix
sudo useradd ciela
관리 목적으로 루트와 구별되는 데이터 "수퍼유저"를 만듭니다.
sudo useradd oberst
각 프로젝트에 대한 그룹을 만듭니다.
sudo groupadd hund
sudo groupadd katz
각 프로젝트에 대한 데이터 디렉터리를 만들고 권한(setguid 비트 포함)과 소유권을 설정합니다. 다음은 setgid 비트(2)를 설정하고, 슈퍼유저 oberst 및 지정된 그룹에 전체 권한(7)을 부여하고, 다른 사용자에게는 권한을 부여하지 않음(0), 따라서 그룹이 아닌 구성원은 읽거나 쓰거나 사용할 수 없습니다. 실행하다:
sudo mkdir /srv/hund
sudo chown oberst:hund /srv/hund
sudo chmod 2770 /srv/hund
sudo mkdir /srv/katz
sudo chown oberst:katz /srv/katz
sudo chmod 2770 /srv/katz
그룹에 사용자를 추가합니다.
sudo usermod -a -G hund andreas
sudo usermod -a -G hund beatrix
sudo usermod -a -G katz beatrix
sudo usermod -a -G katz ciela
Samba에 사용자를 추가합니다:
sudo smbpasswd -a andreas
sudo smbpasswd -e andreas
sudo smbpasswd -a beatrix
sudo smbpasswd -e beatrix
sudo smbpasswd -a ciela
sudo smbpasswd -e ciela
공유를 생성하려면 smb.conf를 편집하세요. Read-only=no는 쓰기 액세스를 허용하고 browsable=no는 다른 사람(즉, 그룹 구성원이 아닌 사람)이 공유를 탐색하는 것을 방지합니다. 호스트 그룹에 대한 참조로 액세스를 정의하는 유효한 사용자 지시문의 "@" 접두사에 유의하세요.
[hund]
path=/srv/hund
read only=no
browsable=no
force group=hund
valid users=@hund
[katz]
path=/srv/katz
read only=no
browsable=no
force group=katz
valid users=@katz
이제(아마 재부팅 후) /srv/hund는 andreas 및 beatrix에서 액세스(읽기/쓰기)할 수 있지만 ciela는 액세스할 수 없으며 /srv/katz는 beatrix 및 ciela에서 액세스(읽기/쓰기)할 수 있지만 andreas는 액세스할 수 없습니다.
사용자의 액세스 권한을 변경하는 데 필요한 것은 usermod를 사용하여 그룹 멤버십을 변경하는 것뿐입니다.
물론 호스트 계정과 Samba 계정의 비밀번호도 구성해야 합니다.
이것이 도움이 되기를 바랍니다.