用户信息文件是/etc/passwd
文件内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
yy:x:666:1000::/home/yy:/bin/bash
$1用户名 $2密码占位符 $3 UID $4 GID $5注释信息 $6 家目录位置 $7 默认shell
组文件/etc/group
root:x:0:yy 此表示root组是yy用户的附加组
$1组名 $2 占位符 $3 GID $4 组用户
密码文件
/etc/shadow /etc/shadow- 第二个是默认的备份文件
root:$6$2x6s1sLb5F5J4qaE$ZcxA5ENZzJTnGDAus/0mkSvglTDUcxSQ1NdN8kk/iDLhUVElViufKOLOf80ufQ5ZA7kXHxzCN2sMzhqCZOKqU1::0:99999:7:::
$1 表示用户名
$2 为密码的密文
第一个$和第二个$中间数字表示加密用的算法 此处为6 是sha512算法
1=md5
2=sha1 sha默认加密长度是160
3=sha224 后面跟的数字是他们的加密长度
4=sha256
5=sha384
6=sha512 sha 就是 安全的哈希算法
第二个$和第三个$中间的是添加的随机数
作用是让一样的密码一样的算法所得出的密文不一样
[root@yangyang ~]# echo "haha" | md5sum
7494ab07987ba112bd5c4f9857ccfb3f -
[root@yangyang ~]# echo "haha" | sha1sum
d961c3de6d6c99429806ae3d6d03f316a1168ac6 -
[root@yangyang ~]# echo "haha" | sha224sum
bb84499b78a7b8b6f77101b45dabcef0bed4660415d04b73b539498d -
[root@yangyang ~]# echo "haha" | sha256sum
bcb4fe6563d225fbc7b0e90571fc670f1ee197f18ba18e52a39c2ca80672812f -
[root@yangyang ~]# echo "haha" | sha384sum
af4b9a1a6974b14d309de0e817d0709c8e90e5ba433bf12ffd6be17dbffb34ec10af68899565d1a1b2f953b5acbd5e2e -
[root@yangyang ~]# echo "haha" | sha512sum
91d590d5f726fa14d07748c3add508459849bfc7228d8e59f204c81fffec0b7e1a8edf636726244a3bfb2715d9de505e0bc9529d046b5af2542d1d3de48e1c23 -
如果没有随机数一样的密码同一种算法得出的密文是一样的
登录时输入密码交给系统,系统在和随机数一起算 得出一样的结果就证明密码正确
添加用户
Useradd [选项] 用户名
-u 指定uid
-g 指定基本组的组id 此组要事先存在
-G 指定用户的附加组 多个组用逗号分隔
-d 指定用户的家目录 默认是在/home下
-M 不创建用户的家目录
-s 指定用户登录时的shell 解释器
-r 创建系统用户
创建用户时默认设定的配置文件 /etc/login.defs
也可以使用
Useradd -D [选项] 的方式修改修改结果保存于/etc/default/useradd
-s 指定默认用户登录的解释器
修改用户属性
Usermod [选项] 用户名
-u uid
-g gid
-G 附加组 通常于-a 一起使用 不用-a则会覆盖之前的附加组
-c 修改注释信息
-d 修改家目录 通常于-m一起使用 用户将以前家目录的文件一起转移到新的家目录
-l 修改用户名
-s 修改默认shell
-L 锁定用户密码 此时/etc/shadow对应的用户密码前会出现!(一个)
-U 解锁用户密码
删除用户
userdel [选项] 用户名
-r 删除家目录
添加组
groupadd [选项] 组名
-g 指定GID
-r 创建系统组
修改组属性
Groupmod [选项] 组名
-g gid
-n 组名
删除组
groupdel 组名
设置用户密码
passwd [选项] 用户名
passwd 修改自己用户的密码
passwd username 修改其他用户的密码,仅root有权限
-l -u 锁定和解锁用户密码 此时/etc/shadow对应的用户密码前会出现!!(两个)
-d 清除用户密码
-e 设置过期时间
-i 设置非活动时间
-n 设置密码最短使用期限
-x 设置密码最长使用期限
-w 警告期限
--stdin
echo “PASSWORD” | passwd --stdin USERNAME
经常用于在脚本内设置用户密码
Gpasswd [选项] 组名
-a 向组中添加用户
-d 向组中移除用户
Id [选项] [用户名]
-u 仅显示uid
-g 仅显示gid
-G 显示所有组id
-n 只显示用户名而非id 通常于上面的选项一起使用
Su 命令
Su - username
以登录模式切换
Su username
非登录模式切换
除root外 其他用户使用su 切换用户必须输入对应用户的密码
-c ‘COMMAND’仅以用户的身份运行指定的命令 注意命令要用单引号引用
newgrp [组名]
临时切换指定的组为基本组
(会模拟用户重新登录,以初始化工作环境)
权限管理
查看文件的权限
ls -l
rwx rwx rwx
(前三位)是属主权限列表
(中间三位) 属组权限列表
(后三位) 其他用户权限列表
权限的组合机制
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
对于文件
r=read 读权限 = 可获取文件的数据
w=write 写权限 = 可修改文件的数据
x=excute 执行权限 = 可将文件运行为进程
对于文件来说出于安全的考虑默认是没有执行权限的
对于目录
r = 可使用ls命令或许其下的所有文件列表
w = 可修改此目录下的文件列表 即创建和删除
x = 可cd至此目录中 且可以使用ls -l 来获取所有文件的属性
权限的管理命令
chmod [选项] mode file
常用选项
-R 递归修改 (针对目录)
我一般mode使用数字来表示
[root@yangyang ~]# chmod 755 1.sh
[root@yangyang ~]# ll 1.sh
-rwxr-xr-x 1 root root 0 5月 31 20:19 1.sh
[root@yangyang ~]#
chown 可以修改属主属组
-R 递归修改 (针对目录)
[root@yangyang ~]# chown yy:yy 1.sh
[root@yangyang ~]# ll 1.sh
-rwxr-xr-x 1 yy yy 0 5月 31 20:19 1.sh
[root@yangyang ~]# chown :root 1.sh
[root@yangyang ~]# ll 1.sh
-rwxr-xr-x 1 yy root 0 5月 31 20:19 1.sh
[root@yangyang ~]# chown root 1.sh
[root@yangyang ~]# ll 1.sh
-rwxr-xr-x 1 root root 0 5月 31 20:19 1.sh
[root@yangyang ~]#
umask 值
命令
umask : 查看当前umask
umask [MASK] 临时设置umask值
MASK 以数字来表示
umask默认0022
文件666 减 umask
之所以文件是要666减去umask值是因为 文件默认不能有执行权限,若减去的结果中有执行权限 则加1
目录 777 减 umask
文件特殊权限
suid sgid sticky
0 0 0 = 0
0 0 1 = 1
0 1 0 = 2
0 1 1 = 3
1 0 0 = 4
1 0 1 = 5
1 1 0 = 6
1 1 1 = 7
umask值的第一位用来表示文件的特殊权限
通过以上数字来表示对应的权限 1表示有权限0表示没权限
suid
- 任何一个可执行文件是否可以运行为进程取决于执行的用户有没有权限
- 启动为进程后 其进程的属主是原本文件用户而不是执行的用户
- chmod u+s “FILE” chmod u-s “FILE”
sgid
1默认情况下 用户创建文件后属组为用户的基本组
2一但目录有了sgid权限后 在这个目录下创建文件的属组为目录的属组
3 chmod g+s “DIR” chmod g-s “DIR”
Sticky
1 目录设置此权限后 自己只能删除自己的文件,
2 chmod o+t “DIR” chmod o-t “DIR”
权限映射关系
SUID user 占据属主的执行权限位
s 属主有执行权限
S 属主没有执行权限
SGID group 占据group的执行权限
s 属组有执行权限
S 属组没有执行权限
stisky other 占据ohter 执行权限
t ohter有执行权限
T ohter没有执行权限