sudo(superuserdo)它允许授权用户以另一个用户的身份执行命令。另一个用户可以是普通用户也可以是超级用户,大多数时候我们用它来执行更高权限的命令。sudo命令与安全策略结合使用,默认的安全策略是sudoers,可以通过/etc/sudoers文件进行配置。它的安全策略具有高度可扩展性,并且可以将您自己的策略制定和分发为插件。它与su命令有何不同?在GNU/Linux中,可以使用su或者sudo命令运行特权命令su(切换用户),使用su命令,我们可以切换到root用户执行命令,但是这种方式有一些缺点。我们需要与其他用户共享root密码由于root用户是超级用户,我们无法提供受控访问我们无法审核用户在做什么sudo以一种不需要泄露root用户密码的独特方式解决了这些问题,普通用户使用自己的密码来执行具有更高权限的命令。可以控制sudo用户的访问权限,这意味着我们可以限制用户只能执行某些命令。记录sudo用户的所有活动。允许sudo访问让我们将普通用户添加为sudo用户。在我的例子中,用户名是linuxtechi1)编辑/etc/sudoers文件$sudovisudo2)添加以下行以允许linuxtechi用户访问sudolinuxtechiALL=(ALL)ALL在上面的命令中:linuxtechi表示用户名优先ALL表示运行从任何机器/终端访问sudoSecond(ALL)表示sudo命令允许以任何用户身份执行ThirdALL表示sudo命令可以作为root执行Executecommandswithelevatedprivileges要以更高的权限执行命令,只需添加单词命令前加sudo,如下所示$sudocat/etc/passwd执行该命令时,系统会询问linuxtechi的密码,而不是root用户的密码。以其他用户身份执行命令除此之外,我们还可以使用sudo以其他用户身份执行命令。例如,在下面的命令中,linuxtechi用户作为devesh用户执行命令-in命令不适用于它。例如命令中内置了一个history,如果你尝试用sudo执行这个命令,会报如下notfound错误$sudohistory[sudo]passwordforlinuxtechi:sudo:history:commandnotfound来克服上述问题,您可以访问rootshell并从那里执行任何命令,包括shell内置命令。$sudobash执行这个命令后,你会观察到提示符号变成了#字符。以sudo用户身份执行上一个命令假设你想以更高的权限执行上一个命令,下面的技巧将会有用$sudo!4上面的命令将以更高的权限执行历史记录中的第4个命令。如果你想使用sudo命令以root权限执行前面的命令然后使用以下命令$sudo!!sudo命令与vim多次我们编辑系统的配置文件,当保存时我们意识到我们需要root权限来做这东西。因为那样我们可能会丢失我们的更改。不用慌,我们可以在Vim中使用如下命令:w!sudotee%上面的命令中:冒号(:)表示我们处于Vim的ex模式感叹号(!)表示我们正在运行shell命令sudo和tee是shell命令百分号(%)表示从当前行开始的所有行使用sudo执行多条命令我们可以用它来执行多条命令,只需用分号(;)分隔命令如下$sudo--bash-c'pwd;hostname;whoami'在上面的命令中:双连字符(-)停止处理命令行开关bash表示要用于执行的shell名称要执行的命令后跟–c选项以在第一次运行时无需密码运行sudo命令每次执行sudo命令,会提示输入密码,密码默认缓存15分钟。但是,我们可以覆盖此行为并使用NOPASSWD关键字禁用密码身份验证,如下所示。例如,只允许echo和ls命令执行linuxtechiALL=(ALL)NOPASSWD:/bin/echo/bin/ls使用sudo命令向文件追加行或文本字符串在某些情况下,我们需要有sudoprivileges将几行附加到本地用户的现有文件中$echo'text-string'|sudotee-a
