sudo服务有什么作用?

据我所知,似乎其他人有相同的意见 sudo是一个执行具有管理权限的命令。

但是当我运行rcconf我可以看到这一行:

 [*] sudo Provide limited super user privileges to specific users 

那么这项服务有什么意义呢? 或者这甚至是一项服务?

简短的回答

在重新启动时撤消用户的“缓存”身份validation操作。 它不是一个守护进程,只是一个在启动时运行的脚本。


广泛的答案

通过检查“启动服务”的初始文件/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一些文件,使其具有非常旧的修改时间戳。 因此,“缓存”授予的身份validation操作将在服务启动时撤消(在启动时会发生)。

有关/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 

存在sudo服务文件以确保在重新引导后不会保留所调用的权限。 基本上它保证在重新启动后,调用root权限的普通用户将保留为普通用户。


关于sudo的详细解释

下面的所有解释都是为每个读取此问题的人提供所有信息,然后解释服务文件夹中的sudo文件在那里做什么。

当您安装Ubuntu或使用sudo的任何其他发行版时, root用户与使用sudo获取“root like”权限(管理员或超级用户权限)的用户之间的区别如下:

作为根

  • 不会要求您为会话上运行的每个或所有命令输入密码
  • 默认情况下,并非所有执行的命令都会被记录
  • 系统假定您知道自己在做什么(每次执行命令时不会要求输入密码的原因)
  • 如果你犯了错误,没有第二次机会或最后一刻选项

作为sudo

  • 系统会要求您输入在会话中运行的每个或所有命令的密码。 例如,如果您打开终端并执行需要管理权限的命令,它将为该会话询问一次密码,直到您关闭终端或注销。 这取决于您使用的命令和位置。 它可能会问一次或多次。
  • 您将执行所有执行的命令,因为您实际上是在请求使用超级用户特权命令的权限。
  • 系统假定您暂时要求许可,临时借出行政权利(直到您退出,关闭终端等)
  • 您有最后一分钟选项来纠正任何错误。 这是在您被要求输入密码时完成的。

为什么要创建SUDO

SUDO的创建已经完成,因为在过去,使用root创建的问题多于解决方案。 用户拥有所有权利,这意味着如果他们做了一些Spring清理并逐字删除/usr/lib/bin文件夹(因为他们认为他们不需要它们)..猜猜会发生什么。 过去的许多问题都是因为用户不知道使用root时的function。 基本上他们有root但不了解Linux,文件系统层次结构,什么文件很重要等等。(有点像法拉利而不知道怎么开车……在高速公路上!)

当他们需要临时管理权限来执行某些操作时,GUI应用程序(如Update Manager)也会使用SUDO 。 他们只需要特定数量的命令(通常为1),然后返回到用户级别权限。 这是为了避免始终拥有root权限,并避免在用户决定删除系统的某些重要部分时出错。

此外,它提供了更好的安全性,因为默认情况下root用户被禁用。

最后,如果您有台式PC或服务器,您真的不希望每个人都是root用户,也不希望拥有所有管理员权限。 非常糟糕的想法,如果你的小妹妹或小兄弟开始想知道如果/boot遇到DEL键会发生什么。 这就是sudo用武之地,可以减少发生不良事件的机会。

为特定用户提供有限超级用户权限意味着什么?

sudo用户或sudoers实际上有一个配置文件,告诉他们如何限制或打开特定用户的sudo命令。 文件/etc/sudoers具有限制或授予sudo用户访问权限的所有信息。 默认情况下,它可以访问所有内容,但您可以根据需要配置或限制它。

有关如何在终端中使用sudoers文件类型man sudoers的信息。 例如,正常格式为:

USER HOST =命令

例如, 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身份为killkillall命令运行sudo而不需要输入密码。

在此处输入图像描述