每当我尝试执行此行来配置 SELinux 以安装 xrdp 时这教程:
# chcon --type=bin_t /usr/sbin/xrdp
# chcon --type=bin_t /usr/sbin/xrdp-sesman
我收到这些错误:
chcon: can't apply partial context to unlabeled file '/usr/sbin/xrdp'
chcon: can't apply partial context to unlabeled file '/usr/sbin/xrdp-sesman'
我使用的是 CentOS 7.2 64 位。
答案1
我也在 CentOS 7 上,这对我有用:
chcon -h system_u:object_r:bin_t:s0 /usr/sbin/xrdp
chcon -h system_u:object_r:bin_t:s0 /usr/sbin/xrdp-sesman
答案2
你的指挥必须提供更多信息。之前已经讨论过(但我看没有重复项)。
例如,
- 在chcon:使用 SELinux 安装 nagios 时无法将部分上下文应用于未标记的文件,Sergei Lomakov 指出,首先需要使用 来标记文件
semanage
。 - 在Linux chcon:无法将部分上下文应用于未标记的文件,建议的解决方案使用命令中的完整类型
chcon
(但您必须首先使用 确定类型ls -Z
)。完整类型的:
名称中通常包含冒号 ( ),因为它代表层次结构。
例如,ls -lZ
为示例列表提供以下标签:
$ ls -lZ msginit msgmerge msgunfmt
-rwxr-xr-x. root root unconfined_u:object_r:bin_t:s0 msginit
-rwxr-xr-x. root root unconfined_u:object_r:bin_t:s0 msgmerge
-rwxr-xr-x. root root unconfined_u:object_r:bin_t:s0 msgunfmt
并chcon
期待unconfined_u:object_r:bin_t:s0
在其论证中出现类似的情况。 Abin_t
只是部分信息。
引用的程序应该有效,并且使用chcon
多余的。检查我的 CentOS7,我碰巧已经xrdp
安装了,并且列表显示
$ ls -lZ xrdp xrdp-chansrv xrdp-sesman xrdp-sessvc
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp-chansrv
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp-sesman
-rwxr-xr-x. root root system_u:object_r:bin_t:s0 xrdp-sessvc
该system_u
字段是SELinux用户,该object_r
字段是角色,bin_t
是个类型是s0
(默认)等级。中的文件/usr/sbin
从显示的模式获取其上下文 semanage fcontext -l
(但有很多匹配项)。在遵循该指南时,您可能已经删除了xrdp
- 甚至 的模式/usr/sbin
。但是,您可以通过使用以下命令指定用户和角色,在命令中更加明确chcon
:
chcon -u system_u -r object_r --type=bin_t /usr/sbin/xrdp
chcon -u system_u -r object_r --type=bin_t /usr/sbin/xrdp-sesman
或者,如果模式完好无损,但(例如)您移动了文件而不是安装它们,则可以使用以下命令修复内容
restorecon -v /usr/sbin/xrdp
restorecon -v /usr/sbin/xrdp-sesman
进一步阅读:
答案3
这可能会对某人有所帮助,所以这是我简单的 2 美分。如果您以某种方式禁用了 selinux,您可能会遇到此问题。要解决这个问题,只需将 selinux 恢复正常即可。打开 /etc/selinux/config 并更改
SELINUX=禁用
回到
SELINUX=强制执行