我已经使用终端一段时间了,有时(实际上,很多次)我使用一个命令,例如:
cp /etc/test ~/testFolder/
我收到此错误:
cp: cannot open `/etc/test` for reading: Permission denied
就在那时,我记得我忘记了sudo
之前的命令,因此我按向上箭头,然后按CTRL+A转到行首并在sudo
那里插入一个:
sudo cp /etc/test ~/testFolder/
还有更糟糕的情况vim
,你编辑一个文件时忘记了sudo
命令,程序启动时没有看到警告,你编辑了整个文件,最后却无法保存它!
当你意识到自己要这么做很多次时,就会变得很烦人,特别是如果你像我一样习惯不带 来输入命令的话sudo
。有一种方法可以解决这个问题,当你启动终端时,只需输入sudo su
以 root 用户身份使用命令,但有人说这样更容易犯下让你后悔终生的错误。
我的问题是,以 root 身份执行命令的最佳做法是什么?sudo
每次使用都会错过它,还是自动使用sudo bash
并有破坏整个系统的风险?
答案1
最佳做法是仅在需要时才使用 root。通过使用sudo su
,您实际上是在向魔鬼提供进入王国的权限。起初这让我很恼火,但记住在命令前使用让我避免犯下重大错误。我曾经有过在工作环境中使用 毁掉一切sudo
的经历。sudo su
讲故事的时间
我们使用 CentOS 服务器来运行应用程序。该服务器很旧,由于硬件已损坏/即将报废,因此已转换为虚拟机。我们发生了 raid 损坏,虚拟机也损坏了。我们的备份也损坏了,因此恢复数据的唯一希望是挂载虚拟机并尝试提取所有数据。我使用了它sudo su
并开始工作。当我不小心运行了错误的命令时,我恢复了大约 10%,它擦除了数据库,我们丢失了应用程序和所有数据。我再也没有运行过sudo su
,也不会再运行了。惨痛教训。
答案2
放轻松。首先,rm -rf *
或者像在您的主目录中以普通用户身份运行这样的任何事情都同样是灾难性的。系统可以轻松恢复,但重要的是您的数据。在我使用 Linux 的十五年左右的时间里,我没有遇到过可以通过不使用 root 来避免的重大灾难。
(好吧,如果你是系统管理员,特别是在生产服务器上,那么情况就不同了。只要咬紧牙关,好好做就可以了;请参阅此问题的另一个答案中@jmartin2279 的恐怖故事)。
其次,如果您有不同的提示符(默认情况下,root 提示符以井号结尾,#
但您可以使其变得多彩),它会提醒您,您不是以普通用户身份运行。
第三,您是一个聪明的人,所以您会定期备份。您会这样做,不是吗?您知道人们常说:人分为两种,一种是会备份的人,另一种是会备份的人。
最后,从我的草坪上离开,在过去我们没有臭名昭著的su
或sudo
,我们每个月都要记住二十个随机字符的密码,我们喜欢它!(有时,我们会在一个命令行上聊半个小时,然后才按下“回车键”)
但是,vim
始终会警告您正在编辑只读文件("/etc/passwd" [readonly]
在状态行中)。此外,如果您无法写入文件,您可以始终:w /tmp/whatever
。
答案3
在我使用系统(即古老的 Red Hat)之前sudo
,我曾使用过几种技术来提醒自己何时以 root 身份运行:红色提示符、标题栏中的“root”等。现在我运行后提示符没有任何变化。我从未遇到过以 root 身份运行的问题,而这些问题本可以通过在命令前面sudo
添加一个提示符来解决。sudo
我有一个用于编辑文件的快捷方式。我有一个类似于以下内容的 bash 脚本~/bin/vi
(也是~/bin
我的 $PATH 中的第一个条目):
#!/bin/bash
if [[ ! -w "$1" ]]; then
exec sudo vim "$@"
else
exec vim "$@"
fi
我是根据记忆输入的,所以要小心错误。这个想法是,如果第一个名为 I'd 的文件不可写,那么它会自动使用sudo
。显然这种方法并不完美,但多年来它已经足够好了。