使用 sudo 执行命令与以 root 用户身份执行命令有什么区别?

使用 sudo 执行命令与以 root 用户身份执行命令有什么区别?

我对 Linux 相当陌生,直到现在,我一直认为与 exectuing assudo <command>相同。我最近玩了一下这个命令,发现了一个细微但令人困惑的差异。<command>rootls

执行时sudo ls -lap(在根目录中),我得到以下输出:

须藤 ls-lap

与当我ls -lap作为root(或作为普通用户)执行时没有 sudo):

LS-圈

除了明显但不重要的颜色差异之外,如果您仔细观察,您会发现该-p选项(显示后目录)在使用 执行命令时/不起作用。linkssudo

两者之间有实际区别吗?或者这是一个错误?
不管怎样,这是否意味着这两个命令的处理方式不同?

答案1

ls是一个别名,并且sudo不知道这一点。当您将用户切换为 时root,您的交互式 shell 会运行其启动脚本并设置相关别名。

尝试运行alias lsroot, not通过 sudo,查看对应的命令。

符号链接输出的差异似乎是向输出添加颜色的副作用:

ls -lp --color=tty /

v.

ls -lp --color=never /

会表现出同样的差异。

相关内容