ここ連日、サーバの再構築をしていた。
復旧のためのサービスで一つ忘れていたことがあった。
sambaの設定だ。
ここでもやっかいなトラブルが発生。
サーバへのアクセスは出来るのだが、ユーザフォルダや共有フォルダにアクセス出来ない。
色々と調べてみると、どうもSELinuxの影響っぽいことが分かった。
んでもって、
setsebool -P samba_enable_home_dirs on
にしろとあったから、このコマンドを実行。
すると、問題なくアクセス出来るようになった。
sambaによるホームディレクトリのアクセスをオンにするような命令だろう。
これは良いのだが、その後にまた問題が生じた。
今度はメールの受信トレイにアクセス出来なくなっている。
先の命令を実行した影響だとは思った。
それしか変更していないし。
なのでoffにしてみたのだが、全然解決せず。
原因が分からないが、恐らくSELinux関連の問題だろうとは分かっていた。
setenforce 0
で一時的にSELinuxを無効にすると、受信トレイにアクセス出来たから。
メールのディレクトリのコンテキストタイプを
mail_home_rw_t
にしたりと色々と試していたのだが上手く行かず・・・。
ひょっとして?と思って、ユーザフォルダの1個上のhomeフォルダのコンテキストタイプを調べてみた。
すると、homeフォルダ自身は
samba_share_t
となっていた。
恐らくこれが原因だろうと思った。
chcon -t user_home_t /home/
で、一時的にコンテキストタイプを変更してみた。
すると問題なく受信トレイにアクセス出来る。
しかしこの設定は一時的なものなので、今度はこれを恒久的なものに変更を試みた。
semanage fcontext -a -t user_home_t /home/
と打って、変更を試みるが、既にコンテキストが設定されていますってエラーで駄目。
しばらく思案してみたが、まずは既にあるコンテキストを削除してみることを思いついた。
semanage fcontext -d /home
で今あるコンテキストを削除した後に、先述のコマンドを打ってみた。
するとエラーなく設定できた。
あとは
restorecon -RF /home
で設定したラベルと適用すれば良い。
ls -Z
で確認してみると、確かにhomeフォルダにuser_home_tが割り当てられている。
メールソフトを立ち上げてみると、問題なく受信トレイが見れる。
home ディレクトリのアクセス権がsambaに限定されていたから、メールサーバがそのフォルダにアクセス出来ずにエラーだったのだろう。
今回のサーバ構築でSELinuxについての知識を深めることは出来た。
基本的な設定のやり方は分かったと思う。
ラベルにはタイプの他にもユーザ、ロール、セキュリティレベルがあって、それぞれに細かく設定できるから奥が深い。
やっかいなトラブルを引き起こすが、セキュリティの事を考えると致し方が無いのだろう。
例えばWebサーバが乗っ取られたとしても、httpのコンテキストラベルが付与されいてるフォルダ以外にはアクセス出来ないから、被害は最小限に抑えられる・・・とのことだ。
今回の経験で、取りあえず動作がおかしかったらSELinuxを疑えと言うことが判明したよ。
コメント
いや、setsebool -P samba_enable_home_dirs onのせっていだけじゃなかったかも。
この設定にたどり着く前に、フォルダのアクセス権をsambaにしたとき、間違えてHomeにも適用しちゃったかもしれない。共有フォルダのアクセス権を設定する際にHomeからやったような気もする。
何はともあれ、これが原因だとは判明した。
って、今確認したら、今度はsambaにアクセス出来なくなってもうた。
何とか両方アクセス出来る設定はないものかのぉ
ふと思いついて、SELinuxを一時的に無効にしてみた。
でも、接続出来ない。
これはSELinuxのせいではない。
systemctl status smb
で状態を確認してみると、sambaが起動していない。
サーバを再起動したのが影響したようだ。
sambaが起動時に立ち上がる設定にするのを忘れていただけ。
うっかりさんでした。
試しにHomeフォルダのコンテキストタイプを削除してデフォルトに戻してみた。
削除した後にrestorecom -RF /homeをするとデフォルトになるようだ。
すると設定されたコンテクストタイプは home_root_t となった。
つまり、samba_share_t と設定されていたい状態から、違う設定に変えられなかったのも、デフォルトから違う設定になっていたからであり、多分、自分で間違えて設定してしまったと思われる。
デフォルトでも問題なくアクセス出来た。