我正在CentOS5.4服务器上通过xinetd运行TFTPD。我能够访问文件通过tftp罚款,所以我知道服务运行良好。但是,每当我尝试上传一个文件时,我都会收到一条0权限被拒绝的消息。
我已经在/tftpboot中创建了该文件,并将权限设置为666。
我的tftpd配置有详细的日志记录(-vvvv),但我在/var/log/消息中看到的全部内容是:
启动: tftp pid=20383 from=192.168.77.4
我见过一些人提到SELinux可以阻止TFTPD上传,但我希望在日志中看到一些东西。我将SELinux设置为允许模式。
有什么想法吗?
发布于 2010-01-26 12:17:40
遵循http://grimwell.wikispaces.com/tftpd的信息,特别注意“漂洗和重复”,以使selinux策略就位。经过几次尝试,它都开始工作-上传,并创建新的文件。
简言之:
-c -v -s /tftpbootgrep tftp /var/log/audit/audit.log | audit2allow -m tftpwrite来创建selinux策略。确保策略包括写行和创建行。如果不是,请尝试重新编写和创建以在审核日志中生成警报,然后再试一次。grep tftp /var/log/audit/audit.log | audit2allow -M tftpwrite创建可安装策略,然后使用semodule -i tftpwrite.pp安装策略service xinetd reload并尝试使用tftp。太棒了。希望其他人发现这是有用的!
发布于 2010-04-29 23:17:49
我找到了另一个更好的解决这个问题的方法。我不敢相信那些编写selinux策略文件的人不认为人们会需要tftp上传,所以我做了一些调查。我在互联网上找不到这里没有引用的任何东西,但是通过搜索selinux策略,我能够在系统上找到另一个安全上下文,tftp写道。更改/tftpboot的上下文解决了问题。
# sesearch -a | grep tftpdir |grep tftpd_
allow tftpd_t tftpdir_t : file { read getattr };
allow tftpd_t tftpdir_t : dir { read getattr search };
allow tftpd_t tftpdir_t : lnk_file { read getattr };
allow tftpd_t tftpdir_rw_t : file { ioctl read write create getattr setattr lock append unlink link rename };
allow tftpd_t tftpdir_rw_t : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir };
allow tftpd_t tftpdir_rw_t : lnk_file { read create getattr setattr unlink link rename };
# ls -Z /tftpboot/ -a
drwxrwxrwx root root system_u:object_r:tftpdir_t .
drwxr-xr-x root root system_u:object_r:root_t ..
# chcon -t tftpdir_rw_t /tftpboot
# ls -Z /tftpboot/ -a
drwxrwxrwx root root system_u:object_r:tftpdir_rw_t .
drwxr-xr-x root root system_u:object_r:root_t ..发布于 2010-01-25 14:08:23
您是否使用-s选项启动tftpd?有些客户可能期望这样做,例如,将一个名为foo的文件上传到/foo实际上是为了服务器上的/tftpboot/foo。添加-s /tftpboot本质上告诉服务器对该目录执行"chroot“操作。
尝试手动运行tftpd,例如不通过xinetd运行,看看输出是什么。您还可以尝试使用strace运行它,以查看它正试图打开哪些文件,以及它正在进行哪些系统调用。
重复检查/etc/hosts.allow和/etc/hosts.deny,以确保允许流量进入服务器。
关于SELinux,取决于您的系统是如何配置的,如果您启用了auditd,它可能会登录到/var/log/audit/audit.log。见此页第5节。
https://serverfault.com/questions/106007
复制相似问题