意外将 root 帐户上的 SELinux 上下文修改为 Staff_u

意外将 root 帐户上的 SELinux 上下文修改为 Staff_u

我在我的 CentOS 6.5 VM 上以普通帐户(测试)登录并sudo su - root运行usermod -Z staff_u test

但看起来它也将我的根帐户更改为staff_u,现在我陷入困境,无法将其更改回来。

bash-4.1# id
uid=0(root) gid=0(root) groups=0(root) context=staff_u:staff_r:staff_t:s0-s0:c0.c1023
bash-4.1# id -Z
staff_u:staff_r:staff_t:s0-s0:c0.c1023
bash-4.1# bash
bash: /root/.bashrc: Permission denied
bash-4.1# setenforce 0
setenforce:  setenforce() failed
bash-4.1# sudo setenforce 0
setenforce:  setenforce() failed
bash-4.1# cd .ssh
bash: cd: .ssh: Permission denied
bash-4.1# cd 
bash: cd: /root: Permission denied
bash-4.1# usermod -Z unconfined_u root
usermod: cannot lock /etc/passwd; try again later.
bash-4.1# cat /etc/shadow
cat: /etc/shadow: Permission denied
bash-4.1# 

直接 root 登录被禁用,但我认为这不会有任何帮助,你知道吗?它只是一个虚拟机,并不重要,但想知道如何解决这个问题。

答案1

尝试遵循并修复了它,实际上比我想象的要容易

  • 重新启动进入单用户模式
  • 更改了 /etc/selinux/config 文件中的 selinux=permissive
  • 重置 root 密码,因为我不记得了
  • 重启
  • 以 test(staff_u) 身份登录并运行sudo semanage login -a -s unconfined_u root
  • 在 /etc/selinux/config 文件中将 selinux 更改回强制执行
  • 重启

问题已解决。

相关内容