AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 468804
Accepted
dsollen
dsollen
Asked: 2018-09-14 06:08:58 +0800 CST2018-09-14 06:08:58 +0800 CST 2018-09-14 06:08:58 +0800 CST

如果它是其他用户的标准,为什么 root 不将 vi 别名为 vim?

  • 772

在 centos(我相信许多其他发行版)上,默认情况下,所有用户的 vi 都别名为 vim。但是,无论出于何种原因,对于 root 用户,vi 都没有别名为 vim,当我在使用 sudo 时忘记输入 vim 而不是 vi 并且没有我认为理所当然的 vim 功能时,这总是让我烦恼,比如默认语法高亮。

我了解别名是如何完成的,以及为什么当我 sudo/su. 我在问是否有理由使这种行为成为可取的行为,即为什么 centos 开发人员也没有为 root 添加别名?对于普通用户不存在的 root 用户的 vim 别名是否存在某种安全或功能问题?是否有历史原因 root 不应该有这个别名?

与此同时,我为我维护的服务器上的 root 用户添加 vi 的默认别名到 vim 有什么害处吗?如果我要这样做,是否有我应该使用的更好的方法来解决它(或者更准确地说,出于安全原因我应该避免使用的任何方法?)

centos vim
  • 3 3 个回答
  • 2404 Views

3 个回答

  • Voted
  1. JdeBP
    2018-09-14T09:58:55+08:002018-09-14T09:58:55+08:00

    像这样的决定通常取决于对易于维护和安全性的担忧,尽管其他答案中提到的安全性是一个因素。一些系统管理员不希望超级用户的交互环境出现奇怪的未记录的个人定制。他们希望事情以标准的、记录在案的方式运行;没有令人讨厌的惊喜。他们还希望避免在全新安装、系统升级等之后重新应用个人定制。

    在. vi_ _ _ _ _ 前者是一个可选的“增强型 VIM”,可以存在,其中编译了各种功能,而后者是“小 VIM”,启用了很少的可选功能。(Ubuntu 也有类似的想法。)人们通常希望命令表现得像标准命令,尤其是在以超级用户身份执行操作时。他们不希望某些增强的神马功能或插件以令人惊讶的方式改变东西;或者,更糟糕的是,闯入救援或紧急模式。他们不想要所有的vim/usr/bin/vim/bin/vivivivi参考 DOCO,有人在超级用户咨询的情况下进行关键工作,因为这些事情是非常错误的。

    vi这意味着当管理员请求时调用vi,而不是vim。

    换句话说:尽管您已经将各种 VIM 自定义和扩展视为理所当然,但其他一些人倾向于认为超级用户帐户没有此类自定义和扩展是理所当然的。他们将这种假设构建到他们编写的 WWW 页面、问答答案和书籍中。他们形成习惯,并将超级用户运行时所获得的知识从一个系统带到下一个系统vi。(具有讽刺意味的是,有时这是因为它具有 VIMisms。从 Linux 操作系统到 FreeBSD 的人们必须学习的一件事vi是 nvi,而不是任何 VIM 风格。)

    此外:他们希望不必记住进行/root/.vimrc硬盘/root/.gvimrc更换、系统重新安装等操作;除了系统范围的配置文件。

    另一个体现这种想法的例子是toorFreeBSD 上的帐户。它是超级用户,但具有类似 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. 公开组。
    • https://askubuntu.com/questions/281886/
    • Dru Lavigne(2009 年 2 月)。 BSD 黑客:100 个工业技巧和工具。奥莱利媒体。国际标准书号 9780596006792。
    • https://unix.stackexchange.com/a/397056/5132
    • 斯文·古克斯 (2017)。 Vi 克隆和主页。古克斯网。
    • 3
  2. Kusalananda
    2018-09-14T06:44:53+08:002018-09-14T06:44:53+08:00

    这个问题接近于征求个人意见。允许管理员以适合他们的方式设置系统,如果默认设置让您烦恼,我建议您更改它。

    然而...

    root 用户不是普通用户,最好仔细考虑以 root 身份登录时在交互式提示下执行的每个操作。为了提醒管理员他们是以 root 身份登录的,大多数 shell 中的 root 提示符默认与特权用户的默认提示符不同,实际上,在 root 提示符下工作应该提醒您实际上不应该在那里很长,如果有的话1。

    一个原因可能vi不是我的别名,即在共享库已经离开(由于磁盘故障或意外删除)的情况下,可能是一个静态可执行文件,无论如何都可以工作(或者它可能与来自另一条路径的库链接) ,允许管理员编辑文件以使系统的其余部分重新启动并运行。vim vi

    同样的道理也适用于普通用户可能喜欢的其他“花里胡哨”。在管理员可能被迫启动交互式 root shell 的情况下,额外功能的依赖关系可能根本不可用。


    1在 root 提示下工作,您没有输入的命令的审计跟踪。因此,最好使用诸如sudo执行与 root 相关的任务之类的工具,因为sudo默认情况下会记录谁在何时做什么。这在多人拥有管理员权限的系统和公司系统上尤为重要。

    • 2
  3. Best Answer
    ron
    2018-09-14T06:58:22+08:002018-09-14T06:58:22+08:00

    我在问是否有理由使这种行为成为可取的行为,即为什么 centos 开发人员也没有为 root 添加别名?对于普通用户不存在的 root 用户的 vim 别名是否存在某种安全或功能问题?是否有历史原因 root 不应该有这个别名?

    如果您注意到 root 与用户的对比,echo $PATH您会看到一个大大缩短的列表……默认情况下

    它基本上是一种开箱即用的 linux默认安全状态的安全心态......

    与此同时,我为我维护的服务器上的 root 用户添加 vi 的默认别名到 vim 有什么害处吗?如果我要这样做,是否有我应该使用的更好的方法来解决它(或者更准确地说,出于安全原因我应该避免使用的任何方法?)

    在大多数情况下,为 root 帐户添加别名并没有什么坏处。请注意您的操作方式和位置。安全心态假设可能会发生这样的事情,这将是一种攻击媒介,也是入侵系统的众多手段之一。安全心态 = 最小化或防止任何/所有攻击方法,因此没有别名。

    fwiw,我使用 SLES 并使用过 RHEL。我更喜欢编辑/etc/bash.bashrc.local和/etc/csh.cshrc.local添加我的别名,这适用于非特权用户。并且这两个文件是拥有root.root权限的-rw-r--r--。对于 root,我只需编辑/root/.bashrc.

    别名不会绕过基本的安全策略,如果他们这样做了,那么问题不在于别名,而是其他东西。

    • 2

相关问题

  • smartmontools - 自动测试是否与运行简短测试相同?

  • systemctl 命令在 RHEL 6 中不起作用

  • 为什么我的交换机没有从指定的池中获取地址

  • 在 CentOS7 GNOME 的 Applications-menu 选项卡中创建自定义菜单

  • 奇怪的路由器与centos 6一起工作[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve