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共有への書き込みアクセスを取得する正しい方法は何ですか?
その共有専用のユーザーを作成し、force user
(docsを参照) で指定することをお勧めします。
ユーザー(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
の同義語であることに注意してください。
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を扱う必要があるなら、それはまだ役に立つかもしれません。)
私の場合の基本的な作業設定(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サーバーに接続解除することが重要です。
私は急いでいて、ユーザーの作成に集中する時間さえなかったので、これを探していました...
Debian 9マシンのデータをできるだけ早く取り出さなければならず、これが私が考えた最速の方法でした。コマンドのスキップを避けたい場合は、これも実行できますが、明らかに推奨されていません = 急いでいる場合でない限り。
[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root