我正在尝试学习 Selinux。使用沙箱并使用 VSFTPD 进行试验,我有一个在 Centos 中运行的 vsfptd 服务器。我有匿名用户将文件放在 /var/ftp/incoming 中。在远程机器上,我可以让用户成功登录,但无法将文件放在删除 vsftpd 服务器上:
$ftp mysql_server
Connected to mysql_server (192.168.1.31).
220 Welcome to blah FTP service.
Name (mysql_server:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer ftp> put atd
local: atd remote: atd
227 Entering Passive Mode (192,168,1,31,19,161).
553 Could not create file.
ftp>
在 VSFTPD 服务器上,aureport -a 报告显示:
[root@mysql_server ftp]# aureport -a
AVC Report
========================================================
# date time comm subj syscall class permission obj event
========================================================
4. 04/08/2013 13:30:36 vsftpd unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 21 dir write system_u:object_r:public_content_t:s0 denied 28
5. 04/08/2013 13:34:57 vsftpd unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 2 dir write system_u:object_r:public_content_t:s0 denied 47
我检查了目录,文件上下文看起来不错,所以我不明白为什么 Selinux 不允许 vsftpd 写入传入目录:
[root@mysql_server ftp]# ls -Z
drwx-wx---. root ftp system_u:object_r:public_content_t:s0 incoming
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
[root@mysql_server ftp]#