chcon:无法将部分上下文应用于未标记的文件“/usr/sbin/xrdp”

chcon:无法将部分上下文应用于未标记的文件“/usr/sbin/xrdp”

每当我尝试执行此行来配置 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

你的指挥必须提供更多信息。之前已经讨论过(但我看没有重复项)。

例如,

例如,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=强制执行

相关内容