完全な 777 アクセスを許可せずに、Windows PC が Samba サーバー経由で Linux ファイルを変更できるようにするにはどうすればよいでしょうか?

完全な 777 アクセスを許可せずに、Windows PC が Samba サーバー経由で Linux ファイルを変更できるようにするにはどうすればよいでしょうか?

最近、Linux サーバーに Samba をセットアップし、Windows マシン上の共有ドライブを簡単に見つけましたが、追加の権限を要求されたため、そのドライブにファイルをコピーできませんでした。

777 の権限でサブフォルダーに書き込むことができましたが、メイン ドライブの権限は 775 でした。

777 権限は非常に安全ではないとアドバイスされているので、Linux サーバーでユーザー レベルの権限を持たない Windows からブラウズするユーザーを含めるようにグループを変更するにはどうすればよいでしょうか?

これはホームネットワークであり、Samba サーバーへのアクセスは、ネットワーク外部からのアクセスを防止するグローバル設定によって制限されています (/etc/samba/smb.conf に次の行を追加します)。

[global]
hosts allow = 192.168.0.
hosts deny = ALL

したがって、私はネットワーク内のセキュリティについては心配していません。ユーザーが 192.168.0.x サブネット上にいる場合は、そのユーザーが正当であると想定し、現時点ではそれ以上の認証手順を追加したくありません。

答え1

ご要望はわかりました。LAN 上のすべてのユーザー/コンピューターは「ゲスト」であり、ファイル共有への完全な「読み取り/書き込み」アクセス権を持っている必要があります。

手順:

Samba の設定を確認してください。共有には以下が含まれていますか?

[Share]
available = yes
browsable = yes
public = yes
writeable = yes

POSIX 権限を確認します。例: ls -lh:

drwxrws---+ 1 nobody nogroup  252 May 12 14:55 Music

そこにスティッキー ビットを設定する必要があります。そうしないと、ファイル共有は Windows で期待どおりに動作しません。chmod 2770 [dir]... すべてのディレクトリにアクセス許可を適用するには、find を使用します。例

find . -type d -exec chmod 2770 {} \;
find . -type f -exec chmod 2760 {} \;

また、グループを、Samba のデフォルトのゲスト グループである nogroup に設定する必要があります。

最後にACLを使用します取得するそして設定. ユーザー nobody とグループ nogroup のデフォルトを設定する必要があります。これを実行すると、Samba 経由で作成されるものはすべて適切な権限を継承します。ディレクトリ ACL の例を次に示します。

# file: Downloads
# owner: nobody
# group: nogroup
# flags: -s-
user::rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---

デフォルトを実行するには、find を使用します。

find . -type d -exec setfacl -d -m u::rwx {} \;
find . -type d -exec setfacl -d -m g::rwx {} \;

既存のファイルを修正するには:

find . -type f -exec chgrp nogroup {} \;
find . -type f -exec chmod 660 {} \;
find . -type f -exec setfacl -m g::rw {} \;

もっと欲しい !

POSIX グループを変更したくない場合は、ACL を使用してグループを明示的に追加できます。例:

setfacl -m g:linuxgroup:rw [filename]

これらの設定を Ubuntu、Windows、RPi、Android、その他の Linux アプリ間で共有します。

答え2

通常、ネットワーク アクセスを持つすべてのユーザーにディレクトリへの書き込みアクセス権限を与えることは望ましくありません。ユーザー グループ間でファイルを共有するには、多くの場合、よりよい解決策があります。たとえば、すべてのユーザーに独自のネットワーク共有を与え、他のすべてのユーザーには (部分的な) 読み取りアクセス権限を与えるなどです。これが、誰でも書き込み可能なアクセス許可を使用しないように推奨される理由です。

ただし、あなたの場合は、それがまさにあなたが望んでいることのようです。したがって、などの適切な Samba 構成エントリとともにchmod -R a+rwX /path/to/share1 をwritable = yes使用してください。


1 a+rwX1つのll(オーナー、グループ、その他)はrリード儀式、条件付きeバツ叫ぶ権限。「条件付き」とは、実行/トラバース権限が少なくとも 1 つのアクセス グループ (所有者、グループ、その他) にすでに付与されている場合にのみ、実行/トラバース権限が追加されることを意味します。これは、所有者によってすでに実行/トラバース可能なファイルとディレクトリの実行/トラバース権限を拡張する場合に便利です。

関連情報