我开始了tftp-server
,但我对这个错误感到困惑:
nisemono ncdy # chmod 777 /tftproot/test
mode of `/tftproot/test' changed to 0777 (rwxrwxrwx)
nisemono ncdy # tftp 192.168.0.2
tftp> get test
Error code 0: Permission denied
Run Code Online (Sandbox Code Playgroud)
复制了 0 个字节的文件...但是为什么权限被拒绝???我不喜欢这个消息。
cat /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftproot
per_source = 11
cps = 100 2
flags = IPv4
}
Run Code Online (Sandbox Code Playgroud)
为什么这会失败?我究竟做错了什么?
可能是selinux的问题。ls -alZ
在目录中做一个。在 RHEL5/Centos5 上,上下文应该是user_u:object_r:tftpdir_t
.
你可以跑来restorecon -Rv /tftproot
修复它。
编辑:
刚刚看到了 Fedora 标签。看来您使用的不是 F16 而是早期版本,因此上述说明应该对您有用。使用 F16,tftproot 位于 /var/lib 中,上下文为system_u:object_r:tftpdir_rw_t:s0
.