在 centos(我相信许多其他发行版)上,默认情况下,所有用户的 vi 都别名为 vim。但是,无论出于何种原因,对于 root 用户,vi 都没有别名为 vim,当我在使用 sudo 时忘记输入 vim 而不是 vi 并且没有我认为理所当然的 vim 功能时,这总是让我烦恼,比如默认语法高亮。
我了解别名是如何完成的,以及为什么当我 sudo/su. 我在问是否有理由使这种行为成为可取的行为,即为什么 centos 开发人员也没有为 root 添加别名?对于普通用户不存在的 root 用户的 vim 别名是否存在某种安全或功能问题?是否有历史原因 root 不应该有这个别名?
与此同时,我为我维护的服务器上的 root 用户添加 vi 的默认别名到 vim 有什么害处吗?如果我要这样做,是否有我应该使用的更好的方法来解决它(或者更准确地说,出于安全原因我应该避免使用的任何方法?)
像这样的决定通常取决于对易于维护和安全性的担忧,尽管其他答案中提到的安全性是一个因素。一些系统管理员不希望超级用户的交互环境出现奇怪的未记录的个人定制。他们希望事情以标准的、记录在案的方式运行;没有令人讨厌的惊喜。他们还希望避免在全新安装、系统升级等之后重新应用个人定制。
在.
vi
_ _ _ _ _ 前者是一个可选的“增强型 VIM”,可以存在,其中编译了各种功能,而后者是“小 VIM”,启用了很少的可选功能。(Ubuntu 也有类似的想法。)人们通常希望命令表现得像标准命令,尤其是在以超级用户身份执行操作时。他们不希望某些增强的神马功能或插件以令人惊讶的方式改变东西;或者,更糟糕的是,闯入救援或紧急模式。他们不想要所有的vim
/usr/bin/vim
/bin/vi
vi
vi
vi
参考 DOCO,有人在超级用户咨询的情况下进行关键工作,因为这些事情是非常错误的。vi
这意味着当管理员请求时调用vi
,而不是vim
。换句话说:尽管您已经将各种 VIM 自定义和扩展视为理所当然,但其他一些人倾向于认为超级用户帐户没有此类自定义和扩展是理所当然的。他们将这种假设构建到他们编写的 WWW 页面、问答答案和书籍中。他们形成习惯,并将超级用户运行时所获得的知识从一个系统带到下一个系统
vi
。(具有讽刺意味的是,有时这是因为它具有 VIMisms。从 Linux 操作系统到 FreeBSD 的人们必须学习的一件事vi
是 nvi,而不是任何 VIM 风格。)此外:他们希望不必记住进行
/root/.vimrc
硬盘/root/.gvimrc
更换、系统重新安装等操作;除了系统范围的配置文件。另一个体现这种想法的例子是
toor
FreeBSD 上的帐户。它是超级用户,但具有类似 Bourne 的 shell(实际上是 Almquist shell)。该root
帐户具有 TENEX C shell,并且由于有数十年的 BSD doco 显示超级用户使用 C shell 驱动系统,因此人们给出的建议是保持原样,并toor
用于类似 Bourne 的交互。当以 身份登录时,C shell 是预期的环境root
,如果它为拥有(例如)一本用于管理 FreeBSD 的 C shell 指令书的超级用户提供了一个类似 Bourne 的 shell,那么就会出现欢闹甚至潜在的灾难。进一步阅读
vi
”。 壳牌和实用程序。单一 UNIX 规范。第 7 期。IEEE 1003.1。2018. 公开组。这个问题接近于征求个人意见。允许管理员以适合他们的方式设置系统,如果默认设置让您烦恼,我建议您更改它。
然而...
root 用户不是普通用户,最好仔细考虑以 root 身份登录时在交互式提示下执行的每个操作。为了提醒管理员他们是以 root 身份登录的,大多数 shell 中的 root 提示符默认与特权用户的默认提示符不同,实际上,在 root 提示符下工作应该提醒您实际上不应该在那里很长,如果有的话1。
一个原因可能
vi
不是我的别名,即在共享库已经离开(由于磁盘故障或意外删除)的情况下,可能是一个静态可执行文件,无论如何都可以工作(或者它可能与来自另一条路径的库链接) ,允许管理员编辑文件以使系统的其余部分重新启动并运行。vim
vi
同样的道理也适用于普通用户可能喜欢的其他“花里胡哨”。在管理员可能被迫启动交互式 root shell 的情况下,额外功能的依赖关系可能根本不可用。
1在 root 提示下工作,您没有输入的命令的审计跟踪。因此,最好使用诸如
sudo
执行与 root 相关的任务之类的工具,因为sudo
默认情况下会记录谁在何时做什么。这在多人拥有管理员权限的系统和公司系统上尤为重要。如果您注意到 root 与用户的对比,
echo $PATH
您会看到一个大大缩短的列表……默认情况下它基本上是一种开箱即用的 linux默认安全状态的安全心态......
在大多数情况下,为 root 帐户添加别名并没有什么坏处。请注意您的操作方式和位置。安全心态假设可能会发生这样的事情,这将是一种攻击媒介,也是入侵系统的众多手段之一。安全心态 = 最小化或防止任何/所有攻击方法,因此没有别名。
fwiw,我使用 SLES 并使用过 RHEL。我更喜欢编辑
/etc/bash.bashrc.local
和/etc/csh.cshrc.local
添加我的别名,这适用于非特权用户。并且这两个文件是拥有root.root
权限的-rw-r--r--
。对于 root,我只需编辑/root/.bashrc
.别名不会绕过基本的安全策略,如果他们这样做了,那么问题不在于别名,而是其他东西。