问题描述
我安装了64位的Ubuntu 12.04 LTS(精确穿山甲)。我没有在任何地方为root设置密码。
我刚刚安装了AccuRev SCM软件。它默认安装在/root
文件夹下。现在我尝试在该文件夹上做一些事情。我尝试用su切换到root,但我不知道它的密码。
我应该总是使用sudo或获取默认的root密码,如果有的话?
如何为安装在/root
目录中的软件创建launcher?
最佳解决方案
默认情况下,sudo访问root帐户。
有关该主题的完整讨论以及有关如何设置root密码的信息,请参阅:RootSudo – Community Ubuntu Documentation
有了这个说,你根本不可能需要设置root密码,我建议你使用
sudo -i
或者对于图形应用程序,请使用gksu
gksu nautilus
次佳解决方案
root的密码未在Ubuntu中设置,这意味着默认情况下禁用root登录。
在Ubuntu安装期间创建的用户帐户与所有sudo功能相关联。您可以将sudo
用于在Ubuntu终端中需要root权限的命令。
但是,您可以启用root帐户并为其设置密码。为此,请使用:
sudo passwd root
首先,系统会要求您提供当前用户密码,然后将要求您输入新密码两次(新密码和新密码)作为新的root密码。
有关更多信息,请参阅RootSudo – Community Ubuntu Documentation。
第三种解决方案
默认情况下,Ubuntu不会设置root密码,因此您无法以root用户身份登录。相反,您可以使用sudo以超级用户权限执行任务。
我之前回答过similar question。
虽然您可以为root帐户创建密码,允许您以root身份使用su
登录,但这不是典型的”Ubuntu”处理方式。相反,Ubuntu希望你将使用sudo
。
使用sudo
Sudo是为人们提供root密码以执行超级用户职责的替代方法。在默认的Ubuntu安装中,默认情况下,安装操作系统的人员将获得”sudo”权限。
任何具有”sudo”权限的人都可以通过pre-pending sudo
执行“作为超级用户”的操作。例如,要以超级用户身份运行apt-get dist-upgrade
,您可以使用:
sudo apt-get dist-upgrade
默认情况下,sudo会在执行此操作时要求您提供自己的帐户密码。这有助于安全。这会被记住几分钟,所以如果你有一些与sudo有关的任务,它只会在第一次询问你的密码。
您可以在网上阅读有关Ubuntu的教程的任何地方看到sudo的上述用法。这是另一种选择。
su
apt-get dist-upgrade
exit
优点
使用sudo,您可以提前选择哪些用户具有sudo访问权限。他们不需要记住root密码,因为他们使用自己的密码。如果您有多个用户,则可以通过删除其sudo权限来撤消一个用户的超级用户访问权限,而无需更改root密码并通知每个人新密码。您甚至可以选择允许用户使用sudo执行哪些命令,以及禁止该用户使用哪些命令。最后,如果存在安全漏洞,它可以在某些情况下留下更好的审计跟踪,显示哪些用户帐户遭到入侵。
没有root密码会对root帐户造成暴力攻击:如果允许通过SSH登录,则这是相关的。相反,攻击者需要知道本地帐户名称。
Sudo使用超级用户权限执行单个命令变得更容易。使用su
,您将永久删除超级用户shell,必须使用exit
或logout
退出。这可能导致人们在超级用户shell中停留的时间超过了必要的时间,因为它比退出和以后再次使用更方便。
获得root shell
使用sudo,您仍然可以使用以下命令打开永久(交互式)超级用户shell:
sudo su
…这仍然可以在没有任何root密码的情况下完成,因为sudo
为su
命令提供了超级用户权限。
同样,对于登录shell,您可以使用sudo su -
甚至sudo -i
代替su -
。
但是,在这样做时,您只需要知道您是每个命令的超级用户。这是一个很好的安全原则,不能让超级用户保持超过必要的时间,只是为了减少意外造成系统损坏的可能性(没有它,你只能损坏用户拥有的文件)。
只是为了澄清一下,如果你选择的话,你可以给root用户一个密码,允许以root身份登录,如果你特意想这样做的话。我只是想让你知道更喜欢sudo
的Ubuntu惯例,让你知道有另一种选择。