sudo
或者superuser do是一个在Linux、BSD和Unix系统上使用的实用程序,它为正在运行的命令提供root或管理员权限。不是每个用户都需要具有root权限,但在某些情况下需要使用root权限运行命令。我们可以使用sudo运行一些特定的或所有提供的命令,并使用root权限编辑文件。
sudo配置文件sudoers
sudo命令是配置是存储的 /etc/sudoers
文件。只能使用root权限查看和编辑此文件。我们可以用 visudo
命令如下。
$ sudo visudo

我们可以看到sudoers配置文件的另一部分提供了默认值、用户和组权限。
配置语法
我们可以使用以下语法来创建关于给定用户或组的sudo配置。
USER HOSTLIST=(USERLIST) COMMANDLIST
- USER是可以在给定主机上运行给定命令的用户
- HOSTLIST是可以运行给定命令的主机
- COMMANDLIST是可以运行的命令。可以用逗号分隔多个命令。
指定要运行Sudo命令的用户
我们可以添加一个用户来运行具有root权限的特定命令。在本例中,我们将添加用户 ismail
运行命令 visudo
具有root权限。
ismail ALL=(ALL:ALL) /usr/sbin/visudo

无密码Sudo命令
我们可以为给定的用户提供sudo命令而不需要任何密码。我们将使用 NOPASSWD
下面的配置将禁用用户的密码 ismail
.
ismail ALL=NOPASSWD:/usr/sbin/visudo
列出可用命令
我们可以用 -l
选项,该选项将列出当前用户可以执行的当前使用的根特权命令。
$ sudo -l

以Root权限运行命令
在本例中,我们将使用 sudo
命令。我们要跑了 ls
中的命令 /root
完全由根用户拥有且仅由根用户使用的目录。
$ sudo ls /root
使用Root权限编辑文件
我们还使用sudo命令编辑具有root权限的文件。我们将编辑 /etc/passwd
文件与 vim
命令如下。
$ sudo vim /etc/passwd

sudo和su的区别
su
命令用于作为另一端的root用户登录 sudo
命令只是在当前用户会话中以root用户身份运行给定的命令。在运行sudo命令时,用户名也会被记录,但是sudo命令只会记录根用户名。最好的方法