我正在尝试更改上传目录的 selinux 上下文以启用匿名上传。
这是目录路径 /var/ftp/upload
这是默认上下文
[root@server ftp]# ls -Z upload drwxr-xr-x.root root unconfined_u:object_r:public_content_t:s0 上传
我尝试使用此命令来更改目录的类型
[root@server ftp]# semanage fcontext -a -t public_content_rw_t upload
[root@server ftp]# restorecon -v 上传
它没有改变,这里有什么错误?
[root@server ftp]# ls -Z pub drwxr-xr-x.root root unconfined_u:object_r:public_content_t:s0 上传
答案1
semange 和 chcon 之间的区别在于,chcon 是“临时的”,如果系统重新标记,文件/目录中存在的上下文将会丢失,而使用 semanage 可以使 selinux 上下文持久。
为了使 semanage 工作,您必须提供文件或目录的完整路径,这就是为什么
semanage fcontext -a -t public_content_rw_t upload/
不起作用但semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?
可以;restorecon 不需要完整路径。
答案2
这是默认上下文
[root@server ftp]# ll -Zd upload/ drwxr-xr-x.root root unconfined_u:object_r:public_content_t:s0 upload/
我尝试使用此命令来更改上下文
[root@server ftp]# semanage fcontext -a -t public_content_rw_t upload/ [root@server ftp]# ll -Zd upload/ drwxr-xr-x.root root unconfined_u:object_r:public_content_t:s0 upload/
[root@server ftp]# restorecon -R -v upload [root@server ftp]# ll -Zd upload/ drwxr-xr-x.root root unconfined_u:object_r:public_content_t:s0 upload/
它不起作用,但是这个命令会将上下文写入/etc/selinux/targeted/contexts/files/file_contexts.local
文件中
看这里
# 此文件由 libsemanage 自动生成 # 不要直接编辑。 上传/system_u:object_r:public_content_rw_t:s0
现在我尝试了这个命令(工作指令)
[root@server ftp]# semanage fcontext -a -t public_content_rw_t "/var/ftp/upload(/.*)?”
[root@server ftp]# restorecon -R -v upload restorecon 重置 /var/ftp/upload 上下文 unconfined_u:object_r:public_content_t:s0->unconfined_u:object_r:public_content_rw_t:s0
如今情况已经改变。 [root@server ftp]# ll -Zd upload/ drwxr-xr-x.root root unconfined_u:object_r:public_content_rw_t:s0 upload/
但我真的不知道它为什么起作用,看看命令的区别。
我在手册页中找到了答案man ftpd_selinux
semanage fcontext -a -t public_content_rw_t“ / var / ftpd / incoming(/.*)?”
答案3
根据这一页:
该
file_contexts.local
文件存储上下文未找到新创建的文件和目录file_contexts
。
这就是您在中找到日志消息的原因file_contexts.local
。
使用 更改 SELinux 上下文时
semanage fcontext -a
,使用完整路径到文件或目录,以避免在文件系统重新标记后或restorecon
运行命令后文件被错误标记。
这是使用完整路径进行正确重新标记的提示。
答案4
尝试
chcon -t public_content_rw_t /var/ftp/upload
它会起作用的。