配套视频: https://space.bilibili.com/204411292
用户相关概念
认识用户
在Linux
系统中,用户和组是用于管理和控制系统资源访问权限的重要概念。
用户(User
):是指系统中的账号。每个用户都有一个唯一的用户名和用户ID
(UID
)。用户可以拥有自己的个人文件和目录,并且可以在系统中执行特定的操作。
普通用户应用场景:
- 针对研发、测试等岗位的同事,我们通常会分配普通用户给他们,避免因
root
权限过大,误操作导致故障。 - 生产环境服务器通常会禁止使用
root
登录,管理人员需要使用普通用户登录系统后提权到root
用户。 - 使用普通用户运行程序,规避因程序存在漏洞,导致黑客入侵后获取到较高的权限。
配置文件
创建用户时,系统会对/etc/passwd
和/etc/shadow
文件进行变更,接下来让我们来认识这两个配置文件。
Linux
系统会将用户信息存放在/etc/passwd
中,/etc/passwd
只记录用户信息,不记录密码。
[root@localhost ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
/etc/passwd
以:
为分隔符,共可分为7
列。
第一列 | 第二列 | 第三列 | 第四列 | 第五列 | 第六列 | 第七列 |
---|---|---|---|---|---|---|
root | x | root | /root | /bin/bash | ||
用户名 | 密码占位符 | 用户UID | 组GID | 注释信息 | 用户家目录 | 用户登陆shell |
/etc/shadow
用于记录用户的密码信息。
[root@localhost ~]# head -1 /etc/shadow
root:$xxx6:19489:0:99999:7:2:66275:
/etc/shadow
以:
为分隔符,共可分为9
列。
列 | 示例 | 说明 |
---|---|---|
第一列 | root | 用户名。 |
第二列 | $xxx6 | 密码密文,!!表示无密码。 |
第三列 | 19489 | 最近修改密码的日期,从1970年1月1日到现在过了多少天。 |
第四列 | 最小修改密码时间间隔。0表示随时可以修改,如果是n那么就表示设置了新密码以后n天之内都不能再修改这个密码。 | |
第五列 | 99999 | 密码有效期。99999表示不强制在多少天内修改密码。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。 |
第六列 | 7 | 密码到期提醒。当账号的密码有效期限快要到的时候,系统会根据设定的数值发出警告信息提醒用户密码还有多少天就要过期了。 |
第七列 | 2 | 密码过期后的宽限天数。在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。 |
第八列 | 66275 | 账号失效日期。从1970年1月1日起,过多少天后,账户失效。 |
第九列 | 保留字段 |
可通过在线工具计算1970年1月1日距今已经过去了多少天。
用户ID
系统对用户的约定,在CentOS7
系统之前,UID1-499
用于系统用户,而500+
则用于普通用户。
用户UID | 系统中约定的含义 |
---|---|
超级管理员,最高权限。 | |
1~200 | 系统用户,用来运行系统自带的进程,默认已创建。 |
201~999 | 系统用户,用来运行用户安装的程序,所以此类用户无需登陆系统。 |
1000+ | 普通用户,正常可以登陆系统的用户,权限比较小,能执行的任务有限。 |
用户管理
创建用户
useradd
命令用于新增用户,常用选项及说明如下表。
选项 | 解释 |
---|---|
-u | 指定用户的UID。 |
-g | 指定用户的默认组,只能有一个。 |
-G | 指定用户的附加组,逗号隔开可以添加多个。 |
-d | 指定要创建的用户的家目录。 |
-s | 指定要创建用户的bash shell。 |
-c | 指定要创建用户的注释信息。 |
-M | 给创建的用户不创建家目录。 |
-r | 创建系统账户,默认无家目录。 |
我们可以通过以下练习熟悉useradd
的使用。
例1:创建snoopy
用户,指定UID
为5001
,基本组ops
,附加组dev
, 注释信息testUser
,登陆shell
为/bin/bash
。
用groupadd
添加相关的用户组。
[root@localhost ~]# groupadd ops
[root@localhost ~]# groupadd dev
创建用户并验证
[root@localhost ~]# useradd snoopy -u 5001 -g ops -G dev -c "testUser" -s /bin/bash
检查用户
[root@localhost ~]# id snoopy
uid=5001(snoopy) gid=1000(ops) groups=1000(ops),1001(dev)
[root@localhost ~]# grep "snoopy" /etc/passwd
snoopy:x:5001:1000:testUser:/home/snoopy:/bin/bash
[root@localhost ~]# grep "snoopy" /etc/shadow
snoopy:!!:19667:0:99999:7:::
例2:创建mysql
系统用户,不建立用户家目录,并指定nologin
使用户无法登陆系统。
[root@localhost ~]# useradd mysql -r -s /sbin/nologin
# 检查用户
[root@localhost ~]# id mysql
uid=998(mysql) gid=996(mysql) groups=996(mysql)
[root@localhost ~]# grep "mysql" /etc/passwd
mysql:x:998:996::/home/mysql:/sbin/nologin
# 未创建用户家目录
[root@localhost ~]# ll /home/ | grep mysql
# 无法登录
[root@localhost ~]# su - mysql
su: warning: cannot change directory to /home/mysql: No such file or directory
This account is currently not available.
请自己尝试创建一个develop
用户,uid
为6666
,附加组为ops
,用户家目录为/tmp/develop
,登录shell
为/sbin/nologin
。
修改用户家目录需要关闭selinux。
用户创建流程
配置文件解读
在用户创建的过程需要参考/etc/login.defs
和/etc/default/useradd
这两个文件。如果在创建用户时指定了参数,则会覆盖/etc/login.defs
和/etc/default/useradd
相关内容。
/etc/login.defs
相关配置内容。
[root@localhost ~]# egrep -v "^$|#" /etc/login.defs
MAIL_DIR /var/spool/mail # 邮见存放目录。
PASS_MAX_DAYS 99999 # 密码最长使用天数。
PASS_MIN_DAYS 0 # 密码最短使用天数。
PASS_MIN_LEN 5 # 密码的长度。
PASS_WARN_AGE 7 # 密码到期前7天警告。
UID_MIN 1000 # UID从1000开始。
UID_MAX 60000 # UID从6w结束。
SYS_UID_MIN 201 # 系统用户UID从201开始。
SYS_UID_MAX 999 # 系统用户UID最大到999。
GID_MIN 1000 # GID从1000开始。
GID_MAX 60000 # GID最大到6w结束。
SYS_GID_MIN 201 # 系统GID从201开始。
SYS_GID_MAX 999 # 系统GID醉倒到999结束。
CREATE_HOME yes # 默认给用户创建家目录。
UMASK 077 # 建立的用户家目录的默认权限。
USERGROUPS_ENAB yes # 创建同名用户组;使用userdel删除用户时,默认连组一起删除。
ENCRYPT_METHOD SHA512 # 密码加密算法。
/etc/default/useradd
相关配置内容。
[root@localhost ~]# egrep -v "^$|#" /etc/default/useradd
GROUP=100 # 当创建用户时,不指定组,且/etc/login.defs中USERGROUPS_ENAB为no时,默认给用户分配到gid为100的组。
HOME=/home # 用户默认的家目录。
INACTIVE=-1 # 密码过期后的宽限天数,也就是/etc/shadow文件的第七个字段。默认值是-1,表示没有强制密码过期。
EXPIRE= # 密码失效时间,也就是/etc/shadow文件的第八个字段,不设置表示永久有效。
SHELL=/bin/bash # 默认登陆shell。
SKEL=/etc/skel # 默认用户拷贝的环境变量。
CREATE_MAIL_SPOOL=yes # 创建一个和用户同名的保存邮件信息的文件。
应用场景
我们使用rm
时,可能会误删环境变量相关文件,登录后提示符如下。
[root@localhost ~]# su - snoopy
Last login: Tue Nov 7 00:19:58 CST 2023 on pts/2
-bash-4.2$
我们可以自己拷贝环境变量到家目录,重启登录后可恢复。
-bash-4.2$ cp /etc/skel/.bash* ./
修改用户
usermod
命令用于更改用户信息,常用选项及说明如下表:
选项 | 解释 |
---|---|
-a | 更改用户组的时候,保存原有组不变,直接追加。 |
-m | 将家目录内容移至新位置 (仅与 -d 一起使用)。 |
-l | 指定要修改的用户的登录名。 |
-u | 指定用户的UID。 |
-g | 指定用户的默认组,只能有一个。 |
-G | 指定用户的附加组,逗号隔开可以添加多个。常与-a配合使用。 |
-d | 指定要创建的用户的家目录。 |
-s | 指定要创建用户的bash shell。 |
-c | 指定要创建用户的注释信息。 |
我们可以通过以下练习熟悉usermod
的使用。
例1:将用户snoopy
的UID
改为9999
,并添加附属组dba
。
查看用户snoopy
的信息。
[root@localhost ~]# id snoopy
uid=5001(snoopy) gid=1000(ops) groups=1000(ops),1001(dev)
添加用户组dba
。
[root@localhost ~]# groupadd dba
# 若不加-a选项,附属组不会保留原先设置的组,会直接变更为dba
[root@localhost ~]# usermod snoopy -u 9999 -aG dba
[root@localhost ~]# id snoopy
uid=9999(snoopy) gid=1000(ops) groups=1000(ops),1001(dev),1002(dba)
例2:将用户snoopy
的用户名修改为snoopyops
,家目录修改为/tmp/snoopyops
。
更改用户家目录时应加上-m
选项,会将用户家目录移动到/tmp
目录。
[root@localhost ~]# usermod snoopy -md /tmp/snoopyops -l snoopyops
[root@localhost ~]# id snoopyops
uid=9999(snoopyops) gid=1000(ops) groups=1000(ops),1001(dev),1002(dba)
[root@localhost ~]# su - snoopyops
更改用户家目录,没加-m
选项,因为没有移动之前的家目录到/tmp/test
目录,会提示家目录不存在。
[root@localhost ~]# usermod snoopyops -d /tmp/test
[root@localhost ~]# su - snoopyops
Last login: Mon Aug 5 15:45:28 CST 2019 on pts/1
su: warning: cannot change directory to /tmp/test: No such file or directory
删除用户
userdel
命令用于删除用户,常用选项及说明如下表:
选项 | 解释 |
---|---|
-r | 删除用户的同时删除他的家目录。 |
删除用户snoopyops
,不删除用户家目录等其他目录。
[root@localhost ~]# userdel snoopyops
之前将用于家目前修改成了/tmp/snoopyops/
,我们发现用户相关目录还存在,没有被删除。
[root@localhost ~]# ll /tmp/snoopyops/
[root@localhost ~]# ll /var/spool/mail/snoopyops
删除用户snoopyops
及其家目录。
[root@localhost ~]# userdel -r snoopyops
用户数据可能会放置于家目录内,-r选项删除用户时,会删除其家目录,慎用!!!
密码管理
设置密码
为新用户添加密码
只有root
才能执行才能为新用户添加密码。添加密码非为交互式和非交互式两种。
-
交互式添加密码。
[root@localhost ~]# useradd snoopy [root@localhost ~]# passwd snoopy Changing password for user snoopy. New password: 输入密码 BAD PASSWORD: The password is a palindrome Retype new password: 确认密码 passwd: all authentication tokens updated successfully.
-
非交互式添加密码。
[root@localhost ~]# echo "qwert" | passwd --stdin snoopy Changing password for user snoopy. passwd: all authentication tokens updated successfully.
通过脚本,批量添加用户。
[root@localhost ~]# cat user.sh for i in {1..100} do useradd test$i echo "123456" | passwd --stdin test$i done
修改密码
为别人修改密码(只用root
才能执行)。
[root@localhost ~]# passwd test50
Changing password for user test50.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
为自己修改密码(自己就可以)。
[test50@localhost ~]$ passwd
Changing password for user test50.
Changing password for test50.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
随机密码
方式一:$RANDOM
可以生成随机数,将随机数通过md5
加密,取加密后的6-15
字符。
[root@localhost ~]$ echo $RANDOM | md5sum | cut -c 6-15
45de81b10c
方式二:可以通过mkpasswd
随机生成密码。
安装扩展包。
[root@localhost ~]# yum install expect -y
生成随机密码。
[root@localhost ~]# mkpasswd
7q~HfjM0g
# -l密码长度 -d数字个数 -c小写字母个数 -C大写字母个数 -s特殊字符个数
[root@localhost ~]# mkpasswd -l 10 -d 3 -c 2 -C 3 -s 2
6u36~LRSo&
其他用户相关命令
who命令
who
命令用于查看目前登录系统的用户信息。
[root@localhost ~]# who
root tty1 2023-11-05 23:06
root pts/0 2023-11-06 22:14 (192.168.199.1)
root pts/1 2023-11-06 22:17 (192.168.199.1)
root pts/2 2023-11-06 23:06 (192.168.199.1)
whoami命令
whoami
用于查看当前登陆系统的用户是谁。
[root@localhost ~]# whoami
root
w命令
w
命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。
[root@localhost ~]# w
23:34:44 up 1 day, 28 min, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Sun23 1:17m 0.02s 0.02s -bash
root pts/0 192.168.199.1 22:14 1:20m 0.01s 0.01s -bash
root pts/1 192.168.199.1 22:17 1:10m 0.07s 0.07s -bash
root pts/2 192.168.199.1 23:06 4.00s 0.13s 0.00s w
说明:
显示信息 | 说明 |
---|---|
23:34:44 | 当前系统时间。 |
up | 当前系统运行的时长。 |
4 users | 有多少用户登陆了系统。 |
load average | 当前系统负载状态。 |
0.00 | 1分钟内平均负载。 |
0.01 | 5分钟内平均负载。 |
0.05 | 15分钟内平均负载 |
JCPU | 该终端连接后所产生的进程占用的时间,不包括过去的后台进程所占用的时间。 |
PCPU | 当前进程(即w项中显示的)所占用的时间。 |
用户组相关概念
认识用户组
组(Group
):是一组相关用户的集合。每个组都有一个唯一的组名和组ID
(GID
)。组可以用于简化权限管理,将一组用户归类,并将特定权限分配给整个组。用户组分为基本组和附加组。
基本组:用户只能有一个基本组,创建时可通过-g
指定,如未指定则创建一个与用户同名的默认的组。
附加组:用户除了基本组还可以属于多个附加组。
配置文件
用户组信息保存在/etc/group
和/etc/gshadow
两个文件中。
/etc/group
文件是用户组的配置文件,即用户组的所有信息都存放在此文件中。
[root@localhost ~]# head -1 /etc/group
root:x:0:
/etc/group
以:
为分隔符,共可分为4
列。
第一列 | 第二列 | 第三列 | 第四列 |
---|---|---|---|
root | x | ||
组名 | 组密码标志 | 组GID | 组中附加用户,不显示基本成员 |
用户组的密码信息存储在/etc/gshadow
文件中。
[root@localhost ~]# head -1 /etc/gshadow
root:::
/etc/gshadow
以:
为分隔符,共可分为4
列。
第一列 | 第二列 | 第三列 | 第四列 |
---|---|---|---|
root | |||
组名 | 组密码,通常不设置密码 | 组管理员,通常不设置 | 组中附加用户,不显示基本成员 |
用户组管理
创建用户组
我们可以通过groupadd
命令创建一个用户组。
[root@localhost ~]# groupadd group_test
[root@localhost ~]# grep "group_test" /etc/group
group_test:x:5107:
创建GID
为666
的用户组g1
。
[root@localhost ~]# groupadd -g 666 g1
[root@localhost ~]# grep "666" /etc/group
g1:x:666:
创建系统用户组g2
。
[root@localhost ~]# groupadd -r g2
[root@localhost ~]# grep "g2" /etc/group
g2:x:665:
修改用户组
将g1
的GID
改为777
。
[root@localhost ~]# groupmod -g 777 g1
[root@localhost ~]# grep "g1" /etc/group
g1:x:777:
将g1
的用户名修改为gg
。
[root@localhost ~]# groupmod g1 -n gg
[root@localhost ~]# grep "777" /etc/group
gg:x:777:
删除用户组
当我们删除用户时,系统默认会把用户的基本组删除。
可通过groupdel
命令删除用户的附加组,需要先删除附加组内的所有用户后才可以删除附加组。
创建一个用户u1
,属于附加组gg
。
[root@localhost ~]# useradd u1 -G gg
[root@localhost ~]# id u1
uid=5108(u1) gid=5108(u1) groups=5108(u1),777(gg)
[root@localhost ~]# grep "u1" /etc/group
gg:x:777:u1
u1:x:5108:
删除用户u1
后,用户基本组u1
也默认被删除,但是gg
组还在。
[root@localhost ~]# userdel u1
[root@localhost ~]# grep "u1" /etc/group
[root@localhost ~]# grep "gg" /etc/group
gg:x:777:
可通过groupdel
命令删除gg
用户组。
[root@localhost ~]# groupdel gg
[root@localhost ~]# grep "gg" /etc/group
用户提权
因考虑到安全合规的需求,公司的服务器通常都会禁止root
用户直接登录,所以我们通常使用的都是普通用户登录系统。当我们需要使用到root
权限时,应如何提权呢?
su命令
su
命令是Linux
操作系统中用于切换用户身份的命令,全名为switch user
。它允许当前用户切换到其他用户账户,包括超级用户root
。除root
外,使用改命令需要输入密码。
切换用户
su username
可切换用户且不改变原用户的工作目录,属于非登录式shell
。
[snoopy@localhost ~]$ su root
Password:
[root@localhost snoopy]# pwd
/home/snoopy
su - username
切换用户后,同时切换到新用户的工作环境中,加载root
用户的全部的环境变量,属于非登录式shell
。
[snoopy@localhost ~]$ su - root
Password:
Last login: Mon Dec 11 01:15:18 CST 2023 on pts/1
[root@localhost ~]# pwd
/root
环境变量加载顺序
profile
类的文件, 主要用于设定环境变量, 登陆前运行的脚本和命令。
bashrc
类的文件, 主要用于设定本地变量, 定义命令别名。
非登录式shell
配置文件执行顺序。
/etc/profile.d/*.sh
/etc/bashrc
~/.bashrc
登录式shell
配置文件执行顺序。
/etc/profile.d/*.sh
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
使用其他用户运行命令
使用指定用户执行命令,这里以使用root
用户执行命令为例。
[snoopy@localhost ~]$ whoami
snoopy
[snoopy@localhost ~]$ su root -c "whoami"
Password:
root
su
切换用户的缺点:需要知道用户名对应的密码,很不安全。
sudo命令
sudo
是Linux
系统下的一个命令,全称为superuser do
。它允许普通用户执行一些root
命令,这样不仅减少了root
的管理时间,同样也提高了安全性。
用户提权
普通用户执行yum
命令,不能成功。
[snoopy@localhost ~]$ yum install wget
Loaded plugins: fastestmirror
You need to be root to perform this command.
使用sudo
命令提权,提示用户不在sudoers
文件中。
[snoopy@localhost ~]$ sudo yum install wget
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for snoopy:
snoopy is not in the sudoers file. This incident will be reported.
我们需要修改/etc/sudoers
文件,对snoopy
用户授权,通常会使用visudo
命令对配置文件进行修改。
通过root
用户执行visudo
命令,对用户进行权限设置。
添加如下内容。
[root@localhost ~]# visudo
# 添加
snoopy ALL=(ALL) /usr/bin/yum
检查配置文件。
[root@localhost ~]# visudo -c
/etc/sudoers: parsed OK
登陆到snoopy
用户,检查用户的权限。
[snoopy@localhost ~]$ sudo -l
[sudo] password for snoopy: 输入密码
User snoopy may run the following commands on localhost:
(ALL) /usr/bin/yum
利用sudo
执行yum
命令,可以成功执行。
[snoopy@localhost ~]$ sudo yum install wget
[sudo] password for snoopy:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.bupt.edu.cn
* updates: mirrors.bupt.edu.cn
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
Nothing to do
别名提权
可使用sudo
中自带的别名操作, 将多个用户或多个命令定义成一个逻辑组。我们针对逻辑组进行提权配置。
用root
用户执行visudo
命令,对用户进行权限设置。
[root@localhost ~]# visudo
添加如下内容设置用户组别名及命令别名。其中ops_user1
、ops_user2
、dev_user1
和dev_user2
为用户,若系统中不存在,需要先创建。
root ALL=(ALL) ALL
# 设置组别名,ops_user1和ops_user2为OPS组;dev_user1和dev_user2为DEV组。
User_Alias OPS = ops_user1,ops_user2
User_Alias DEV = dev_user1,dev_user2
# 设置命令别名
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl status
# 将组的别名和命令别名对应起来
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES
DEV ALL=(ALL) NETWORKING
检查配置。
[root@localhost ~]# visudo -c
/etc/sudoers: parsed OK
用ops_user1
用户登陆系统,查看权限。
[ops_user1@localhost ~]$ sudo -l
.......
.......
User ops_user1 may run the following commands on localhost:
(ALL) /sbin/ifconfig, /bin/ping, /bin/rpm, /usr/bin/yum,
/usr/bin/systemctl start, /usr/bin/systemctl stop,
/usr/bin/systemctl status
用dev_user1
用户登陆系统,查看权限。
[dev_user1@localhost ~]$ sudo -l
.......
.......
User dev_user1 may run the following commands on localhost:
(ALL) /sbin/ifconfig, /bin/ping
用户组提权
sudo
可针对系统的用户组进行提权,可使用groupadd
将用户添加到用户组,然后给组分配sudo
的权限。如果有新用户加入,直接将用户添加到该组。
将用户添加到对应的组中,若系统中不存在,需要先创建。
# 创建用户组
[root@localhost ~]# groupadd ops_group
[root@localhost ~]# groupadd dev_group
# 修改用户附加组
[root@localhost ~]# usermod ops_user1 -aG ops_group
[root@localhost ~]# usermod ops_user2 -aG ops_group
[root@localhost ~]# usermod dev_user1 -aG dev_group
[root@localhost ~]# usermod dev_user2 -aG dev_group
[root@localhost ~]# id ops_user1
uid=5113(ops_user1) gid=5116(ops_user1) groups=5116(ops_user1),5121(ops_group)
[root@localhost ~]# id ops_user2
uid=5114(ops_user2) gid=5117(ops_user2) groups=5117(ops_user2),5121(ops_group)
[root@localhost ~]# id dev_user1
uid=5116(dev_user1) gid=5119(dev_user1) groups=5119(dev_user1),5120(dev_group)
[root@localhost ~]# id dev_user2
uid=5115(dev_user2) gid=5118(dev_user2) groups=5118(dev_user2),5120(dev_group)
修改配置文件。
[root@localhost ~]# visudo
visudo
主要添加了以下的内容。
# 设置命令别名
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl status
# %代表组,如果不加%,系统会认为是一个用户名
%ops_group ALL=(ALL) NETWORKING,SOFTWARE,SERVICES
%dev_group ALL=(ALL) NETWORKING
检查配置文件。
[root@localhost ~]# visudo -c
/etc/sudoers: parsed OK
登陆到ops_user2
查看用户的权限。
[ops_user2@localhost ~]$ sudo -l
.......
.......
User ops_user2 may run the following commands on localhost:
(ALL) /sbin/ifconfig, /bin/ping, /bin/rpm, /usr/bin/yum,
/usr/bin/systemctl start, /usr/bin/systemctl stop,
/usr/bin/systemctl status
用dev_user2
用户登陆系统,查看权限。
[dev_user2@localhost ~]$ sudo -l
.......
.......
User dev_user2 may run the following commands on localhost:
(ALL) /sbin/ifconfig, /bin/ping
标签:ops,用户,etc,snoopy,Linux,root,localhost
From: https://blog.51cto.com/u_11441974/9017811