ファイルに777権限がない場合、「強制ユーザー」を含むSamba共有はまだ書き込めません。

ファイルに777権限がない場合、「強制ユーザー」を含むSamba共有はまだ書き込めません。

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 usermyuser

私もこれがmap to guestうまく動作しないようだったことに気づきました。間違ったユーザー名にリンクすると、そのユーザー名をアカウントにマップし、myuserアクセスを許可するのではなく拒否されますStuff

誰かがこれがうまくいかない理由を見つけるのに役立ちますか?

似たような質問を検索してみるとこんな内容がありました。777 権限なしで Windows で書き込み可能な Samba 共有を作成する方法しかし、許容される解決策はを使用することですforce user。これは私がやっていることですが、何らかの理由でまだ機能しません。

答え1

私はあなたと同じ問題に直面したと思います。何らかの理由でforce userグループ書き込み権限が必要なようです。ただし、グローバル書き込み権限は必要ないようです。回避策として、777権限の代わりに660/770権限を削除できるはずです。これはセキュリティを低下させません。ファイルを書き込み可能にする必要があるため、ファイルを外部のSambaに移動するのは面倒です。

これを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を再起動します。上記のコマンドは、現在存在するファイルとSambaを介して新しく作成されたファイルのすべてのファイルを660に設定し、すべてのディレクトリを770に設定します。force groupデフォルトでは、デフォルトグループと一致する必要はありませんforce user。また、ここでは世界の権限を完全に拒否しています。世界中で読むことができるようにするには、0664、0775、およびugw + Xを使用できます。

残念ながら、グループ書き込み権限がないと機能しません。これはサンバのバグだと思います。最近サンババーグ #14617削除でファイルをブロックしますforce user。これは別の関連バグかもしれませんが、報告するのに十分な知識がありません。 0644/0755で動作させる方法をご存知でしたら教えてください!

答え2

いいですね。 「smbpasswd -aユーザー名」を使用してユーザーを作成しましたか(rootとして実行する必要があります)?そうでない場合、ゲストアカウント「myuser」は使用できません。これは誰もあなたの共有にアクセスできないことを意味します。認証(smb.confベース)は次のように機能します。ユーザーがSambaに接続し、そのユーザーが既知で正しいパスワードを入力すると、共有にアクセスできますが、保存した内容はすべて所属しているかのように保存されます。既知のユーザーですが、間違ったパスワードを指定すると、グローバルに「guest=bad user」があるため、接続は自動的に切断されます。 "、共有に"guest ok = yes"があるため、Sambaに接続している未知のユーザーは、共有の近くに到達する前にゲストアカウント"myuser"にマップされます。これは既知のユーザーであり、許可されます。アクセスします。smb.confが短すぎると、「force group」行は必要なく、「force user」はこれを行い、「myuser」には書き込み権限があります。デフォルトの「browseable = yes」を設定する必要はありません。

答え3

私は2日間それを操作しようとしましたが、ludocodeの指示に従うと、ついに共有にアクセスできました。とても感謝しています!

いくつかの追加のコメント(私のスコアはまだ50点未満でコメントできないため、回答としてここに投稿します)

  • ludocodeが正しく述べたように、force groupゲストユーザーのデフォルトグループが正しく設定されている場合は必要ありません。

  • write list = myuserUnixユーザーは1人だけなので、必要ありません。read only = no(またはwrite ok = yes別名writeable = yesaka writable = yes)で十分です。

  • Windowsマシンでアーカイブビットを使用している場合は、たとえばまだバックアップされていないファイルを表示したり、ファイルの作成時間を完全にサポートしたい場合は、2つの追加パラメータを使用することをお勧めします。

     dos filemode = yes
     store dos attributes = yes
    

詳しくはSamba Wiki(DOSファイルモードDOSのプロパティを保存)。 Samba 4.0.9以降、後者はデフォルトです。拡張属性をサポートするファイルシステムを使用する必要があります。 BTRFSはデフォルトでこれをサポートしています。必然ではないuser_xattr/ etc / fstabにマウントオプションとして追加されました。

これが質問に直接答えるわけではないことを理解しています。ただし、smb.conf1ページに簡単なSambaスタンドアロン設定に必要なすべての情報を含む完全なファイルを使用できるようになりました。

関連情報