ftp_home_dirをonにする

今日はとある作業をしていた時にでくわした事象に対しての事です。


みんな大好きSELinuxid: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


また少しずつお勉強しようと思います。
今日はこんなところで。