考虑来自优秀 XKCD 网络漫画的上述漫画。坐在椅子上的懒汉想让他们的朋友给他们做三明治,但他们没有权力让他们这样做。也就是说,直到他调用强大的 sudo 命令。之后,三明治将以某种方式制作。
虽然在现实生活中对一个人尝试 sudo 可能不会那么有效,但它是克服 Linux 世界中所有障碍的神奇命令。什么是sudo?为什么它甚至存在?答案在于 Linux 如何处理权限。
了解 Linux 用户权限
Linux 因其处理权限的方式而被认为是一种安全的操作系统。虽然 macOS(与 Linux 有着共同的祖先)和 Windows 等操作系统在这方面现在更像 Linux,但开源操作系统仍然有些独特。
了解 Linux 如何处理权限使其成为更容易了解 sudo 命令。所有现代操作系统都具有“管理员”或“root”用户权限级别。如果您有 admin 或 root 帐户,则可以更改任何设置、删除任何数据,并且通常可以对计算机执行任何您喜欢的操作。
这包括您可能不应该做的事情,这些事情可能会导致数据丢失或需要完全擦除和重新安装。
Linux 不会'不要将 root 用户级别的权限设为默认值。相反,您的帐户无法在不提升您的权限级别的情况下访问系统的真正敏感部分。这意味着当您想使用图形界面做一些不寻常的事情时,系统会要求您输入管理员密码。
但是,当您想使用终端 命令行来完成任务时,sudo 是最安全的以及最有效的方法。
Sudo 和终端
在 Linux 中有两种方法可以提升自己的权限。一种是永久以root用户登录。这样做的问题是,任何可能访问计算机的其他人都可能造成严重破坏,甚至您也可能不小心这样做。 Sudo 仅在短时间内提升您的权限以执行其后的特定命令。
Sudo 语法
Sudo 的语法(命令格式)很简单。只需键入“sudo”后跟您要执行的命令。
例如,“sudo apt-get update”将更新相关列表中列出的所有应用程序存储库文件。如果你试图在没有 sudo 的情况下运行它,你会收到一条错误消息,告诉你你没有权限。顺便说一句,这通常是您在全新安装您最喜欢的 Linux 发行版后想要运行的第一个 sudo 命令。
sudo 中的“su”
sudo 中的“su”是“超级用户”的缩写,是一个独立的命令。 “su”命令可让您更改 sudo 将您提升到的用户权限。
尽管 sudo 暂时将您提升为 root,但 su 会将您更改为具有适当权限的另一个用户。这似乎是一个不重要的区别,但有充分的理由更改 sudo 将用户提升到的帐户。
首先,换账号意味着普通用户不知道root密码。其次,有一个所有 sudo 命令的日志,这意味着系统管理员(root)可以查询谁发出了 su 命令。
su 的语法与 sudo 基本相同:
Su USERNAME -c COMMAND
将 USERNAME 替换为所需的用户以运行命令,将 COMMAND 替换为要执行的 Linux 命令。
如果您想以其他用户身份运行多个命令,只需使用:
Su USER
将 USER 替换为所需的用户帐户标识。
如果单独使用 su,Linux 将切换到其他用户帐户,直到您使用“exit”命令。重要的是要记住这个或在该会话中访问终端的下一个用户仍将拥有提升的权限。这就是为什么通常使用 sudo 而不是 su 更好的原因。
Sudo 时间限制
第一次使用 sudo 命令时,您必须输入密码。然后,该密码将在 15 分钟内保持有效。您可以通过运行命令 sudo visudo并将“timestamp_timeout=”更改为更长或更短的值来更改此默认值。但是,除非您有充分的理由延长或缩短 sudo 密码的有效期,否则我们不建议您这样做。
Sudo 选项开关
尽管 sudo 语法是很简单,有几个开关值得了解。这些命令打开附加信息或帮助您控制 sudo 会话:
sudo 中内置了更多选项,您可以使用上面列出的第一个 -h 开关查看它们。
上面的屏幕截图是您使用时的结果
有用的 Sudo 命令
那么每个 Linux 用户都应该知道哪些由 sudo 授权的命令?我们已经介绍了 sudo apt-get update,但也要注意这些:
这些可能是您必须使用的第一个 sudo 命令,但正如您在上面了解到的,任何命令都可以跟在 sudo 之后,但您应该只使用需要更高权限的命令。