1.为什么没有root密码
尽管您可以为超级用户帐户创建密码,从而允许您以root用户身份登录su
,但值得一提的是,这不是使用Ubuntu(或越来越多的其他发行版)的常用方法。由于某种原因,Ubuntu选择默认不提供root登录名和密码。相反,默认的Ubuntu安装将用于sudo
赋予超级用户特权。在默认的Ubuntu安装中,默认情况下,将为安装OS的人员授予“ sudo”权限。
具有完全“ sudo”权限的任何人都可以通过sudo
在命令之前添加“超级用户”身份来执行某些操作。例如,要apt-get dist-upgrade
以超级用户身份运行,可以使用:
sudo apt-get dist-upgrade
在网上阅读有关Ubuntu的教程时,几乎都会看到sudo的用法。这是替代方法。
su
apt-get dist-upgrade
exit
使用sudo,您可以预先选择哪些用户具有sudo访问权限。由于他们使用自己的密码,因此无需记住根密码。如果您有多个用户,则只需删除超级用户的sudo权限即可撤销其超级用户访问权限,而无需更改root密码并通知所有人新密码。您甚至可以选择允许用户使用sudo执行哪些命令,以及禁止该用户使用哪些命令。最后,如果存在安全漏洞,则在某些情况下可以留下更好的审核记录,以显示哪个用户帐户遭到入侵。
使用Sudo可以更轻松地使用超级用户权限执行单个命令。使用su
,您将永久掉入必须使用exit
或退出的超级用户外壳程序logout
。这可能导致人们在超级用户外壳程序中停留的时间比必要的时间长,这是因为它比注销然后再登录更方便。
使用sudo,您仍然可以选择使用以下命令打开永久(交互式)超级用户外壳程序:
sudo su
...,并且仍然可以在没有任何root密码的情况下完成此操作,因为sudo
它为su
命令赋予了超级用户特权。
同样,su -
您可以使用sudo su -
或其快捷方式代替登录shell sudo -i
。
但是,这样做时,您只需要知道您正在充当每个命令的超级用户即可。这是一个很好的安全性原则,不要以超级用户身份停留超过必要的时间,而只是为了减少意外损坏系统的可能性(如果没有,则只能破坏用户拥有的文件)。
只是为了澄清,你可以,如果你选择,给root用户密码登录,允许以root身份在@奥利的回答说明,如果你特别希望做的事情,而不是这样。我只是想让您了解sudo
代替的Ubuntu约定,并让您知道还有另一种选择。
2. chmod 777 -R命令的问题
您的问题还涉及第二部分:命令的问题sudo chmod 777 -R foobs
。
首先,以下警告表明您的计算机上可能存在严重的安全问题:
sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700
这意味着在某个阶段,您/var/lib/sudo
将成为世界可写的。我想您已经在某个阶段使用了这样的命令了sudo chmod 777 -R /
。不幸的是,这样做会使您几乎破坏了整个系统的所有文件权限。这不太可能是唯一的权限已更改为可写的重要系统文件。从本质上讲,您现在拥有一个容易被黑客入侵的系统,并且将其找回的唯一简便方法是重新安装。
其次,您正在使用的命令:
sudo chmod 777 -R foobs
在本例中的主目录中操作文件时~/Desktop
,不必使用sudo
。无论如何,您在主目录中创建的所有文件都应该可以被修改(如果没有,那将是一件有趣的事情)。
另外,您需要完全意识到更改文件权限的后果,例如以递归方式或对大量文件进行更改。在这种情况下,您需要将设置的文件权限更改为可全局写入。计算机上的任何其他用户或任何故障服务器软件都可以轻松访问以覆盖所有这些文件和目录。
几乎可以肯定,对于您要解决的任何问题,chmod 777 -R [dir]
这都不是合适的解决方案(并且如上所述,有证据表明您也已经对/ var / lib中的系统文件执行过此解决方案,并且我认为还有很多其他问题地方)。
一些基本的经验法则:
如果您只是在自己的主目录,桌面等中弄乱了自己的文件,则永远不需要使用sudo
或超级用户权限。如果这样做,则表明您做错了一个警告信号。
您永远不要手动修改程序包拥有的系统文件。例外:除非您以这些软件包所记录的方式专门进行操作,例如通过修改它们的配置/etc
。这也适用于更改文件权限。如果教程或试图解决问题的方法需要sudo
超级用户权限,而不仅仅是对/ etc /中配置的更改,那么这是一个警告信号,表明您在做错事。
chmod -R 777 whatever
除非您要造成巨大的安全风险,否则几乎不应该这样做。