login: Could not determine audit condition 解决方案

误操作chown -R 777 /  导致macOS终端出现以下错误:

login: Could not determine audit condition

修改/usr/bin权限之后,login,sudo等命令无法正常使用,导致终端都无法打开。网传的直接删除/usr/bin/login文件的解决方式太粗暴,肯定有隐藏问题。下面是亲测有效的一种恢复方法。

一,开启macOS root权限

启用root 用户详见:

https://www.jianshu.com/p/a6c5131099d8

 

二,进入root账号后修改

以root账号登入系统,执行以下命令:

chown root:wheel /usr/bin/login
chmod 4755 /usr/bin/login

chown root:wheel /usr/bin/sudo
chmod 4755 /usr/bin/sudo

//恢复原有权限
chmod g-w /usr/bin
chmod o-w /usr/bin

如果过程中遇到问题:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

亦或者是:
chmod: changing permissions xxx: Read-only file system

可以尝试:sudo mount -uw /   命令解决

 

命令解读

 

chmod修改的是文件的读、写、执行。
chown修改的是文件的用户或者组的权限。

 

chown root:wheel /usr/bin/login

这个命令把 login 文件的所有者和组别都设置成为 root:wheel。换句话说,login 文件设置成为管理员为所有者 (wheel is the system administrator group in BSD, much like root is the system administrator user)

 

chmod 4755 ,命令详情见:https://chmodcommand.com/chmod-4755/

chmod 755和chmod 4755的区别
from:http://hi.baidu.com/angivo/blog/item/d679237e467f68320dd7da10.html

chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。

一般是三个数字:
第一个数字表示文件所有者的权限
第二个数字表示与文件所有者同属一个用户组的其他用户的权限
第三个数字表示其它用户组的权限。

权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。

所以,chmod 755 设置用户的权限为:

1.文件所有者可读可写可执行
2.与文件所有者同属一个用户组的其他用户可读可执行
3.其它用户组可读可执行

chmod 4755与chmod 755 的区别在于开头多了一位,这个4表示其他用户执行文件时,具有与所有者相当的权限。

例如:root用户创建了一个上网认证程序netlogin,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。

但是netlogin执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。

这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

 

四位权限问题,后三位就不说了。
说一下第一位
同样第一位换成二进制也分成三部分
abc

a - setuid位, 如果该位为1, 则表示设置setuid
b - setgid位, 如果该位为1, 则表示设置setgid
c - sticky位, 如果该位为1, 则表示设置sticky
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限.
如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件,
则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
————————————————
版权声明:本文为CSDN博主「赵琦丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23541951/article/details/82019266

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章