samba関連の備忘録
- selinux設定
- samba経由で作成したファイルに実行可能ビットが立たないようにする
- その他、実行可能ビット関連の設定
- 共有フォルダのsetguid
- zshでumask 002にする設定
selinux設定
ファイル自体のアクセス権やsambaの設定以外にSELinuxの設定も必要。ここから転記。
/homeを共有するための設定
# setsebool -P samba_enable_home_dirs on
共有フォルダ (ここでは /data/samba ) を共有するための設定
# semanage fcontext -a -t samba_share_t "/data/samba(/.*)?" # restorecon -RF /data/samba
共有フォルダがapacheやnginxでもアクセスする場合は別のtype (public_content_t) に設定する必要あり
(未設定時) # semanage fcontext -a -t public_content_t "/data/samba(/.*)?" (samba_share_tなどに一度でも設定した場合) # semanage fcontext -m -t public_content_t "/data/samba(/.*)?" (反映) # restorecon -RF /data/samba
このままだと、samba/httpdともに読み取りのみとなるため、書き込み可とする場合は個別に設定する。
# setsebool -P allow_smbd_anon_write 1 # setsebool -P allow_httpd_anon_write 1
samba経由で作成したファイルに実行可能ビットが立たないようにする
デフォルトでWindowsのarchive属性が実行可能ビットに割当たるので、これをやめる設定。smb.confの[global]セクションに書いておく。
map archive = no
force create mode = 644やforce directory mode = 755 は OR で設定されるので、どこかで通常ファイルに実行可能ビットが立ってしまうとこの設定では落とせない。そこで、map archiveでアーカイブ属性により実行可能ビットがセットされないようにする。
グループ共有する場合はforce create modeやforce directory mode でgroup writableに設定する。
その他、実行可能ビット関連の設定
exeファイルなど、unix上で実行可能ビットがたってなくても実行できるようにする
acl allow execute always = Yes
rwxすべてがセットされている状態でフルコントロール可能にしない設定。詳しくはここ。
acl map full control = no
共有フォルダのsetgid
ディレクトリにsetgidビットを立てておくとその配下のファイル・ディレクトリのgroup idはsetguidビットを立てた親フォルダのgroup idを継承するようになる。ついでにgroup writable (g+w)とumask 002としておくといい感じになる。
# chmod 2775 /data/samba
zshで umask 002にする設定
(sambaとは直接関係ないが) ユーザの.zshrcではなくシステムデフォルトで設定する方法。Fedora 35 server editionに入れたzshではなぜかumaskが設定されなかったので、/etc/bashrc の該当箇所を /etc/profile.d/umask.sh としておいた。
$ cat /etc/profile.d/umask.sh # By default, we want umask to get set. This sets it for login shell # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then umask 002 else umask 022 fi