据我所知其他人也有同样的看法 sudo
是一个以管理权限执行的命令。
但是当我运行时rcconf
我可以看到这一行:
[*] sudo Provide limited super user privileges to specific users
那么这项服务的意义何在?或者这到底是一项服务吗?
答案1
简短回答
在重启时撤销用户的“缓存”身份验证操作。它不是守护进程,只是启动时运行的脚本。
详尽的回答
/etc/init.d/sudo
通过检查“启动服务”的初始化文件,您可以轻松地看到它在做什么:
case "$1" in
start)
# make sure privileges don't persist across reboots
if [ -d /var/lib/sudo ]
then
find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
fi
;;
stop|reload|restart|force-reload)
;;
*)
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
因此,基本上,它只是在/var/lib/sudo
系统启动时触碰一些文件,使其具有非常旧的修改时间戳。因此,在服务启动时(在启动时发生),“缓存”的授权身份验证操作将被撤销。
请提供更多关于/var/lib/sudo
目录和时间戳的详细信息,好吗?嗯,从地图上看sudo(8)
:
[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session. As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo Directory containing time stamps
答案2
服务sudo
文件的存在是为了确保重新启动后调用的权限不会保留。基本上,它保证重新启动后,调用 root 权限的普通用户将保留为普通用户。
关于sudo的详细解释
以下所有解释都是为了让阅读该问题的每个人获取所有信息,然后解释服务文件夹中的 sudo 文件在那里做什么。
当你安装 Ubuntu 或任何其他使用sudo
以下区别的发行版时根作为获得“类似 root”权限(管理或超级用户权限)的用户,其使用方式sudo
如下:
以 root 身份
- 对于在会话中运行的每个或所有命令,系统不会要求您输入密码
- 默认情况下,并非所有执行的命令都会被记录
- 系统假定您知道自己在做什么(这就是为什么它不会在您每次执行命令时都要求输入密码的原因)
- 如果你犯了错误,就没有第二次机会或最后一刻的选择
作为 sudo
- 您在会话中运行的每个或所有命令都会被要求输入密码。例如,如果您打开终端并执行需要管理员权限的命令,它会在该会话中询问一次密码,直到您关闭终端或注销。这取决于您使用的命令和位置。它可能会询问一次或多次。
- 您执行的所有命令都将被记录,因为您实际上是在请求使用超级用户特权命令的权限。
- 系统假定您正在临时请求权限,并且管理权限将被暂时借出(直到您注销、关闭终端等)。
- 您可以在最后一刻选择更正任何错误。这将在您被要求输入密码时完成。
为何创建 SUDO
创造须藤之所以这样做,是因为在过去,使用 root 造成的问题比解决方案还多。用户拥有所有权限,这意味着如果他们进行一些春季清理并删除/usr
、/lib
和/bin
文件夹(因为他们认为不需要它们).. 猜猜会发生什么。过去的许多问题都是因为用户不知道使用 root 时拥有的权力。基本上他们有 root 但不了解 Linux、文件系统层次结构、哪些文件是重要的等等。(就像有一辆法拉利却不知道如何在高速公路上驾驶!)
须藤也用于 GUI 应用程序(如更新管理器)需要临时管理权限来执行某些操作时。它们只需要执行特定数量的命令(通常为 1),然后返回到用户级别权限。这是为了避免一直拥有 root 权限,并避免在用户决定删除系统某些重要部分时犯错误。
此外,它提供了更好的安全性,因为 root 用户默认是被禁用的。
最后,如果您有台式电脑或服务器,您确实不希望每个人都是 root,也不希望每个人都拥有所有管理员权限。如果您的妹妹或弟弟开始怀疑如果/boot
遇到DEL密钥会发生什么,那么这是一个非常糟糕的主意。这就是sudo
减少发生坏事的可能性的地方。
什么是为特定用户提供有限的超级用户权限意思是?
sudo 用户或 sudoers 实际上有一个配置文件,告诉他们特定用户的 sudo 命令的限制或开放程度。该文件/etc/sudoers
包含限制或授予 sudo 用户访问权限的所有信息。默认情况下,它具有对所有内容的访问权限,但您可以根据需要配置或限制它。
有关如何man sudoers
在终端中使用 sudoers 文件类型的信息。例如,正常格式为:
用户主机 = 命令
例如cyrex server1 = /bin/ls
将授予主机 server1 中的用户 cyrex 运行 ls 命令的权限。
例如cyrex server1 (root) = /bin/ls
将授予主机 server1 中的用户 cyrex 以 root 身份运行 ls 命令的权限。
例如cyrex ALL = /bin/ls
将授予所有主机上的用户 cyrex 运行 ls 命令的权限。
例如cyrex ALL = ALL
将授予用户 cyrex 在所有主机上运行所有命令的权限。
例如,luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall
将允许我以 root 身份运行 sudokill
和killall
命令,而无需输入密码。