Linuxホスト(Sambaサーバー)とLinux(クライアント)とWindows(クライアント)の間にSamba共有を展開する必要があります。サーバー上のこのフォルダーは、LinuxとWindowsクライアントコンピューター間で文書を共有します。 Sambaサーバーで2人のテストユーザーを作成しました。これらをveniceとjohnと呼びます。 SambaサーバーでSambaのファイルコンテキストを設定し、ROとRWブールを有効にし、johnとveniceの権限を設定しました。
> getfacl: Removing leading '/' from absolute path names
> # file: samba/docs/
> # owner: venice
> # group: venice user::rwx user:venice:rwx user:john:rwx group::r-x mask::rwx other::r-x default:user::rwx default:user:venice:rwx
> default:user:john:rwx default:group::r-x default:mask::rwx
> default:other::r-x
Samba設定ファイルで次の設定を作成しました。
[smbdocs]
comment = Documents share
path = /samba/docs
browseable = yes
read only = yes
write list = venice john
guest ok = no
printable = no
hosts allow = 10.8.8.51
Sambaインストールを使用している場合
mount.cifs //10.8.8.50/smbdocs -o username=venice,password=pass /samba/docs/
システムレベルの権限とSambaレベルで許可しても、veniceユーザーとjohnユーザーを使用してファイルを作成することはできません。
今ヴェネツィアのuidとgidを使ってマウントすると
mount.cifs //10.8.8.50/smbdocs -o username=venice,password=pass,uid=1001,gid=1001 /samba/docs/
veniceユーザーを使用してファイルを生成できますが、Johnはまだファイルを作成または編集できません。
どんな提案でも
ホストオペレーティングシステムバージョンRHEL 7.4
答え1
RHEL 7にはデフォルトでSELinuxが有効になっています〜するファイルシステムへのSambaのアクセスを制限します。たとえば、カスタムパスにSamba共有を作成する場合は、/samba/docs
そのSELinuxラベルをパスに適用する必要があります。
Sambaや他のサービスがアクセスできるディレクトリが必要な場合は、SELinuxコンテキストタイプタグを使用しpublic_content_rw_t
てSELinuxブール値を設定してsmbd_anon_write
ファイルの所有権を完全に制御するコンテキストで、Sambaがファイルとディレクトリへの書き込みアクセスを許可する必要があります。public_content_rw_t
setsebool -P smbd_anon_write=1
semanage fcontext -a -t public_content_rw_t "/samba/docs(/.*)?"
restorecon -Rv /samba/docs
/samba/docs
他のサービス(httpd
または)を介してftpd
アクセスする予定がない場合は、samba_share_t
代わりにコンテキストを使用できます。これにより、ブール設定は不要です。
semanage fcontext -a -t samba_share_t "/samba/docs(/.*)?"
restorecon -Rv /samba/docs
このsemanage fcontext -a...
コマンドは、新しいラベルを定義する正規表現をSELinux構成に永続的に追加し、restorecon
新しいラベルを物理ファイルシステムに適用します。 SELinuxコンテキストラベルを使用して変更することもできますが、これを行うたびに(バックアップの復元後など)、chcon
変更は失われます。restorecon
最初にタグ情報をSELinux設定に保存すると、バックアップ方法がSELinuxに関連していなくても、デフォルトのSELinux設定もバックアップされている限り、/etc
タグ情報を復元できます。