0xff001用户/组管理
1、描述
用户和组:
系统上的每一个进程(运行程序)都是作为一个特定的用户运行的
每个文件都由特定的用户拥有
对文件和目录的访问受到用户的限制
与正在运行的进程相关联的用户决定该进程可访问的文件和目录
2、查看当前用户信息
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
3、查看文件的owner
[root@localhost ~]# ll
总用量 0
-rw-r--r--. 1 root root 0 4月 30 11:21 1.txt
-rw-rw-rw-. 1 root root 0 4月 30 11:29 4.txt
drwxr-xr-x. 2 root root 6 4月 30 11:21 dir
drwxrwxrwx. 2 root root 6 4月 30 11:29 dir1
4、查完运行的进程username
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 128092 4000 ? Ss 11:13 0:01 /usr/lib/systemd/systemd --swi
5、用户组信息存储的文件
用户基本信息文件/etc/passwd
用户密码信息文件/etc/shadow
-
用户组信息文件/etc/group
0xff002用户管理
1、创建用户
[root@tianyun ~]# useradd user01
. 未指定该用户的主组
. 未指定该用户的附加组
. 未指定用户的HOME
. 未指定用户的SHELL
. 未指定用户的UID...
[root@tianyun ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01:x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x:512:
[root@tianyun ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)
[root@tianyun ~]# ls /var/spool/mail/user01
/var/spool/mail/user01
小结:
如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的Primary Group.
[root@tianyun ~]# useradd user02 -u 1503 //创建用户usr02,指定uid
[root@tianyun ~]# useradd user03 -d /aaa //创建用户user03 指定家目录
[root@tianyun ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell
[root@tianyun ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组
[root@tianyun ~]# useradd user10 -u 4000 -s /sbin/nologin
2、删除用户
[root@tianyun ~]# userdel user10
//删除用户user10,但不删除用户家目录和mail spool
[root@tianyun ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
[root@tianyun ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10
[root@tianyun ~]# userdel -r user2
//删除用户user2,同时删除用户家目录和mail spool
3、用户密码
方法一:root修改其他用户(alice)密码
[root@tianyun ~]# passwd alice
方法二:用户(zhuzhu)登录,自己修改密码。
[zhuzhu@tianyun ~]$ passwd
4、组成员管理
注意:只针对已存在的用户 -G 组名 组名 ... 用户名
[root@tianyun ~]# usermod -G hr niuniu2 //覆盖原有的附加组
[root@tianyun ~]# usermod -G fd,it niuniu2
[root@tianyun ~]# usermod -aG hr niuniu2 //增加新的附加组
5、其他选项管理
[root@tianyun ~]# usermod -s /sbin/nologin niuniu2
修改登录SHELL
0xff003组管理
1、创建、删除组
[root@tianyun ~]# groupadd hr
[root@tianyun ~]# groupadd net01 -g 2000
//添加组net01,并指定gid 2000
[root@tianyun ~]# grep 'net01' /etc/group
//查看/etc/group中组net01信息
[root@tianyun ~]# groupdel net01
//删除组net01
0xff004提权
1、永久提权
[alice@tianyun ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[alice@tianyun ~]$ su - root
password:
[root@tianyun ~]# useradd u1
成功
2、临时提权
以root身份授权普通用户xulei
[root@tianyun ~]# vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
[root@tianyun ~]# useradd xulei -G wheel
[root@tianyun ~]# id xulei
uid=504(xulei) gid=504(xulei) 组=504(xulei),10(wheel)
# passwd xulei
切换用户xulei登陆
[xulei@tianyun ~]$ useradd gougou10
-bash: /usr/sbin/useradd: 权限不够
[xulei@tianyun ~]$ sudo useradd gougou10
[xulei@tianyun ~]$ id gougou10
uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)
0xff004案例
1、案例
1 useradd是创建用户的命令。
2 usermod是修改用户的命令。
3 groupadd是创建组的命令。
4 -u 制定用户的UID。
5 -g 制定用户的基本组。
6 -G 制定用户的附加组。
7 /etc/passwd 可以查看的是用户的基本组。
8 /etc/group 可以查看用户的附加组。
一、创建用户AAA,同时生成基本组AAA
[root@QF ~]# useradd AAA
[root@QF ~]# grep AAA /etc/passwd
AAA:x:6001:6001::/home/AAA:/bin/bash
二、创建用户BBB,同时生成基本组BBB
[root@QF ~]# useradd BBB
[root@QF ~]# grep BBB /etc/passwd
BBB:x:6002:6002::/home/BBB:/bin/bash
三、创建组CCC
[root@qf ~]# groupadd CCC
[root@qf ~]# grep CCC /etc/group
CCC:x:7001:
四、修改用户AAA的基本组为CCC.
五、查看passwd中,用户AAA的基本组是CCC。
[root@qf ~]# usermod AAA -g CCC
[root@qf ~]# grep AAA /etc/passwd
AAA:x:6001:7001::/home/AAA:/bin/bash
六、修改用户BBB的附加组为CCC.
七、查看group中,用户BBB的附加组是CCC。
[root@qf ~]# usermod BBB -G CCC
[root@qf ~]# grep CCC /etc/group
CCC:x:7001:BBB
0xff05扩展知识
1、用户创建时的默认设置能否改变呢?(比如SHELL是禁止登陆)
[root@tianyun ~]# vim /etc/default/useradd
SHELL=/sbin/nologin
尝试新建用户吧。
2、用户密码策略能否设置
1.设置用户密码最小天数(-m),最大天数(-M),提醒天数(-W),不活跃天数(-l)
chage -m 0 -M 90 -W 7 -I 14 username
2.设置用户下次登录立刻更改密码。
chage -d 0 username
3.列出用户密码策略信息。
chage -l username
4.设置用户密码过期日期。
chage -E YYYY-MM-DD username
3、用户密码策略能否设置?(比如密码有效期只有14天)
描述
/etc/login.defs是设置用户帐号密码限制的文件。该文件里的配置对root用户无效
示例
[root@tianyun ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
CREATE_HOME yes
ENCRYPT_METHOD SHA512
MAN手册
man login.defs
/etc/login.defs文件定义了与/etc/password和/etc/shadow配套的用户限制设定。这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误。
如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs。
# *REQUIRED* required
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
#密码最大有效期
PASS_MIN_DAYS 0
#两次修改密码的最小间隔时间
PASS_MIN_LEN 5
#密码最小长度,对于root无效
PASS_WARN_AGE 7
#密码过期前多少天开始提示
#
# Min/max values for automatic uid selection in useradd
#创建用户时不指定UID的话自动UID的范围
UID_MIN 500
#用户ID的最小值
UID_MAX 60000
#用户ID的最大值
#
# Min/max values for automatic gid selection in groupadd
#自动组ID的范围
GID_MIN 500
#组ID的最小值
GID_MAX 60000
#组ID的最大值
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#当删除用户的时候执行的脚本
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
#使用useradd的时候是够创建用户目录
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
#用MD5加密密码
4、如何将多个用户加入到指定的组
描述
usemod -G 改写用户的组之后,用户的组信息是覆盖,也就是说usermod使用户只能存在于一个组。那么如何使用户同时属于多个组呢? gpasswd -a试试吧
案例
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# groupadd group1
[root@localhost ~]# gpasswd -a user1 group1
正在将用户“user1”加入到“group1”组中
[root@localhost ~]# gpasswd -a user2 group1
[root@localhost ~]# cat /etc/group
group1:x:1011:user1,user2
5.如何替换某个组的所有成员呢?
[root@localhost ~]# gpasswd -M user2,user3 group1
[root@localhost ~]# cat /etc/group
group1:x:1011:user2,user3
6.如何删除某个组的某个成员
原组中有三个用户,删除其中一个用户。
[root@localhost ~]# grep group1 /etc/group
group1:x:1011:user3,user1,user2
[root@localhost ~]# gpasswd -d user1 group1
正在将用户“user1”从“group1”组中删除
[root@localhost ~]# grep group1 /etc/group
group1:x:1011:user3,user2