用户信息可以用 id 用户名 查询,可以查到用户id、组id

一、用户管理
useradd 选项 用户名
-u 自定义用户uid
-g 指定用户主组
-G 指定用户附加组
-c 添加注释
-d 用户家目录,默认home/username
-s 指定shell解释器
-e 到期时间

userdel 选项 用户名
-r 同时删除主目录
-f 强制删除用户

usermod 选项 用户名
-l 修改用户名
-L 锁定用户登录系统
-U 解锁用户登录系统
-d -m:-d-m连用可以重新指定家目录并把旧数据转移过去
其他参数和useradd一致
用户信息在/etc/passwd文件中,所以直接修改文件也可以达到usermod的效果

用户添加是否成功,可以从/etc/passwd中看,该文件存储系统中所有用户信息
例如:

mysql:x:987:1001::/home/mysql:/bin/bash

用户名 密码占位符 用户id 组id 备注 主目录(登录目录) 默认shell
x表示密码占位符,实际密码在/etc/shadow
/etc/shadow文件专门用来存放用户密码,只有root用户有读写的权限

root:$1$DJSOhCw4$QHuJ6.DfOqsqnn7WM5CMz1:19699:0:99999:7:::

用户名:
加密密码:

新用户创建后此项为“!”,表示不能登录,
空表示登录不需要口令,“*”表示被锁定,“!!”表示密码过期了。
密码格式为:$type$salt$encrypted
$6开头的,表明是用SHA-512加密的,$1表明是用MD5加密的,$2是用Blowfish加密的,$5是用 SHA-256加密的。
第二个$后的字符串为salt,
第三个$后的字符串为明文密码和salt使用crypt函数加密后的结果

加密密码生成方法
$ mkpasswd -m sha-512 PASSWORD -S SALTSALT
$6$SALTSALT$MQZd2k7LgsATI3R86uv5QQaPEdjvUSmKXR7hQYUbvQMlCGaztAP3BoGPtZ3dWcdEaq/XdJrCpcoyWo0IjXjy70

$ perl -e 'print crypt "PASSWORD", "\$6\$SALT\$"'
$6$SALT$io0TPmhM8ythCm7Idt0AfYvTuFCLyA1CMVmeT3EUqarf2NQcTuLKEgP9.4Q8fgClzP7OCnyOY1wo1xDw0jtyH1                                                                                                                                                                                                     

$ ruby -e 'puts "PASSWORD".crypt("$6$SALT")'
$6$SALT$io0TPmhM8ythCm7Idt0AfYvTuFCLyA1CMVmeT3EUqarf2NQcTuLKEgP9.4Q8fgClzP7OCnyOY1wo1xDw0jtyH1
                                                                                                                                                                                                     
$ python3 -c 'import crypt; print(crypt.crypt("PASSWORD", "$6$SALT"))'
*******
$6$SALT$io0TPmhM8ythCm7Idt0AfYvTuFCLyA1CMVmeT3EUqarf2NQcTuLKEgP9.4Q8fgClzP7OCnyOY1wo1xDw0jtyH1
                                                                                                                                                                                                     
$ python2 -c 'import crypt; print(crypt.crypt("PASSWORD", "$6$SALT$"))'
$6$SALT$io0TPmhM8ythCm7Idt0AfYvTuFCLyA1CMVmeT3EUqarf2NQcTuLKEgP9.4Q8fgClzP7OCnyOY1wo1xDw0jtyH1
                                                                                                                                                                                                     
$ openssl passwd -salt SALT -6 PASSWORD
$6$SALT$io0TPmhM8ythCm7Idt0AfYvTuFCLyA1CMVmeT3EUqarf2NQcTuLKEgP9.4Q8fgClzP7OCnyOY1wo1xDw0jtyH1

最后一次修改密码的天数(从1970.1.1开始,空的表示禁用密码年龄功能):
两次密码修改的最小天数(此时间内不允许修改密码,0和空表示没有限制):
密码最大有效天数(过时间后的下一次登录会被要求修改密码,99999表示不限定,空表示不限制):
过期之前的警告天数:
账号密码宽限时间(密码到最大有效天数后仍然接受此密码的天数,空和0表示立即失效,-1表示密码用不失效):
账户失效的绝对天数(到这个时间后账户登录将被拒绝,无论密码是否过期):
标志位 一般不使用

用户添加后,默认主目录为home/用户名,会在home中创建一个目录

修改用户密码方法
方式1
passwd 用户名
脚本里可以写:echo “123456” | passwd 用户名 --stdin,–stdin用于读取标准输入

echo "123456" | passwd 用户名 --stdin

passwd命令:
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
–stdin 允许通过标准输入修改用户密码
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

方式2
替换/etc/shadow文件中用户对应的密码
获取加密密码:openssl passwd -salt DJSOhCw4 -1 qaz13579
sed命令执行替换:sed -i ‘s|zyk:!:|zyk:11DJSOhCw4$EAmBoRqC77iLebCaUCMCz/:|g’ /etc/shadow
脚本中可以编写:

useradd debugger
debugpass=`openssl passwd -salt DJSOhCw4 -1 123456`
sed -i 's|debugger:!:|debugger:'"$debugpass"':|g' /etc/shadow

sed的单引号中引用变量时,可以用先单引号,再双引号的方式

二、用户组管理
groupadd 选项 组名
-g 自定义组id

groupdel 组名

groupmod
-g 自定义组id
-n 组名称修改

组是否添加成功,可以从/etc/group中看,该文件存储组信息
例如:

mysql:x:1001:

组名称 密码 组id

三、权限管理
使用ll查询文件,可以看到文件权限

drwxr-xr-x  2 root root   6 Dec 19 16:54 root
drwx------  2 zyk  zyk   83 Dec 26 16:09 zyk

对于文件的权限有三种权限:读r 写w 执行x
“-”表示没有权限
drwxr-xr-x是文件权限的表示,第一位是文件类型,除去第一位后,前三位表示所有者的权限,中三位表示同组用户的权限,后三位表示其他用户的权限

linux中文件有几种类型:
-:普通文件
d:文件夹
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

修改用户对某文件的权限使用chmod命令
1.通过角色+/-/=权限来修改
chmod [选项] 用户+/-/=某项权限 文件名
用户有u所属者、g所属组、o其他用户、a所有用户,默认是a所有用户
+添加权限,-取消权限,=赋予权限
修改文件夹的权限的时候使用-R,将文件夹内所有文件递归添加权限
例如:chmod -R a=rwx /home/zyk,chmod -R ugo=rwx /home/zyk

2.通过三个八进制数修改
chmod [选项] 三个八进制数 文件名
第一个八进制数表示修改后的所有者权限,第二个表示修改后的所属组权限,第三个表示其他用户权限
在数值上,r=4,w=2,x=1,如果是rw权限,那么数值为6,rwx的数值为7
例如:chmod -R 777 /home/zyk

修改文件所有者使用chown命令
chown [选项] 用户名 文件名
例如:chown -R zyk /home/zyk

修改文件所属组使用chgrp命令
chgrp [选项] 组名 文件名
例如:chgrp -R root /home/zyk

当用户有目录的写权限,即使没有目录中文件的写权限,也能够将文件删除,有些不合理,可以使用粘滞位解决
粘滞位替代了其他用户的可执行权限的位置,用t表示。
可以使用 chmod +t [文件名] 的方式给目录添加粘滞位