1.1 生成包含大小写、数字随机密码 cat /dev/urandom |tr -dc [0-9a-zA-Z]|head -c 12

1.2 shadow文件详解 __[root@cenots7 ~]#getent shadow xuan

xiaowang:$6$59K3dttN$5MqODFEnbQBFXT/ZNn2eMJ2mTuJ0lL77NsZZhEdfRX1McM1WpOdcTQLHWaLS5EwsPl0nFnN.E9rcQYO6QZakY/:18099:0:99999:7:::
1.2.1 xiaownag,用户名
1.2.2 $6$U/C7/CGJU7dVjEzP$vTHrCiZc9drfQD1U0EskfDlCxrk4cOnIvIjYY2b0rSkFrMEJ.U6.EwJv9RvsFj2HcLNXwlUhYdEX9OXFX4Iy6/,密码区,用$划分成三个字段,$6,只是加密方式,这里用的是sha512。中间部分,是salt加密用的干扰字,后面部分才是真正的密码区。
1.2.3 上次密码更新时间,指的是从1970年到密码更新的天数。
1.2.4 密码不可变动的天数,0表示无限制。
1.2.5 密码的最长有效期。也是天数表示。到期前会有提示,按需要更新密码
1.2.6 密码到期前的警告期,用天数表示,7表示到期前7天就会提示要更新密码
1.2.7 密码过期后的宽限期。密码过期了,此时登录账号,必须立刻变更密码,如果不改密码,则退出登录。
1.2.8 账号的有效期。注意不是密码,是账号的有效期。此日期用的也是相对天数,相对1970年以来到失效期的天数。
1.2.9 备用

1.3 chage 主要修改shadow信息,密码的期限的相关操作

[root@cenots7 home]#chage -h
Usage: chage [options] LOGIN
//假设给xiaowang 配置账户密码信息
Options:
-d, --lastday LAST_DAY        set date of last password change to LAST_DAY|密码最后更新天数,按1970记零
chmod -d 18105 xiaowang .更新密码的变更日期
-E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE|账户过期天数,按1970年记零
chmod -E 18200 xiaowang .密码到18200-18105天后生效。
-h, --help                    display this help message and exit
-I, --inactive INACTIVE       set password inactive after expiration|密码非活动期限,限制登录
                        to INACTIVE
chage -I 10 xiaowang 密码到期后10天,可以登录,立即更改密码。
-l, --list                    show account aging information
chage -l xiaowang 显示信息
-m, --mindays MIN_DAYS        set minimum number of days before password
                        change to MIN_DAYS
-M, --maxdays MAX_DAYS        set maximim number of days before password
                        change to MAX_DAYS
chage-M  30 xiaowang 最长有效期,绝对天数表示.30天密码到期。
-R, --root CHROOT_DIR         directory to chroot into
-W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS|密码过期前警告天数  
chage -W 7 xiaowang 密码到期前7天警告。
//使用命令前,要给用户设定密码,新建用户无密码,使用此指令会出错
chage -E # xiaowang #表示密码最后更新的日+想要使用的天数。过期后登录系统,提示账号过期,请联系管理员。

1.4 useradd 添加用户

  -u 2000,指定用户的uid是2000  
  -o 配合-u,可以不用检查uid是否重复,但这样做容易混乱。
  -g MAINGROUP指定用户的主组,账号必须属于一个主组。
  -G 附属组列表。 指定用用户的附属组,用户可以有很多附属组。
  -c "describe" 描述信息,
  -d HOME_DIR指定家目录,目录要存在,不会自动创建
  -s /bin/bash 指定shell类型
  -N 不创建私用组。不会自动创建跟用户名相同的组
  -r 创建系统用户,默认不自动创立家目录。

新建用户相关文件 /etc/default/useradd
/etc/skel/* 家目录的隐藏文件拷贝模板文件
/etclogin.defs newusers 跟passwd格式文件,批量增加用户 chpasswd 批量修用户的密码

1.5 usermod 修改账户的相关信息

Usage: usermod [options] LOGIN

u UID 指定用户UID。  
g GID 指定主组的GID。  
G group1,group2,若保留原有的附加组,则 -aG .  
s 变更默认shell.  

c "描述信息"。-d 新的家目录,若不存在,则失败。如果要迁移,原有家目录,则-dm 配合使用。

l ,-l newname oldname 
L user 锁定用户,密码栏增加!,登陆时即使密码输入正确,也是提示登录错误。  
U user解锁用户.  
e YYYY—MM-DD,一定注意格式,必须用2019-07-01格式,否则不识别因为此处参数直接修改shadow文件,此字段是从1970年算起,指明用户账号有效期,过期日登录后会提示,过期联系管理员,并退出。  
f 设定非活动天数,即过期宽限期。

1.6 passwd

-d user,删除密码  
-l user,锁定用户  
-u user,解锁指定用户 
 -e user,登陆时必须修改密码*************常用
-n days user,在days内不允许修改密码
-x user 密码使用最长期限,用天表示。
-w user 提前多少天警告 
-i user 非活动期限  
///////修改用户密码信息有两个命令 passwd 或者 chage

1.7 组相关

1.7.1 gpasswd 更改组用户的密码、组中增加删除用户
gpasswd -d USER GROUP 从GROUP中删除USER  
gpasswd -a USER GROUP 增加USER至GROUP中
1.7.2 更改查看组成员
groupmems [option][action]  
gruopmems -g GROUPS 指定组  
groupmems -g grpname -a user 指定用户加入组。每次智能添加一个用户
groupmems -g grpname -d user 从组grpname 中删除user  
groupmems -g grpname -p 清空所有组员  
groupmems -g grpname -l 列出所有组员

1.8 权限配置及特殊权限

1.8.1 umask及特殊权限

配置文件 全局:/etc/bashrc 个人:~./.bashrc 。umask 022写入配置文件即可

1.8.2 Suid,Sgid,Sticky

Suid:用4表示,chmod u+s file 即可。用户运行程序,按程序文件本身的属主权限执行。占据属主的x执行权限位置,s表示原来有x执行权限,S表示原来没有执行权限。
SGid:用2表示,chmod g+s file 。s表示group有x ,S表示group原来没有x权限。
Sticky:用1表示,目录设置写权限,但目录里文件只有属主及root可以删除自己的文件。可以修改别人的文件,但无删除权限。占据other的x执行位,t表示other 有执行权,T表示无执行权。

1.8.2 文件的特定属性

chattr +i file ,不能删除,改名,移动。限定root误操作,取消用chattr -i file

chattr +a 只能追加内容,取消用chattr -a
lsattr file 查看文件的特定属性

1.9 访问控制列表ACL

参考博客ACL基础 ACL进阶

ACL可针对用户、用户组来设置权限,子文件、目录自动继承父目录的权限
setfacl -m u:wang:rwx file|directory 修改用户的acl
setfacl -m g:admins:rw file|directory 修改组的acl
setfacl -x u:wang file|directory 删除acl

setfacl -b file 清楚文件所有附加的ACL权限。
getfacl file1 | setfacl --set-file=- file2 参考file1给file2设置权限
mask之影响属主及其他外的 人和组的最大权限。
getfacl -R /dir/ > acl.txt 保存acl,tar后可以还原。
实列:setfacl -m u:xuan:rwx f1 setfacl -m g:xuan:rw f1
setfacl -x u:xuan 删除acl权限
权限检查执行顺序,是否属主?是直接生效。是否在acl user表,在,生效。是否在acl group列表,在,生效。注意ll查看到的group 权限是mask 权限。mask限定最高权限。若user属于文件的属组group,同时也是acl group 列表,则会获取两个group的累加权限。