web-dev-qa-db-ja.com

777の権限なしでWindowsから書き込み可能なSamba共有を作成する方法

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からの完全な読み取りアクセス権があります。しかし、書き込みアクセス権を取得するには、Windowsから書き込みできるようにchmod -R 777 /path/to/shareを実行する必要があります。

/path/to/shareのLinux所有者のLinux資格情報を提供した後、Windowsからの書き込みアクセスが必要です。

私はすでに試しました:

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

その後、Windowsは資格情報を要求しますが、何を入力しても、常に拒否されます。

777を許可せずにWindowsドメインコンピュータからSamba共有への書き込みアクセスを取得する正しい方法は何ですか?

39
Foo Bar

その共有専用のユーザーを作成し、force user(docsを参照) で指定することをお勧めします。

ユーザー(shareuserなど)を作成し、共有フォルダー内のすべての所有者をそのユーザーに設定します。

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

次に、force usersmb.confに権限マスク設定を追加します。

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

guest okpublicの同義語であることに注意してください。

55
yaegashi

smb.confの共有設定で、write list = ...行を使用して、共有への書き込みを許可するユーザーまたはグループ、あるいはその両方の名前を指定する必要があります。

例:

[myshare]
...
write list = my_linux_username

次に、smbpasswdコマンドを使用して、Sambaのmy_linux_usernameを認証するためのパスワードを設定する必要があります。

Sudo smbpasswd -a my_linux_username

/etc/shadowの標準システムパスワードは、SMBプロトコルで使用されるパスワードハッシュアルゴリズムと互換性のないアルゴリズムでハッシュされるため、この手順が必要です。クライアントがSMB認証パケットを送信すると、ハッシュされたパスワードが含まれます。同じアルゴリズムを使用する別のパスワードハッシュとのみ比較できます。

(前のミレニアムからの非常に古い指示では、Sambaでパスワードの暗号化を無効にし、特定のレジストリハックを使用してWindowsが暗号化されていないパスワードをネットワークに送信できるようにすることを推奨する場合があります。このアドバイスは廃止です:これらのレジストリハックはは現在のバージョンのWindowsでは機能しなくなり、ネットワークトラフィックを監視できる人なら誰でも簡単にパスワードを取得できるようになります。)


クライアント側でやらなければならないことがもう1つあります。 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という名前のドメインに属するユーザーを確認する方法がないと結論付け、ログインを拒否します。

(Sambaの新しいバージョンmayには、この特定の状況に対する組み込みのチェックがあり、それでもアクセスを許可する場合があります。しかし、これは基本的にSMB認証が機能する方法です"そして、もしあなたが古いバージョンのSambaを扱う必要があるなら、それはまだ役に立つかもしれません。)

2
telcoM

私の場合の基本的な作業設定(SAMBAゲスト機能、[your_SAMBA-Unix_share_user_account]に適した/ myfolderアクセス​​権を使用):

[global]
guest account = [your_SAMBA-Unix_share_user_account]

[mymfolder]
path = /myfolder
browseable = yes
read only =no
guest ok =yes

一度に1人以上のログオンユーザーが許可されていないように見えるため、Windowsマシンの他のマップされたドライブをこのSAMBAサーバーに接続解除することが重要です。

1

私は急いでいて、ユーザーの作成に集中する時間さえなかったので、これを探していました...

Debian 9マシンのデータをできるだけ早く取り出さなければならず、これが私が考えた最速の方法でした。コマンドのスキップを避けたい場合は、これも実行できますが、明らかに推奨されていません = 急いでいる場合でない限り。

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