好吧,我试图设置 ssh 使其正常工作,一个网站说它对权限非常挑剔,并且要使用go-wrx
,~/.ssh
并且/
至少/home
需要具有 go-w 权限。在他们。我看到/
没有任何写入权限,所以我继续go-wrx
运行/
。我应该先阅读该命令的作用,因为现在我的安装已损坏。 GUI 正在慢慢地破坏我点击的更多内容(基本上任何时候它尝试从文件系统加载任何内容)。从终端, acd
到任何地方都会给出权限被拒绝的错误,而 asudo
任何东西都会给出bash: /usr/bin/sudo: Permission denied
。
如果我必须重新安装,我会的,但我那里有一些/var/www
文件有保存。
有没有人知道如何解决这个问题,或者至少知道如何获取文件?
答案1
经验教训:如果您不知道命令的作用,请不要以 root 身份运行命令。如果您以自己的用户身份运行该命令,您将无法控制整个系统。顺便说一句,那个网站是错误的; only ~
,~/.ssh
并且~/.ssh/authorized_keys
不需要是组可写的(请参阅我们的 ssh tag wiki 中的故障排除部分)。
您可以擦除分区,重新安装并从备份中恢复重要文件。 (如果你没有备份,你就是在自找麻烦。一旦你的系统备份并运行,要做的第一件事就是安排一些自动备份系统。不要忘记测试它。)
您运行的命令破坏性不大,您可以从中恢复。主要障碍是您已经禁用了获取 root 访问权限的正常方法。但是,您肯定会错过一些权限,最终导致系统出现轻微损坏。所以我建议您在保存所有重要数据后重新安装。
如果您有 root 密码和控制台访问权限,请切换到文本控制台(按Ctrl+ Alt+ F1),然后以 root 身份登录。如果您没有 root 密码,但有控制台访问权限,请重新启动计算机,当启动菜单出现时,选择“救援”条目(如果有),或者如果没有,则编辑正常启动条目并添加init=/bin/sh
到以 开头的行的末尾kernel
。也可以看看如果我忘记了登录名和密码,如何登录 Linux 笔记本电脑?。如果您有控制台访问权限,另一种可能性是从 Linux Live CD 启动,例如系统救援光盘。如果您没有控制台访问权限,如果您需要获得 root shell 的帮助,请非常精确地解释您的设置(也许可以将其作为一个单独的问题询问)。
现在您已经有了 root shell,恢复最重要的权限。注意细节,如果可能的话尝试复制粘贴。特别是,递归 chmod 需要大写X
,a+rX
并且/dev/*/
不能是大写/dev/*
。/dev
如果重新启动,则不需要中的部件。如果您按照这些步骤操作,系统的任何用户都可以在很短的时间内获得 root 权限;如果除了您自己之外没有其他用户,这不是问题。
chmod a+rX / /* /var/* /dev /dev/*/
chmod a+rw /dev/full /dev/log /dev/null /dev/ptmx /dev/random /dev/tty /dev/urandom /dev/zero
chmod a+rw /var/lock /var/tmp
chmod -R a+rX /etc /bin /lib* /sbin /usr
chmod go-rx /etc/shadow /etc/gshadow /etc/sudoers
chmod go-rx /etc/*key /etc/ssh/*key
chmod g=x,o= /etc/ssl/private
chmod g=r,o= /etc/ssl/private/*
完成这些步骤后,您的系统应该基本上可用,但这不是完整的列表。所以现在,保存所有重要数据,然后重新安装。如果您想冒险,请将系统上的权限与干净系统上的权限进行比较,然后修复剩余的文件。但我不建议以后在生产中使用该机器。