777 권한없이 Windows에서 쓸 수있는 Samba 공유를 만드는 방법은 무엇입니까?


33

Linux 컴퓨터 (Debian 8)에 Samba 4와 공유하여 Windows 컴퓨터 (도메인의 Win7 및 8)에 대한 경로가 있습니다. 내에서 smb.conf나는 다음을 수행했다.

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
guest ok = yes
public = yes

Windows에서 완벽한 읽기 권한이 있습니다. 그러나 쓰기 액세스 권한을 가지 chmod -R 777 /path/to/share려면 Windows에서 쓸 수 있으려면해야합니다.

내가 원하는 것은의 Linux 소유자의 Linux 자격 증명을 제공 한 후 Windows에서 쓰기 액세스하는 것입니다 /path/to/share.

나는 이미 시도했다 :

[myshare]
path = /path/to/share
writeable = yes
browseable = yes

그런 다음 Windows는 자격 증명을 요청하지만 입력 한 내용에 관계없이 항상 거부됩니다.

777을 부여하지 않고 Windows 도메인 컴퓨터에서 Samba 공유에 대한 쓰기 액세스 권한을 얻는 올바른 방법은 무엇입니까?

답변:


49

해당 공유에 대한 전용 사용자를 작성하고이를 지정하는 것이 좋습니다 force user(문서 참조) .

사용자를 작성하고 ( shareuser예를 들어) 공유 폴더에있는 모든 소유자를 해당 사용자로 설정하십시오.

adduser --system shareuser
chown -R shareuser /path/to/share

그런 다음에 force user마스크 설정을 추가 하고 권한을 부여하십시오 smb.conf.

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
force user = shareuser

참고 guest ok동의어입니다 public.


1
비슷한 문제가 있었고 모든 Google 검색에서 단순히 777을 사용하는 더러운 방법을 보여주었습니다. 공유 폴더에 775를 원했고 Linux "defaultUser"를 사용하여 파일을 만들고 싶었습니다. public = yes도 사용했습니다. 폴더는 775, 작성 및 dir 마스크는 775 였지만 Windows에서는 쓸 수 없었으며 이유를 알 수 없었습니다. 추가 force user = defaultUser는 나를 위해 일했습니다.
firepol

디렉토리를 공유하려고 할 때마다이 작업을 수행 할 수 없습니다. 디렉토리를 공유하려면 "다른 사용자"에게 쓰기 권한을 부여해야한다는 창이 나타납니다.
Mark Kramer

알았습니다. 문제는의 위치였습니다 smb.conf. 구글과 심지어 삼바 스 문서는 파일이 있어야 /usr/local/samba/lib하지만 실제로 는 파일에 있다고 밝혔다/etc/samba
Mark Kramer

1
@MarkKramer 많은 배포판이 Linux Foundation의 FHS (Filesystem Hierarchy Standard)에 맞게 파일을 재구성하기 때문에 특정 Linux 배포에 포함 된 문서를 따르는 것이 좋습니다. Google이 항상 가장 좋은 답변은 아니기 때문에 배포판과 함께 제공된 문서를 읽고 검색하는 것이 좋습니다. 예를 들어 다른 버전의 소프트웨어에 대한 정보를 얻을 수 있습니다. 친애하는.
RobertL

2

의 공유 설정에서 smb.confwrite list = ...줄을 사용하여 공유에 쓸 수있는 사용자 및 / 또는 그룹의 이름을 지정해야합니다 .

예:

[myshare]
...
write list = my_linux_username

그런 다음 Samba smbpasswd인증을 my_linux_username위해 비밀번호를 설정 하려면 다음 명령 을 사용해야합니다 .

sudo smbpasswd -a my_linux_username

표준 시스템 비밀번호 /etc/shadow는 SMB 프로토콜에 사용 된 비밀번호 해시 알고리즘과 호환되지 않는 알고리즘으로 해시되므로이 단계가 필요 합니다. 클라이언트가 SMB 인증 패킷을 보내면 해시 된 비밀번호가 포함됩니다. 동일한 알고리즘을 사용하는 다른 비밀번호 해시와 만 비교할 수 있습니다.

(이전의 밀레니엄의 아주 오래된 지침은 Samba에서 암호 암호화를 비활성화하고 Windows가 네트워크에 암호화되지 않은 암호를 방출 할 수 있도록 특정 레지스트리 해킹을 사용하도록 권장 할 수 있습니다.이 조언은 더 이상 사용되지 않습니다 . 해당 레지스트리 해킹은 더 이상 현재 버전에서 작동하지 않을 수 있습니다. Windows에서 네트워크 트래픽을 모니터링 할 수있는 사람이면 누구나 간단하게 암호를 캡처 할 수 있습니다.)


클라이언트 측에서해야 할 일이 하나 더 있습니다. Windows 클라이언트 시스템이 Active Directory 도메인에 가입되어 있고 AD 계정으로 로그인하면 자격이없는 모든 사용자 이름 앞에 자동으로 사용자의 AD 도메인 이름이 붙습니다. 즉 AD_DOMAIN\your_username,뿐만 아니라 로 인증됩니다 your_username.

로컬 계정으로 로그인 한 경우 (또는 클라이언트 시스템이 AD 도메인에 가입되어 있지 않은 경우) 다른 도메인 이름을 지정하지 않으면 Windows에서 자동으로 사용자 이름이 클라이언트 호스트 이름으로 접두어 질 수 있습니다 .

독립형 Windows 클라이언트에서 독립형 Samba 서버에 로그인하려면 사용자 이름을로 지정해야합니다 SAMBA_SERVER_HOSTNAME\your_username.

그렇지 않으면 Samba는 사용자 이름을로보고 이름 WINDOWS_CLIENT_HOSTNAME\your_username이 도메인에 속하는 사용자를 확인할 방법이 없다고 판단 WINDOWS_CLIENT_HOSTNAME하고 로그인을 거부합니다.

(삼바의 최신 버전이 있습니다 가지고이 특정 상황에 대한 점검 내장, 당신은 삼바의 이전 버전을 처리해야하는 경우 그들은 당신이 그럼에도 불구하고 액세스 할 수 있습니다. 그러나이 SMB 인증 "후드 아래에"어떻게 작동하는지 기본적이며, 여전히 유용 할 수 있습니다.)


1

서둘러서 사용자를 만드는 데 집중할 시간조차 없었기 때문에 이것을 찾고있었습니다.

그냥 가능한 한 빨리 데비안 (9) 기계의 데이터를 꺼내했고, 이것은 당신이 당신이 할 수있는 명령을 건너 뛰는 피하고 싶은 경우 나,의 문질러서 가장 빠른 방법 이었지만 그것은 분명하지 않는 것이 좋습니다 당신은에서가 아니라면 서둘러 .

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 

이 경로를 사용하면 "hosts allow"옵션을 사용하여 호스트별로 제한 할 수 있습니다. 참조 : samba.org/samba/docs/server_security.html
ctorx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.