我不是网管轻松掌握LinuxSudo命令
sudo(superuserdo)它允许授权用户作为另一个用户执行命令。另一个用户可以是普通用户或超级用户,大多数时候我们使用它来执行具有更高权限的命令。
sudo命令与安全策略结合使用,默认安全策略是sudoers,并且可以通过etcsudoers文件配置。它的安全政策是高度扩展的,可以制定和分发自己的策略作为插件。和su命令有何不同?
在GNULinux中,可以使用su或者sudo命令运行提升特权的命令
su(switchuser),使用su命令,我们可以切换到root用户执行命令,但是这种方法有一些缺点。我们需要与另一个用户共享root密码由于根用户是超级用户,我们无法提供受控访问我们无法审计用户正在做什么
sudo以独特的方式解决了这些问题不需要泄露root用户的密码,普通用户使用自己的密码执行更高权限的命令。可以控制sudo用户的访问权限,这意味着我们可以限制用户只执行某些命令。记录了sudo用户的所有活动。允许sudo访问
让我们将普通用户添加为sudo用户。在我的例子中,用户名是linuxtechi编辑etcsudoers文件sudovisudo添加以下行以允许linuxtechi用户访问sudolinuxtechiALL(ALL)ALL
在上面的命令中:linuxtechi表示用户名第一个ALL表示运行从任何机器终端访问sudo第二个(ALL)表示sudo命令允许以任何用户执行第三个ALL表示sudo命令可以用root身份执行使用提升的权限执行命令
要以更高的权限执行命令,只需在命令前加上sudo字,如下所示sudocatetcpasswd
执行该命令时,系统将询问linuxtechi的密码,而不是root用户的密码。以另一个用户执行命令
除此之外,我们还可以使用sudo作为另一个用户来执行命令。例如,以下命令中,linuxtechi用户以devesh用户执行命令sudoudeveshwhoami〔sudo〕passwordforlinuxtechi:devesh内置命令行为
sudo的局限性之一是Shell内置的命令不能与它一起工作。例如,命令中内置了历史记录,如果您尝试使用sudo执行此命令,则notfound错误将报告如下sudohistory〔sudo〕passwordforlinuxtechi:sudo:history:commandnotfound
为了克服上述问题,可以访问rootshell并从那里执行任何命令,包括shell内置的命令。sudobash
执行此命令后,您将观察到提示符号变为字符。以sudo用户执行先前的命令
假设您想要以更高的权限执行前面的命令,那么下面的技巧将是有用的sudo!4
上面的命令将以更高的权限执行历史记录中的第4个命令。
如果您想使用sudo命令以root权限执行先前命令,则使用以下命令sudo!!sudo命令与vim
很多时候,我们编辑系统的配置文件,在保存时,我们意识到我们需要根权限来做这件事。因为这样我们可能会失去我们的变化。没有必要恐慌,我们可以在Vim中使用以下命令:w!sudotee
在上面的命令中:Colon(:)indicatesweareinVim’sexmodeExclamation(!)markindicatesthatwearerunningshellcommandsudoandteearetheshellcommandsPercentage()signindicatesalllinesfromcurrentline使用sudo执行多个命令
我们可以使用它执行多个命令,只需使用分号(;)分隔命令,如下所示sudobashcpwd;hostname;whoami
在上面的命令中:Doublehyphen()stopsprocessingofcommandlineswitchesbashindicatesshellnametobeusedforexecutionCommandstobeexecutedarefollowedbycoption在没有密码的情况下运行sudo命令
当第一次执行sudo命令时,它将提示输入密码,默认情况下,密码将缓存15分钟。但是,我们可以覆盖此行为并使用NOPASSWD关键字禁用密码身份验证,如下所示linuxtechiALL(ALL)NOPASSWD:ALL限制用户执行某些命令
为了提供受控访问,可以限制sudo用户只执行某些命令。例如,只允许执行echo和ls命令linuxtechiALL(ALL)NOPASSWD:binechobinls使用sudo命令将行或文本字符串附加到文件中
在某些情况下,我们需要在具有sudo权限的本地用户的现有文件中追加几行
echo‘textstring’sudoteea
示例如下所示pkumarlinuxtechi:echodebhttp:ftp。de。debian。orgdebianbustermaincontribsudoteeaetcaptsources。listdebhttp:ftp。de。debian。orgdebianbustermaincontribpkumarlinuxtechi:
也可以使用如下方法sudoshcechodebhttp:ftp。de。debian。orgdebianbustermaincontribetcaptsources。list深入了解sudo
让我们挖掘更多关于sudo命令的信息来深入了解它。lslusrbinsudorwsrxrx1rootroot145040Jun132017usrbinsudo
如果仔细观察文件权限,sudo上的setuid位是启用的。当任何用户运行这个二进制文件时,它将使用拥有该文件的用户的特权运行。在本例中,它是root用户。
当不使用sudo命令执行id命令时,会显示linuxtechi用户的id。iduid1002(linuxtechi)gid1002(linuxtechi)groups1002(linuxtechi)
当使用sudo命令执行id命令时,会显示root用户的id。sudoiduid0(root)gid0(root)groups0(root)我的开源项目
开源在线网课系统coursetencentcloud(酷瓜云课堂gitee仓库)coursetencentcloud(酷瓜云课堂github仓库)