不久前,我正在安装 NPM,我注意到当我尝试使用 sudo 运行他们的安装 shell 脚本时,它抛出了一些未找到命令的错误。然而,当尝试在没有 sudo 的情况下运行相同的脚本时,一切都很顺利。
我是一个新的linux用户,但根据我的理解,sudo的权限和可见性是普通用户的超集。
为什么会发生这种情况?
据我了解,sudo 的权限和可见性是普通用户的超集。
权限,是的,但不一定是可见性。PATH应用程序的可见性由环境变量控制
~$ printenv PATH
/home/vanadium/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
当输入命令时,命令解释器首先检查它是否是内部命令,或者该命令是否与磁盘上的可执行文件的名称相对应。然后系统搜索列出的目录,PATH直到找到名称与命令匹配的可执行文件。
正如您在示例中看到的,用户可以在 中拥有其他私有目录PATH,仅当该用户发出命令时才进行搜索。因此,是的,用户帐户可以具有与用户不同的可用命令root,即管理员,即您使用该sudo命令时所承担的角色。
尽管如此,可执行文件的权限最终决定了谁可以运行该文件。如果权限允许,则始终可以通过在提示符上提供完整路径名来运行可执行文件,例如,/usr/bin/mount而不仅仅是文件名,mount. 事实上,root只要设置了可执行位,就可以始终执行,即使仅对所有者而言。
| 归档时间: |
|
| 查看次数: |
3581 次 |
| 最近记录: |