ftp_home_dirをonにする
今日はとある作業をしていた時にでくわした事象に対しての事です。
みんな大好きSELinuxのid:ishikawa84gさんから、
どこからともなく「setsebool -P ftp_home_dir 1」という
天の声をいただいたので、確認しました。
その時のメモです。
事象など
SELinuxを有効にした環境でftpログインした後、
ログインしたユーザーのホームディレクトリに
ファイルをアップロードしようとしたらうまくいきませんでした。
ftpサーバーはvsftpd、OSバージョンはCentOS5.5です。
SELinuxはtargetedモードです。
# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted
最初に実行したときはこんな感じでした。
$ ftp xxx.xxx.xxx.xxx Connected to xxx.xxx.xxx.xxx 220 (vsFTPd 2.0.5) Name (xxx.xxx.xxx.xxx:[your user]): [your user] 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> bin 200 Switching to Binary mode. ftp> put xxxxxxxxxx local: xxxxxxxxxx remote: xxxxxxxxxx 229 Entering Extended Passive Mode (|||58067|) 553 Could not create file.
「/var/logl/audit/audit.log」にはこんな拒否ログが出ていました。
確かにファイルの作成拒否してます。
type=AVC msg=audit(1292079957.096:66): avc: denied { create } for pid=3300 comm="vsftpd" name="xxxxxxxxxx" scontext=user_u:system_r:ftpd_t:s0 tcontext=user_u:object_r:user_home_t:s0 tclass=file type=SYSCALL msg=audit(1292079957.096:66): arch=40000003 syscall=5 success=no exit=-13 a0=9847e10 a1=8c41 a2=1b6 a3=8c41 items=0 ppid=3289 pid=3300 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=(none) ses=3 comm="vsftpd" exe="/usr/sbin/vsftpd" subj=user_u:system_r:ftpd_t:s0 key=(null)
「setsebool」コマンドを使う
「setsebool」コマンドを使います。
# setsebool -P ftp_home_dir 1
コマンド実行時に「/var/log/audit/audit.log」には
こんな感じでメッセージが出力されていました。
type=SYSCALL msg=audit(1292079957.096:66): arch=40000003 syscall=5 success=no exit=-13 a0=9847e10 a1=8c41 a2=1b6 a3=8c41 items=0 ppid=3289 pid=3300 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=(none) ses=3 comm="vsftpd" exe="/usr/sbin/vsftpd" subj=user_u:system_r:ftpd_t:s0 key=(null) type=MAC_CONFIG_CHANGE msg=audit(1292080026.308:67): bool=ftp_home_dir val=1 old_val=0 auid=1000 ses=3 type=SYSCALL msg=audit(1292080026.308:67): arch=40000003 syscall=4 success=yes exit=2 a0=4 a1=bfdf46c6 a2=2 a3=bfdf46c8 items=0 ppid=3234 pid=3312 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="setsebool" exe="/usr/sbin/setsebool" subj=user_u:system_r:semanage_t:s0 key=(null)
再度実行
「setsebool」コマンドで「ftp_home_dir」をonにしたら、
ファイルをアップロードすることができました。
「/var/log/audit/audit.log」にも特にメッセージは出てなかったようでした。
ftp> put xxxxxxxxxx local: xxxxxxxxxx remote: xxxxxxxxxx 229 Entering Extended Passive Mode (|||29003|) 150 Ok to send data. 100% |***********************************| 6906 KiB 41.35 MiB/s 00:00 ETA 226 File receive OK.
他
「getsebool [boolean]」で設定を確認できますね。
# getsebool ftp_home_dir ftp_home_dir --> on
また少しずつお勉強しようと思います。
今日はこんなところで。