chmod +x 与 sudoing 可执行文件之间的区别

chmod +x 与 sudoing 可执行文件之间的区别

用户可以通过以下方式执行可执行文件: sudoing 允许用户以所有者身份运行可执行文件或通过设置执行位 chmod u+x (或者应该是 chmodA+x?)。

那么,鉴于它们具有相同的效果,即允许除所有者之外的其他人运行可执行文件,两者之间的真正区别是什么?

答案1

我怀疑您的意思是专门询问chmod o+x,以允许other(即既不是指定的user也不是指定的成员的group用户)执行该文件。chmod a+x是 的超集,chmod o+x因为它打开所有 3 个( 、 和 )的user执行group权限other

区别在于程序运行的上下文。程序在sudo指定用户的上下文中运行;没有sudo程序在当前用户的上下文中运行。对于某些脚本来说,这可能根本不重要,但如果涉及到任何涉及用户权限的内容,那就很重要了。也许用一个假设的恶意脚本来解释这一点会有所帮助,该脚本将删除用户主目录中的所有文件:

如果用户alice运行sudo -u bob deleteHomeFiles.sh,那么 bob 主目录中的文件将全部被删除。另一方面,如果直接alice运行deleteHomeFiles.sh,alice 的主目录中的文件将被删除。

答案2

一个相当大的区别是,如果你直接运行一个程序,它会使用你的用户 ID 的权限运行,但是使用sudo,你正在使用其他人的用户 ID 和他们的权限:

考虑一下您常用的系统,/bin/ls任何人都可以执行该系统,并且/root只能由用户本身读取root

$ /bin/ls /root/test
/bin/ls: cannot access '/root/test': Permission denied

$ sudo /bin/ls /root/test
hello.txt

idsudo id.

请注意,用户 ID 不仅在访问文件方面很重要,而且在向进程发送信号等方面也很重要,当然还root可以执行普通用户无法执行的许多其他管理工作。

当然,sudo默认情况下以 root 身份运行程序,但即使您使用 root 权限,区别原则上是相同的sudo -u johnnie

相关内容