当前位置: 首页 > Linux

linux中sudo使用技巧总结

时间:2023-04-06 22:45:18 Linux

sudo和su的区别su用于切换用户sudo用于普通用户使用root权限执行命令su命令是当前用户切换到另一个用户使用的命令user,参数为用户名。执行的时候会要求你输入一个密码,这个密码就是你要切换到的用户的密码。sudo的意思是“超级用户做”。它允许经过身份验证的用户像其他用户一样运行命令。其他用户可以是普通用户或超级用户。但是,大多数时候我们使用它来运行具有提升权限的命令。sudo命令工作流程sudo会读取并解析/etc/sudoers文件,找到调用用户以及提示调用用户密码的权限,如果有NOPASSWD标志则跳过密码验证。sudo会创建一个子进程并调用setuid来切换到目标用户最终会在子进程中执行给定的shell命令sudo配置USER/GROUPHOST=(USER[:GROUP])[NOPASSWD:]COMMANDSUSER/GROUP:表示用户或者要授权的组,如果是组应该以%HOST开头:表示允许哪些主机登录用户运行sudo,ALL表示允许任何终端或机器访问。(USER[:GROUP]):表示可以通过sudo切换的用户或组,不能指定组;ALL表示可以切换到系统的所有用户。NOPASSWD:如果指定,用户或组使用sudo时不需要输入密码COMMANDS:表示运行指定的命令,ALL表示允许指定任何命令#允许sudo组执行所有命令%sudoALL=(ALL:ALL)ALL#允许用户不输入密码执行所有命令escapeALL=(ALL)NOPASSWD:ALL#只允许用户执行echo、ls命令escapeALL=(ALL)NOPASSWD:/bin/echo/bin/ls#运行本机的用户执行关机命令escapelocalhost=/sbin/shutdown-hnow#允许users用户组的用户像root用户一样使用mount、unmount、chrom命令%usersALL=/sbin/mount/mnt/cdrom,/sbin/umount/mnt/cdrom以提升的权限执行命令>sudocat/etc/passwd当你执行这个命令时,它会询问rumenz的密码,而不是root的密码。以另一个用户身份执行命令>sudo-udeploywhoamidedeploy的内置命令行为的一个限制是sudo-它不能使用shell的内置命令。历史记录是一个内置命令。如果您尝试使用sudo执行此命令,您将收到以下命令未找到错误的提示:>sudohistory[sudo]passwordforrumenz:sudo:history:commandnotfound我们可以访问rootshell,并执行任何命令那里,包括shell的内置命令。要访问rootshell,请执行以下命令:>[rumenz@localhost]$sudobash>[root@localhostrumenz]#historysudoexecutemultiplecommandssudo--bash-c'pwd;主机名;whoami'双连字符(–)停止命令行开关bash表示要用来执行命令的shell的名称-c选项后跟要执行的命令限制用户执行某些命令为了提供受控访问,我们可以限制sudo用户只执行某些命令。例如,以下行仅允许执行echo和ls命令。rumenzALL=(ALL)NOPASSWD:/bin/echo/bin/ls在vi??m中使用sudo命令,我们正在编辑系统的配置文件,只是在保存时才意识到我们需要root访问权限才能执行此操作。因为这可能会使我们丢失对文件的更改。不用慌,我们可以在Vim中使用如下命令来解决这种情况:w!sudotee%冒号(?表示我们处于Vim的退出模式感叹号(!)表示我们正在运行一个shell命令sudo和tee都是shell命令百分号(%)表示sudo的原则是从当前行开始的所有行>ls-l/usr/bin/sudo---s--x--x.1rootroot1432482018年6月28日/usr/bin/sudo如果您仔细查看文件权限,您会看到setuid位在sudo上启用。当任何用户运行此二进制文件时,它以拥有该文件的用户的权限运行。在如图所示,是root用户,当我们不加sudo执行id命令时,会显示用户rumenz的id。>iduid=1001(rumenz)gid=1001(rumenz)groups=1001(rumenz)当使用sudoiduid=0(root)gid=0(root)groups=0(root)sudo-isudo-i:switchableGoto根状态。为了频繁执行某些只有超级用户才能执行的权限而不必每次都输入密码,可以使用这个命令。当提示输入密码时,密码为当前账号的密码。没有时间限制。执行此命令后,提示符变为“#”而不是“$”。当你想回到普通账户时,你可以执行退出或注销。须藤!!Linux命令行记录了之前执行过的命令。可以通过按向上箭头访问这些记录。要以提升的权限重复上一个命令,请使用>sudo!!sudo!n想以root身份运行命令,但忘记使用“sudo”?不用担心。我们可以使用“sudo!!”结合命令历史来执行你想执行的命令。参数“!!”和“!-1”一样,它允许用户以root身份执行我们刚刚输入的命令。当然,以此类推,我们可以用下面的命令来执行倒数第二条命令:>sudo!-2原文链接:https://rumenz.com/rumenbiji/...WeChat公众号:GettingStarted