![파일에 777 권한이 없으면 "강제 사용자"가 포함된 Samba 공유는 여전히 쓸 수 없습니다.](https://linux55.com/image/177428/%ED%8C%8C%EC%9D%BC%EC%97%90%20777%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EC%97%86%EC%9C%BC%EB%A9%B4%20%22%EA%B0%95%EC%A0%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%22%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20Samba%20%EA%B3%B5%EC%9C%A0%EB%8A%94%20%EC%97%AC%EC%A0%84%ED%9E%88%20%EC%93%B8%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
Debian 10과 Samba 4.9.5를 실행하는 헤드리스 서버가 있습니다. 모든 사용자가 전체 읽기/쓰기 액세스 권한을 갖는 폴더를 공유하고 싶습니다. 내 전체 smb.conf 파일은 다음과 같습니다.
[global]
workgroup = WORKGROUP
netbios name = MyServerName
security = user
map to guest = bad user
guest account = myuser
dns proxy = no
log level = 4
[Stuff]
path = /home/myuser/share
force user = myuser
force group = myuser
browseable = yes
guest ok = yes
write list = myuser
read only = no
myuser
모든 파일 및 에 대한 읽기/쓰기 액세스 권한이 있습니다 /home/myuser/share
. 그러나 일부 파일에는 해당 그룹에 대한 쓰기 액세스 권한이나 기타 권한이 없습니다. 즉, 해당 권한은 755, 644 등입니다.
어떤 이유로 force user
든 myuser
.
나는 또한 이것이 map to guest
제대로 작동하지 않는 것 같다는 것을 방금 알아차렸습니다. 잘못된 사용자 이름으로 연결하면 해당 사용자 이름을 계정에 매핑 myuser
하고 액세스를 허용하는 대신 거부됩니다 Stuff
.
누군가 이것이 작동하지 않는 이유를 알아내도록 도와줄 수 있습니까?
비슷한 질문을 검색해 보니 이런 내용이 있었습니다.777 권한 없이 Windows에서 쓰기 가능한 Samba 공유를 만드는 방법, 그러나 허용되는 해결책은 을 사용하는 것입니다 force user
. 이것이 바로 제가 하고 있는 일이지만 어떤 이유로 여전히 작동하지 않습니다.
답변1
나는 당신과 같은 문제에 직면했다고 생각합니다. 어떤 이유로 force user
그룹 쓰기 권한이 필요한 것 같습니다 . 하지만 전역 쓰기 권한이 필요하지 않은 것 같으므로 해결 방법으로 777 권한 대신 660/770 권한을 제거할 수 있어야 합니다. 이는 보안을 저하시키지 않습니다. 파일을 쓰기 가능하게 만들어야 하기 때문에 파일을 외부 삼바로 이동하는 것은 성가신 일입니다.
이것을 smb.conf 아래에 넣으세요 [Stuff]
:
force user = myuser
create mask = 0660
directory mask = 0770
그런 다음 공유 폴더에서 실행하십시오.
sudo chown -R myuser:myuser /home/myuser/share
sudo chmod -R 0660 /home/myuser/share
sudo chmod -R ug+X /home/myuser/share
그런 다음 smbd를 다시 시작하십시오. 위 명령은 현재 존재하는 파일과 삼바를 통해 새로 생성된 파일에 대해 모든 파일을 660으로, 모든 디렉터리를 770으로 설정합니다. force group
기본적으로 의 기본 그룹과 일치할 필요는 없습니다 force user
. 또한 여기서는 세계 권한을 완전히 거부하고 있습니다. 전 세계에서 읽을 수 있도록 하려면 0664, 0775 및 ugw+X를 사용할 수 있습니다.
안타깝게도 그룹 쓰기 권한이 없으면 작동하지 않습니다. 나는 이것이 삼바의 버그라고 생각합니다. 최근의삼바 버그 #14617삭제를 통해 파일을 차단합니다 force user
. 이는 또 다른 관련 버그일 수 있지만 보고할 만큼 지식이 부족합니다. 0644/0755에서 작동하게 하는 방법을 알고 계시다면 알려주세요!
답변2
좋습니다. "smbpasswd -a 사용자 이름"을 사용하여 사용자를 생성하셨나요(루트로 실행해야 함)? 그렇지 않은 경우 게스트 계정 "myuser"를 사용할 수 없습니다. 이는 누구도 귀하의 공유에 액세스할 수 없음을 의미합니다. 인증(smb.conf 기반)은 다음과 같이 작동합니다. 사용자가 Samba에 연결하고 해당 사용자가 알려져 있고 올바른 비밀번호를 제공하면 공유에 액세스할 수 있지만 저장한 모든 내용은 마치 소속된 것처럼 저장됩니다. 알려진 사용자이지만 잘못된 비밀번호를 제공하면 전역에 "guest = bad user"가 있으므로 연결이 자동으로 끊어집니다. ", 공유에 "guest ok=yes"가 있으므로 Samba에 연결하는 알 수 없는 사용자는 공유 근처에 도달하기 전에 게스트 계정 "myuser"에 매핑되고 다음과 같이 됩니다. 이제 그들은 알려진 사용자이며 허용됩니다. 공유에 액세스하십시오. smb.conf가 너무 짧으면 "force group" 행이 필요하지 않으며 "force user"가 이를 수행하며 "myuser"에는 쓰기 권한이 있습니다. 기본적으로 "목록에 쓰기" 줄이 필요하지 않습니다. 마지막으로 기본값인 "browseable=yes"를 설정할 필요가 없습니다.
답변3
나는 이틀 내내 그것을 작동시키려고 노력했고 ludocode의 지시를 따른 후에야 마침내 공유에 액세스할 수 있었습니다. 매우 감사합니다!
몇 가지 추가 의견(내 점수가 아직 50점 미만이고 댓글을 달 수 없기 때문에 답변으로 여기에 게시합니다):
ludocode가 올바르게 언급했듯이
force group
게스트 사용자의 기본 그룹이 올바르게 설정된 경우에는 필요하지 않습니다.write list = myuser
유닉스 사용자가 한 명뿐이므로 필요하지 않습니다.read only = no
(또는write ok = yes
일명writeable = yes
akawritable = yes
)이면 충분합니다.Windows 머신에서 아카이브 비트를 사용하는 경우, 예를 들어 아직 백업되지 않은 파일을 표시하거나 파일 생성 시간에 대한 완전한 지원을 원하는 경우 두 개의 추가 매개변수를 사용하는 것이 좋습니다.
dos filemode = yes store dos attributes = yes
자세한 내용은 Samba Wiki(도스 파일 모드,도스 속성 저장). Samba 4.0.9부터는 후자가 기본값입니다. 확장된 속성을 지원하는 파일 시스템을 사용해야 합니다. BTRFS는 기본적으로 이를 지원합니다.기필코 아니다user_xattr
/etc/fstab에 마운트 옵션으로 추가되었습니다 .
이것이 질문에 직접적으로 대답하지는 않는다는 것을 이해합니다. 그러나 이제 smb.conf
한 페이지에 간단한 Samba 독립 실행형 설정에 필요한 모든 정보가 포함된 완전한 파일을 사용할 수 있습니다.