我按照说明安装 WSJT-X(一款无线电软件),它让我将一个名为的文件移动sysctl.conf
到我的桌面并运行以下终端命令:
sudo cp $HOME/Desktop/sysctl.conf /etc/
sudo chmod 664 /etc/sysctl.conf
sudo chown root:wheel /etc/sysctl.conf
运行这些命令后,我的终端显示变为如下形式:
而以前我的名字在美元符号之前。此外,我的日期和时间现在显示不正确(设置为 8 小时后)。有人能帮我找出我做错了什么以及如何修复它吗?
如果有帮助的话,我想我不小心在第二个命令中插入了一个空格,所以它变成了
sudo chmod 664 /etc/ sysctl.conf
答案1
(注意:我是 Linux 用户,没有使用过 macOS。因此我的回答请谨慎对待)。
从sudo chmod 664 /etc/
目录中删除执行位后,您实际上无法访问(读取、写入)其中的项目。这包括(但不限于):
/etc/profile
,其中 commonPS1
定义为,/etc/localtime
,/etc/timezone
或者 macOS 使用的任何版本。
您需要sudo chmod 755 /etc
恢复此操作。不幸的是,没有访问权限/etc/sudoers
可能会阻止您直接执行此操作。如果您非常幸运,您仍然有一个以 root 身份运行的 shell(在出现问题之前出于某种原因启动的),您可以在其中调用而chmod 755 /etc
无需sudo
。但您可能没有那么幸运。
如果同样的问题出现在我的 Kubuntu 上(没有加密或类似的东西),我会启动实时 USB Linux,挂载文件系统并修复权限。我不知道你是否能像这样轻松地“从外部”修复 macOS。
这个(有点老套的)问题处理类似的问题,sudo
由于权限错误而无法工作/etc/sudoers
。答案中可能的解决方案:
这可能是少数需要从磁盘工具运行“修复磁盘权限”的情况之一。
如果这不起作用,请按照 […] 建议启动到单用户模式来修复它
这个看起来很有希望:
另一种方法是使用
Automator.app
。创建一个包含以下内容的新工作流:
do shell script "chmod 0440 /etc/sudoers" with administrator privileges
当您运行它时,它会要求您输入密码并且(假设您是管理员)它会修复它。
如果您搞乱了父目录的权限(例如,将其设置
/
为 755 以外的值),这也会起作用。
请记住,您需要chmod 755 /etc
,所以不要盲目粘贴上述代码。您的案例属于“父目录权限混乱”。
答案2
您需要拥有+x
目录的权限(“执行/遍历”)才能访问里面的任何对象,无论是否直接拥有对这些对象的读取权限。
您的chmod 664 /etc
命令通过将权限设置为u=rw,g=rw,o=r
(八进制数解码为)来删除它,所以现在 1)shell 无法访问 /etc/profile 和 /etc/bashrc,其中保存了系统范围的 PS1 设置;2)系统无法访问 /etc/localtime 或其 macOS 等效项,其中保存了系统范围的时区参数。
在目录上使用chmod 775
或来恢复它。(7 和 5 解码为 =rwx 和 =rx。)chmod a+x
(实际上,即使在 macOS 上,我不确定 /etc 是否应该是可组写入的,因此您可能还想要chmod 755
- 或者额外的chmod g-w
。)