是否有可能在 Ubuntu 下不用密码执行 sudo 命令?答案是确定的。本文中,咱们提供了多种方法来实现它。sudo 是在Linux中以“ 超级用户权限 ” 运行全部命令的基本命令。要授予用户 sudo 访问权限,须要将用户添加到sudoers 文件中。在基于 Ubuntu 和 Debian 的发行版中,sudoers 用户组被称为wheel
。vim
按root运行指令,或用当前用户之外的用户执行命令时,须要运行 sudo 命令,同时系统将提示输入密码。这一步骤将增长您的 Ubuntu 系统的安全性。它还能够防止权限较低的用户从 Ubuntu 系统安装或删除任何应用程序。segmentfault
在某些状况下,您可能须要运行自动进程或自动脚本,这须要在 sudoers 文件中配置,以容许某些用户在没有输入密码的状况下运行 sudo 命令。在下面的步骤中,教你在不输入密码的状况下运行sudo命令的方法。安全
有关用户的每一个信息仅存储在 sudoers 文件中。这决定了用户和组的sudo权限。在编辑此文件以前,咱们建议您备份此文件。您可使用如下命令编辑sudoers文件:网络
sudo visudo
上面的命令将打开/ etc/sudoers
文件。用 visudo 命令编辑文件后,会检查是否有语法错误。建议您在编辑以前备份sudoers
文件。只需按照如下命令便可。less
sudo cp /etc/sudoers{,.backup_$(date +%Y%m%d)}
上面的命令将备份sudoers
文件,日期将附加文件名。编辑器
完成备份过程后。您能够开始编辑 sudoers 文件。如须要将可视化编辑器更改成“nano”编辑器,可以使用如下命令:code
sudo EDITOR=nano visudo
或使用vim编辑器:进程
sudo EDITOR=vim visudo
该文件中,几乎全部的行都被注释掉了,sudoers文件示例中重要的是:rem
root ALL=(ALL) ALL
此行表示:root用户能够从全部终端执行,充当全部(任何)用户,并运行ALL(任何)命令。
第一部分是用户,第二部分是用户可使用sudo命令的终端,第三部分是他能够充当哪些用户,最后一部分是使用时能够运行的命令sudo。terminal
sudoers的例子
operator ALL= /sbin/poweroff
以上命令,使用户操做员能够从任何终端,关闭命令电源。
您还能够为如下项建立别名:users - > User_Alias,以其余用户身份运行命令 - > Runas_Alias,主机 - > Host_Alias 命令 - > Cmnd_Alias
User_Alias OPERATORS = joe, mike, jude Runas_Alias OP = root, operator Host_Alias OFNET = 10.1.2.0/255.255.255.0 Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm
正如您所看到的别名OPERATORS包括用户joe,mike和jude,别名OP包括用户root和operator,别名OFNET包括网络10.1.2.0(全部C类),命令别名PRINTING包含命令lpc和lprm。
所以,典型的sudoers文件可能以下所示:
User_Alias OPERATORS = joe, mike, jude Runas_Alias OP = root, operator Host_Alias OFNET = 10.1.2.0/255.255.255.0 Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm OPERATORS ALL=ALL #The users in the OPERATORS group can run any command from any terminal. linus ALL=(OP) ALL # The user linus can run any command from any terminal as any user in the OP group (root or operator). user2 OFNET=(ALL) ALL # user user2 may run any command from any machine in the OFNET network, as any user. user3 ALL= PRINTING # user user3 may run lpc and lprm from any machine. yujiaao ALL=(ALL) ALL
在编辑器中打开 sudoers 文件后,您须要向下滚动到编辑器的末尾并在其中添加如下代码!
yujiaao ALL=(ALL) NOPASSWD:ALL
用您的用户名替换“ yujiaao ”!(例如:anderson ALL =(ALL)NOPASSWD:ALL),命令NOPASSWD将在终端中运行SUDO命令时跳过密码验证。
如何在为特定命令运行sudo时跳过密码:
您能够容许某些命令使用密码运行sudo,使用如下命令来实现它:
yujiaao ALL=(ALL) NOPASSWD:/bin/cp,/bin/install,bin/remove
完成编辑后,请保存文件并退出终端。
NOPASSWD 是一个“标签”,表示不会请求密码。它有一个名为的伴随命令 PASSWD,是默认行为。标签与规则的其他部分相关,除非在其后面的“双胞胎”标签上被否决。
例如,咱们能够有这样的一行:
在 /etc/sudoers
文件
. . . GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill . . .
另外一个有用的标签NOEXEC
,可用于防止某些程序中的某些危险行为。
例如,某些程序(如“less”)能够经过在其界面中键入如下内容来生成其余命令:
!command_to_run
这基本上执行用户赋予它的任何命令,具备“less”运行的相同权限,这可能很是危险。
为了限制这一点,咱们可使用这样的一行:
在 /etc/sudoers
文件中
. . . username ALL = NOEXEC: /usr/bin/less . . .
/etc/sudoers.d
文件跳过密码在/etc/sudoers
文件中,最后一行:#include /etc/sudoers.d
,乍一看,最后一行看起来像注释:
#includedir /etc/sudoers.d
它确实以#
开头,一般表示注释。可是该行实际上代表/etc/sudoers.d
目录中的文件也将被采纳和应用。
该目录中的文件与/etc/sudoers
文件自己遵循相同的规则。任何不是以~
号且未包含.
的任何文件将被读取并生效。
这主要是为了在安装应用程序时更方便改 sudo权限。将全部关联的规则放在/etc/sudoers.d
目录下的单个文件中能够轻松查看哪些权限与哪些账户关联,并轻松地反向回滚,而无需尝试直接操做/etc/sudoers
文件。
与/etc/sudoers
文件自己同样,您应始终使用visudo
编辑目录/etc/sudoers.d
中的文件。编辑这些文件的语法是:
sudo visudo -f /etc/sudoers.d/file_to_edit
此方法是在不输入密码的状况下运行 sudo 命令的备用方法。您能够将新文件身份验证添加到/etc/sudoers.d
目录中,对于已在 sudoers
目录的新文件中定义的一些经常使用命令,sudo 命令能够在没有密码的状况下运行。此步骤将不须要对sudoers
文件自己的编辑。
如今您须要打开终端并在sudoers目录中建立新文件。
sudo nano /etc/sudoers.d/new_file
有件事可别忘了:
sudo chmod 0440 new_file
在上面的命令中,将“ new_file ” 替换为您本身的文件名。如今运行相同的命令来运行 sudo 命令而不输入密码。
username ALL=(ALL) NOPASSWD:ALL
上面的命令将帮助您为该特定用户运行没有密码的sudo命令。
一般,不建议全部没有权限的用户在没有密码的状况下运行 sudo。建议您建立一个新的 sudoers 文件并单独分配命令必须运行没有密码的 sudo 命令! 若是您有任何疑问,请在下方发表评论。
若是用出现语法错误参考 https://segmentfault.com/n/13...