Linux命令之设置普通用户具有超级管理员权限sudo

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令之设置普通用户具有超级管理员权限sudo相关的知识,希望对你有一定的参考价值。

概述

sudo 命令可以让普通用户具有超级管理员 root 才有的权限。

有时候需要让普通用户执行一些只有超级管理员才有权限执行的命令,但如果告诉普通用户超级管理员的密码,就可能造成密码泄露。所以使用 sudo 可以让普通用户执行一些超级管理员才有权限执行的命令,这样减少了 root 用户的登录和管理时间,也提高了安全性。

注:sudo 命令默认情况下只能 root 用户才能使用。如果需要让普通用户也能使用 sudo 命令,必须在 /etc/sudoers 文件中进行配置。



/etc/sudoers 文件

如果需要让普通用户也能使用 sudo 命令,必须在 /etc/sudoers 文件中进行配置。并且该文件也只有 root 用户才有权限进行修改。

修改该文件必须使用 visudo 命令,因为该文件是一个只读文件,必须通过特殊的方式才能修改。并且 visudo 命令可以对修改后的 /etc/sudoers 文件进行语法检查,判断你的修改是否有效。


这两行说明如下:

root    ALL=(ALL)       ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

%wheel  ALL=(ALL)       ALL
%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

关于各字段说明如下:

字段说明
用户名表示系统中哪个用户,可以使用 sudo 这个命令
组名表示系统中哪个组,可以使用 sudo 这个命令
被管理主机的地址用户可以管理指定 IP 地址的服务器。这里如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。通常写 ALL
可使用的身份就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略
授权命令表示可以执行什么命令,命令必须写绝对路径。默认值是 ALL,表示可以执行任何命令

例如:

# 表示用户 zhangsan 可以执行 useradd 命令
zhangsan ALL=(ALL) /usr/sbin/useradd

# 表示名为 lisi 的用户组中的所有成员可以执行 userdel 命令
%lisi ALL=(ALL) /usr/sbin/userdel

进行测试:首先使用 visudo 命令在文件中的如下位置添加如下内容(注意,首先要有如下的用户和用户组):

接着登录 zhangsan 用户,然后使用 sudo useradd zhangsan-son 命令添加用户:

注意:可以写多个授权命令,之间用逗号分隔。



语法

该命令的语法如下:

sudo [选项] 命令

该命令支持的选项有:

选项说明
-V显示版本编号
-h会显示版本编号及指令的使用方式说明
-l显示出自己(执行 sudo 的使用者)的权限
-v因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b将要执行的指令放在背景执行
-p prompt可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u, --user=user不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 user 的身份执行指令
-s执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )


使用

执行命令

如果要使用 sudo 执行命令:

# 语法
sudo 命令
# 示例
sudo useradd zhangsan-son

查看当前用户可执行的 sudo 命令

如果要查看当前用户可以以超级管理员身份执行哪些命令,加上 -l 选项:

# 语法
sudo -l

以上是关于Linux命令之设置普通用户具有超级管理员权限sudo的主要内容,如果未能解决你的问题,请参考以下文章

在Linux中怎样把普通用户的权限设置为超级用户权限?

Linux基础权限

[ Linux长征路第三篇 ] 权限理解

Linux命令-sudo

Linux基本命令总结

Linux常用命令