用户管理
用户和组管理
三A认证
Authentication:认证
Authorization:授权
Accouting:审计
用户分类
Linux用户分为管理员和普通用户两种:
用户类别 | 用户ID |
---|---|
管理员 | 0 |
普通用户 | 1-65535 |
其中普通用户又分为系统用户和登录用户两种:
用户类别 | 用户ID |
---|---|
系统用户 | 1-999(为守护类进程获取系统资源而完成权限指派的用户) |
登录用户 | 1000-60000(为了完成交互式登录使用的用户) |
Linux安全上下文
运行中的程序:进程(process)
- 以进程发起者的身份运行
- root:cat
- tom:cat
- 进程所能够访问的所有资源的权限取决于进程的发起者的身份
Linux通过安全上下文的概念完成用户权限的指派。
- 先判断用户是否是某文件的属主
- 再判断用户是否属于某个组
- 最后定其为其他用户
Linux用户组类别
用户组类别 | 特性 |
---|---|
私有组 | 创建用户时,如果没有为其指定所属的组, 系统会自动为其创建一个与用户名相同的组 |
基本组 | 用户的默认组 |
附加组(额外组) | 默认组以外的其它组 |
用户管理
用户和组管理命令
userradd:创建用户
#语法:useradd [option] USERNAME
-u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
-g GID //指定用户所属基本组,可为组名或GID
-G groupname,... //附加组,可以有多个,用逗号隔开。组groupname必须事先存在
-c "COMMENT" //注释信息
-d /path/to/directory //指定用户的家目录。此目录必须不能事先存在, \
//否则将不会从/etc/skel中复制环境设置文件
-s shell //这里的shell最好使用/etc/shells里面有的shell, \
// /etc/shells指定了当前系统可用的安全shell
-M //创建用户时不给其创建家目录
-r //添加一个系统用户
-D //直接打印/etc/default/useradd文件的内容或配合其它选项 \
//(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
[root@zyq ~]# useradd harry
[root@zyq ~]# ll /home/
total 0
drwx------. 2 harry harry 62 Jul 5 11:29 harry
[root@zyq ~]# id harry
uid=1000(harry) gid=1000(harry) groups=1000(harry)
-u UID #[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
[root@zyq ~]# useradd -u 2000 tom
[root@zyq ~]# id tom
uid=2000(tom) gid=2000(tom) groups=2000(tom)
[root@zyq ~]#
-c "COMMENT" #注释信息
[root@zyq ~]# tail -1 /etc/passwd
lisi:x:2002:2002::/home/lisi:/bin/bash
[root@zyq ~]# useradd -c 'BOSS' zhaoyaqin
[root@zyq ~]# tail -1 /etc/passwd
zhaoyaqin:x:2003:2003:BOSS:/home/zhaoyaqin:/bin/bash
[root@zyq ~]#
-d /path/to/directory #指定用户的家目录。此目录必须不能事先存在,
#否则将不会从/etc/skel中复制环境设置文件
[root@zyq ~]# ls /home/
harry lisi tom zhangsan zhaoyaqin
[root@zyq ~]# useradd -d /opt/wawa wawa
[root@zyq ~]# ls -l /opt/
total 0
drwxr-xr-x. 2 root root 6 Jun 28 14:04 1
drwxr-xr-x. 2 root root 6 Jun 28 14:04 2
drwxr-xr-x. 2 root root 6 Jun 28 14:04 3
drwx------. 2 wawa wawa 62 Jul 5 16:43 wawa
[root@zyq ~]#
-s shell //这里的shell最好使用/etc/shells里面有的shell, \
// /etc/shells指定了当前系统可用的安全shell
-M //创建用户时不给其创建家目录
-r //添加一个系统用户
#创建系统用户apashe1,系统用户是没有家目录的(-s 不能够登录)
[root@zyq ~]# useradd -r -M -s /sbin/nologin apache1
[root@zyq ~]# id apache1
uid=991(apache1) gid=990(apache1) groups=990(apache1)
[root@zyq ~]# su - harry ---可以发现普通用户harry可以登录
[harry@zyq ~]$ exit
logout
[root@zyq ~]# su - apache1 ---系统用户apashe1不能登录
su: warning: cannot change directory to /home/apache1: No such file or directory
This account is currently not available.
[root@zyq ~]#
-G groupname,... #附加组,可以有多个,用逗号隔开。组groupname必须事先存在
[root@zyq ~]# groupadd test
[root@zyq ~]# useradd -g test zhangsan
[root@zyq ~]# id zhangsan
uid=2001(zhangsan) gid=2001(test) groups=2001(test)
[root@zyq ~]# useradd -G test lisi
[root@zyq ~]# id lisi
uid=2002(lisi) gid=2002(lisi) groups=2002(lisi),2001(test)
[root@zyq ~]#
userdel:用户删除命令
语法:userdel [option] USERNAME
-r #删除用户的同时删除其家目录
#(userdel默认不会删除其家目录)
[root@zyq ~]# id tom
uid=2000(tom) gid=2000(tom) groups=2000(tom)
[root@zyq ~]# userdel tom
[root@zyq ~]# id tom
id: ‘tom’: no such user
[root@zyq ~]# ll /home/ #tom的家目录信息并没有被删除
total 0
drwx------. 2 harry harry 83 Jul 5 16:47 harry
drwx------. 2 lisi lisi 62 Jul 5 11:41 lisi
drwx------. 2 2000 2000 62 Jul 5 11:31 tom
drwx------. 2 zhangsan test 62 Jul 5 11:40 zhangsan
drwx------. 2 zhaoyaqin zhaoyaqin 62 Jul 5 16:40 zhaoyaqin
[root@zyq ~]# useradd -u 2000 gogo ---指定UID与之前tom用户的相同
[root@zyq ~]# id gogo
uid=2000(gogo) gid=2000(gogo) groups=2000(gogo) //GID默认
[root@zyq ~]# ll -d /home/tom/
drwx------. 2 gogo gogo 62 Jul 5 11:31 /home/tom/ //可发现属主和属组以替换成gogo用户
[root@zyq ~]#
[root@zyq ~]# ll /home/
total 0
drwx------. 2 gogo gogo 62 Jul 5 16:54 gogo
drwx------. 2 harry harry 83 Jul 5 16:47 harry
drwx------. 2 lisi lisi 62 Jul 5 11:41 lisi
drwx------. 2 gogo gogo 62 Jul 5 11:31 tom
drwx------. 2 zhangsan test 62 Jul 5 11:40 zhangsan
drwx------. 2 zhaoyaqin zhaoyaqin 62 Jul 5 16:40 zhaoyaqin
[root@zyq ~]# userdel -r gogo 删除用户包括其家目录
[root@zyq ~]# ll /home/
total 0
drwx------. 2 harry harry 83 Jul 5 16:47 harry
drwx------. 2 lisi lisi 62 Jul 5 11:41 lisi
drwx------. 2 2000 2000 62 Jul 5 11:31 tom
drwx------. 2 zhangsan test 62 Jul 5 11:40 zhangsan
drwx------. 2 zhaoyaqin zhaoyaqin 62 Jul 5 16:40 zhaoyaqin
[root@zyq ~]#
id:查看用户帐号的信息命令
id //查看用户的帐号属性信息
-u //查看UID
-g //查看GID
-G //查看Groups
[root@zyq ~]# id ---查看当前用户的账号信息
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@zyq ~]#
[root@zyq ~]# id -u harry
1000
[root@zyq ~]# id harry
uid=1000(harry) gid=1000(harry) groups=1000(harry)
[root@zyq ~]# id -u harry
1000
[root@zyq ~]# id -g harry
1000
[root@zyq ~]# id -G harry
1000
[root@zyq ~]#
修改用户帐号属性的命令
usermod
usermod #修改用户属性
#语法:usermod [options] username
-u UID
-g GID
-a -G groupname //不使用-a选项,会覆盖此前的附加组,反则会增加多个附加组
-d -m //改变用户家目录的同时把原来家目录的文件移动到新的家目录中
-e YYYY-MM-DD //指明用户帐号过期日期
-f INACTIVE //设定非活动期限
-L //锁定帐号。
//被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U //解锁帐号
-s #更改登录shell
[root@zyq ~]# id 1000
uid=1000(harry) gid=1000(harry) groups=1000(harry)
[root@zyq ~]# id lisi
uid=2002(lisi) gid=2002(lisi) groups=2002(lisi),2001(test)
[root@zyq ~]# usermod -g 1000 lisi ---更改用户GID
[root@zyq ~]# id lisi
uid=2002(lisi) gid=1000(harry) groups=1000(harry),2001(test)
[root@zyq ~]#
-a -G groupname #不使用-a选项,会覆盖此前的附加组,反则会增加多个附加组
[root@zyq ~]# id laoliu
uid=2005(laoliu) gid=2005(laoliu) groups=2005(laoliu),2001(test)
[root@zyq ~]# usermod -G harry laoliu
[root@zyq ~]# id laoliu
uid=2005(laoliu) gid=2005(laoliu) groups=2005(laoliu),1000(harry)
[root@zyq ~]# usermod -a -G test laoliu
[root@zyq ~]# id laoliu
uid=2005(laoliu) gid=2005(laoliu) groups=2005(laoliu),1000(harry),2001(test)
[root@zyq ~]#
-d -m #改变用户家目录的同时把原来家目录的文件移动到新的家目录中
[root@zyq ~]# ll -d /home/zhaoyaqin/
drwx------. 2 zhaoyaqin zhaoyaqin 62 Jul 5 16:40 /home/zhaoyaqin/
[root@zyq ~]# ls /opt/
1 2 3 wawa
[root@zyq ~]# usermod -md /opt/zyq zhaoyaqin
[root@zyq ~]# ll -d /opt/zyq/
drwx------. 2 zhaoyaqin zhaoyaqin 62 Jul 5 16:40 /opt/zyq/
[root@zyq ~]#
-L //锁定帐号。
//被锁定的帐号在/etc/shadow文件中密码前面会有一个!感叹号
-U //解锁帐号
[root@zyq ~]# echo '123' | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@zyq ~]# su - wawa
[wawa@zyq ~]$ su - harry
Password: #没锁定前,输入密码可以登录
Last login: Wed Jul 5 18:04:37 CST 2023 on pts/0
[harry@zyq ~]$ exit
logout
[wawa@zyq ~]$ exit
logout
[root@zyq ~]# usermod -L harry
[root@zyq ~]# su - wawa
Last login: Wed Jul 5 18:06:24 CST 2023 on pts/0
[wawa@zyq ~]$ su - harry
Password: #锁定后,不可登录
su: Authentication failure
[wawa@zyq ~]$
[wawa@zyq ~]$ exit
logout
[root@zyq ~]# usermod -U harry #解锁后可登录
-s #更改登录shell
[root@zyq ~]# grep apache1 /etc/passwd
apache1:x:991:990::/home/apache1:/sbin/nologin
[root@zyq ~]# usermod -s /bin/bash apache1
[root@zyq ~]# grep apache1 /etc/passwd
apache1:x:991:990::/home/apache1:/bin/bash
[root@zyq ~]#
//chsh 修改用户的默认shell
//语法:chsh [options] [username]
-s SHELL
切换用户命令su
切换用户的方式 | 特点 |
---|---|
su USERNAME | 非登录式切换,即不会读取目标用户的配置文件 |
su - USERNAME | 登录式切换,即会读取目标用户的配置文件。完全切换 |
su - | 不指定用户时默认切换至root用户 |
root su至其他用户不需要密码,非root用户su至其他用户时需要输入目标用户的密码
#语法:su [options] [-] [USER [arg]...]
[root@zyq ~]# cd /etc/
[root@zyq etc]# su harry #不建议使用此切换方式
[harry@zyq etc]$ pwd
/etc --->没有读取配置文件
[harry@zyq ~]$ exit
logout
[harry@zyq etc]$ exit
exit
[root@zyq etc]# su - harry #建议使用su -
Last login: Wed Jul 5 18:19:39 CST 2023 on pts/0
[harry@zyq ~]$ pwd
/home/harry --->读取了配置文件
[harry@zyq ~]$
-c 'COMMAND' #切换身份执行命令,命令执行结束后又回到原来的身份
[root@zyq ~]# su - harry -c 'mkdir 123'
[root@zyq ~]# ls /home/harry/
123
[root@zyq ~]#
密码管理
密码管理命令passwd
语法:passwd [options] [USERNAME]
--stdin //从标准输入获取用户密码, \
//例:echo "redhat"|passwd --stdin user1
-l //锁定用户
-u //解锁用户
-d //删除用户密码
-n mindays //指定最短使用期限
-x maxdays //指定最长使用期限
-w warndays //提前多少天开始警告
-i inactivedays //非活动期限,密码过期后到禁用前的这段时间
密码生成工具openssl
#语法:openssl command [ command_opts ] [ command_args ]
command //包含标准命令、消息摘要命令、加密命令
version //查看程序版本号
dgst //提取特征码
passwd //生成密码
rand //生成伪随机数
//提取特征码
[root@zyq ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= 67fde8b9b073074a028f18eb58882f61
//生成密码 openssl passwd -1 -salt string #string一般为8位
[root@zyq ~]# openssl passwd -1 -salt abcdefgh
Password:
$1$abcdefgh$M55TzYaaccxVGbptZWaxX/
//生成随机数 openssl rand -base64 NUM
//NUM表示随机数的长度
[root@zyq ~]# openssl rand -base64 20
A6yDAuuBkAo6XdQEfY/v9+tT5yw=
组管理
创建组命令groupadd
//语法:groupadd [options] GROUP
-g GID //指定GID
-r //添加一个系统组
删除组命令groupdel
//语法:groupdel [options] GROUP
//删除组时只需要指定组名即可
权限管理
权限简介
文件的权限主要针对三类对象进行定义:
- owner:属主,u
- group:属组,g
- other:其它,o
d
rwx
r-x
r-x
d
/-
rwx
r-x
r-x
目录/文件 u g o
每个文件针对每个访问者都定义了三种权限:
权限 | 对应的操作对象 | 权限说明 |
---|---|---|
r | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
w | 文件 | 可写,可以编辑或删除此文件 |
x | 文件 | 可执行,eXacutable,可以在命令提示符下 当作命令提交给内核运行 |
r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
w | 目录 | 可以在此目录中创建文件,也可删除此目录中的文件 |
x | 目录 | 可以使用cd切换进此目录,也可以 使用ls -l查看内部文件的详细信息 |
权限的二进制与十进制转换:
权限 | 二进制 | 十进制 |
---|---|---|
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
权限管理命令
修改权限的命令chmod
//修改三类用户的权限:
//语法:chmod MODE file,...
-R //递归修改权限
//修改某类用户或某些类用户权限:
//u,g,o,a(用户类别)
[root@zyq ~]# ll 123 abc
-rw-r--r--. 1 root root 52 Jun 29 16:41 123
-rw-r--r--. 1 root root 56 Jun 29 16:44 abc
[root@zyq ~]#
[root@zyq ~]# ll 123 abc
-rw-r--r--. 1 root root 52 Jun 29 16:41 123
-rw-r--r--. 1 root root 56 Jun 29 16:44 abc
[root@zyq ~]# chmod o+w 123 abc
[root@zyq ~]# ll 123 abc
-rw-r--rw-. 1 root root 52 Jun 29 16:41 123
-rw-r--rw-. 1 root root 56 Jun 29 16:44 abc
[root@zyq ~]# chmod u-w 123
[root@zyq ~]# ll 123
-r--r--rw-. 1 root root 52 Jun 29 16:41 123
[root@zyq ~]# chmod a=r 123
[root@zyq ~]# ll 123
-r--r--r--. 1 root root 52 Jun 29 16:41 123
//chmod 用户类别=MODE file,.....
//chmod 用户类别=MODE,用户类别=MODE file,.....
//修改某类的用户某位或某些位权限:
//u,g,o,a(用户类别)
//chmod 用户类别+|-MODE file,.....
//chmod 用户类别+|-MODE,用户类别+|-MODE file,.....
//chmod +|-MODE file,.....
修改文件属主和属组的命令chown
chown命令只有管理员可以使用。
//chown USERNAME file,...
-R //修改目录及其内部文件的属主
[root@zyq ~]# ll abc
-rw-r--rw-. 1 root root 56 Jun 29 16:44 abc
[root@zyq ~]# chown harry abc
[root@zyq ~]# ll abc
-rw-r--rw-. 1 harry root 56 Jun 29 16:44 abc
[root@zyq ~]# chown :test abc
[root@zyq ~]# ll abc
-rw-r--rw-. 1 harry test 56 Jun 29 16:44 abc
[root@zyq ~]# chown wawa.wawa abc
[root@zyq ~]# ll abc
-rw-r--rw-. 1 wawa wawa 56 Jun 29 16:44 abc
//chown USERNAME:GROUPNAME file,...
//chown USERNAME.GROUPNAME file,...
遮罩码
为什么文件创建以后默认权限是644?
为什么目录创建以后默认权限是755?
这是由遮罩码umask来控制的。
从名字就能看出来,遮罩码umask是用来隐藏一些权限的。举例:如果你不想让人家认出你,你会怎么办?
文件最终的权限为:
- 666-umask
目录最终的权限为:
- 777-umask
文件默认是不能具有执行权限的,如果算得的结果有执行权限则将其权限整体加1。
linux安全上下文与特殊权限
linux安全上下文
前提:进程有属主和属组;文件有属主和属组
- 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;
- 启动为进程后,其进程的属主为发起者,属组为发起者所属的组
- 进程访问文件时的权限取决于进程的发起者:
- 进程的发起者是文件的属主时,则应用文件属主权限
- 进程的发起者是文件的属组时,则应用文件属组权限
- 应用文件“其它”权限
特殊权限
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
SUID(4) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
//如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
# chmod u+s file
[root@zyq ~]# chmod u+s /usr/bin/sleep
[root@zyq ~]# ll /usr/bin/sleep
-rwsr-xr-x. 1 root root 37464 May 31 2022 /usr/bin/sleep
[root@zyq ~]# su - harry
Last login: Fri Jul 7 11:40:10 CST 2023 on pts/0
[harry@zyq ~]$ sleep 1000 &
[1] 1162
[harry@zyq ~]$ ps -ef | grep sleep
root 1162 1134 0 12:44 pts/0 00:00:00 sleep 1000 (属主为root)
harry 1170 1134 0 12:44 pts/0 00:00:00 grep --color=auto sleep
# chmod u-s file
[root@zyq ~]# chmod u-s /usr/bin/sleep
[root@zyq ~]# ll /usr/bin/sleep
-rwxr-xr-x. 1 root root 37464 May 31 2022 /usr/bin/sleep
[root@zyq ~]# su - harry
Last login: Sat Jul 8 12:42:03 CST 2023 on pts/0
[harry@zyq ~]$ sleep 1000 &
[1] 1197
[harry@zyq ~]$ ps -ef | grep sleep
harry 1197 1178 0 12:46 pts/0 00:00:00 sleep 1000 (属主为harry)
harry 1199 1178 0 12:46 pts/0 00:00:00 grep --color=auto sleep
SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
//默认情况下,用户创建文件时,其属组为此用户所属的基本组;
//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组
//为此设定了SGID的目录的属组
# chmod g+s DIR
[root@zyq tmp]# ll
total 0
drwxr-xr-x. 2 harry harry 6 Jul 9 14:45 123
[root@zyq tmp]# chmod g+s 123/
[root@zyq tmp]# ll
total 0
drwxr-sr-x. 2 harry harry 6 Jul 9 14:45 123
[root@zyq ~]# cd /tmp/123/
[root@zyq 123]# ls
[root@zyq 123]# touch haha
[root@zyq 123]# ll
total 0
-rw-r--r--. 1 root harry 0 Jul 9 14:48 haha (此时创建的为文件是程序文件的属组,而不是启动者)
# chmod g-s DIR
//如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
[root@zyq ~]# chmod g-s /tmp/123/
[root@zyq ~]# touch /tmp/123/file
[root@zyq ~]# ll /tmp/123/file
-rw-r--r--. 1 root root 0 Jul 9 14:53 /tmp/123/file
[root@zyq ~]# ll /tmp/123
total 0
-rw-r--r--. 1 root root 0 Jul 9 14:53 file (取消特殊权限后,创建的文件恢复了默认的启动用户所属组)
-rw-r--r--. 1 root harry 0 Jul 9 14:48 haha
Sticky(1) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
4755 //有SUID,文件权限为755
2755 //有SGID,文件权限为755
1755 //有Sticky,文件权限为755
//这里前面的4、2、1分别表示SUID、SGID、Sticky
文件系统访问控制列表facl
facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。
//语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m //设定
u:UID:perm
g:GID:perm
//setfacl -m u:test:rw file
[root@zyq ~]# su - harry
Last login: Sun Jul 9 15:05:10 CST 2023 on pts/0
[harry@zyq ~]$ ls /opt/
1 2 3 file wawa zyq
[harry@zyq ~]$ echo 'redhat' > /opt/file
-bash: /opt/file: Permission denied (没有权限,写入不成功)
[harry@zyq ~]$ exit
logout
[root@zyq ~]# setfacl -m u:harry:rw /opt/file (赋予Harry用户rw权限)
[root@zyq ~]# su - harry
Last login: Sun Jul 9 15:10:45 CST 2023 on pts/0
[harry@zyq ~]$ echo 'redhat' > /opt/file
[harry@zyq ~]$ cat /opt/file
redhat
//setfacl -m g:test:rw file
//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如:\
//setfacl -m d:u:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限
-x //取消
u:UID
g:GID
//setfacl -x u:test file
//setfacl -x g:test file
-b //Remove all
//语法:getfacl [-aceEsRLPtpndvh] file ...
//getfacl file 查看文件的权限
[root@zyq ~]# getfacl /opt/file
getfacl: Removing leading '/' from absolute path names
# file: opt/file
# owner: root
# group: root
user::rw-
user:harry:rw- (Harry用户被赋予的rw权限)
group::r--
mask::rw-
other::r--
[root@zyq ~]# setfacl -x u:harry /opt/file (-x取消权限)
[root@zyq ~]# getfacl /opt/file
getfacl: Removing leading '/' from absolute path names
# file: opt/file
# owner: root
# group: root
user::rw- (已被取消)
group::r--
mask::r--
other::r--
sudo
sudo
可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo
命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:
-
who which_hosts=(runas) command
- who:User_Alias,表示运行命令者的身份
- which_hosts:Host_Alias,通过哪些主机
- runas:Runas_Alias,以哪个用户的身份
- command:Cmnd_Alias,运行哪些命令
别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:
- 用户别名:
- User_Alias NETWORKADMIN =
- 用户的用户名
- 组名,使用%引导
- 还可以其它已经定义的用户别名
- User_Alias NETWORKADMIN =
- 主机别名:
- Host_Alias =
- 主机名
- IP地址
- 网络地址
- 其它主机别名
- Host_Alias =
- Runas别名:
- Runas_Alias =
- 用户名
- %组名
- 其它的Runas别名
- Runas_Alias =
- 命令别名:
- Cmnd_Alias =
- 命令路径
- 目录(此目录内的所有命令)
- 其它已定义的命令别名
- Cmnd_Alias =
演示没有设置sudo命令的操作
[root@zyq ~]# echo '123' | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@zyq ~]# su - harry
Last login: Sun Jul 9 15:11:56 CST 2023 on pts/0
[harry@zyq ~]$ useradd alice
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
[harry@zyq ~]$ sudo useradd alice
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 harry:
harry is not in the sudoers file. This incident will be reported.
演示设置sudo的操作
[root@zyq ~]# ll /etc/sudoers
-r--r-----. 1 root root 4328 Aug 26 2021 /etc/sudoers
[root@zyq ~]# visudo
[root@zyq ~]# grep harry /etc/sudoers
harry ALL=(ALL) /usr/sbin/useradd
[root@zyq ~]# su - harry
Last login: Sun Jul 9 15:29:28 CST 2023 on pts/0
[harry@zyq ~]$ useradd alice
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
[root@zyq ~]# su - harry
Last login: Sun Jul 9 16:10:58 CST 2023 on pts/0
[harry@zyq ~]$ sudo useradd alice
[harry@zyq ~]$ id alice
uid=2006(alice) gid=2006(alice) groups=2006(alice)
[root@zyq ~]# visudo
[root@zyq ~]# grep harry /etc/sudoers
harry ALL=(ALL) NOPASSWD: /iusr/sbin/useradd,/usr/sbin/userdel
[root@zyq ~]# su - harry
Last login: Sun Jul 9 16:17:20 CST 2023 on pts/0
[harry@zyq ~]$ userdel alice
userdel: Permission denied.
userdel: cannot lock /etc/passwd; try again later.
[harry@zyq ~]$ sudo userdel alice
[harry@zyq ~]$
//sudo命令语法:sudo [options] COMMAND
-V //显示版本编号
-h //会显示版本编号及指令的使用方式说明
-l //列出当前用户可以使用的所有sudo类命令
[root@zyq ~]# su - harry
Last login: Sun Jul 9 16:22:49 CST 2023 on pts/0
[harry@zyq ~]$ sudo -l
Matching Defaults entries for harry on zyq:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User harry may run the following commands on zyq:
(ALL) NOPASSWD: /iusr/sbin/useradd, /usr/sbin/userdel #可以看到所有可使用sudo命令
-v //因为sudo在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码,这个参数
//是重新做一次确认,如果超过N分钟,也会问密码
-k //让认证信息失效,如果不指定-k,默认认证信息在5分钟后失效
-b //将要执行的指令放在后台执行
-u USERNAME //以指定的用户名执行命令,默认为root
管理命令
w //显示当前登录到系统的用户有哪些,以及其正在做什么
sleep //睡眠,写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上sleep # \
//表示停顿#秒后再执行后面的命令
sleep NUMBER[SUFFIX]...
SUFFIX:
s:秒,默认
m:分
h:小时
d:天
last //显示/var/log/wtmp文件,显示用户登录历史及系统重启历史
-n # //显示最近#次的相关信息
lastb //显示/var/log/btmp文件,显示用户错误的登录尝试
-n # //显示最近#次的相关信息
lastlog //显示每个用户最近一次成功登录信息
-u username //显示特定用户最近的登录信息
basename //显示路径基名
last
显示/var/log/wtmp
文件,用户登录历史及系统重启信息历史
-n #
显示最近#次登录信息
[root@zyq ~]# last
root pts/0 192.168.227.1 Sun Jul 9 15:54 still logged in
reboot system boot 5.14.0-162.6.1.e Sun Jul 9 15:54 still running
root pts/0 192.168.227.1 Sat Jul 8 11:10 - 15:54 (1+04:44)
reboot system boot 5.14.0-162.6.1.e Sat Jul 8 11:09 - 15:54 (1+04:45)
root pts/0 192.168.227.1 Fri Jul 7 11:34 - crash (23:35)
reboot system boot 5.14.0-162.6.1.e Fri Jul 7 11:33 - 15:54 (2+04:21)
root pts/1 192.168.227.1 Thu Jul 6 18:41 - 18:48 (00:06)
root pts/0 192.168.227.1 Thu Jul 6 10:40 - 19:48 (09:08)
root pts/0 192.168.227.1 Wed Jul 5 09:20 - 10:37 (1+01:17)
reboot system boot 5.14.0-162.6.1.e Wed Jul 5 08:38 - 15:54 (4+07:16)
root pts/0 192.168.227.1 Tue Jul 4 19:34 - crash (13:03)
root pts/0 192.168.227.1 Tue Jul 4 14:58 - 19:30 (04:32)
......
lastab
—/var/log/btmp
,显示用户登录错误信息
-n #
[root@zyq ~]# lastb
harry pts/0 Wed Jul 5 18:07 - 18:07 (00:00)
btmp begins Wed Jul 5 18:07:57 2023
lastlog
显示每个用户最近一次登录信息
-u
查看指定用户