4. Linux用户及权限管理
用户,组,和权限管理
每个使用者:用户
组:用户组;用户容器
用户类别:
管理用户:
普通用户:
系统用户
登陆用户
用户标识:UserID (UID)
16bits 二进制数字:0-65535
管理员:0
普通用户:1-65535
系统用户:1-499(centos6)1-999(centos7)
登陆用户:500-60000(centos6),1000-60000(centos7)
名称解析:名称转换
username <---> UID
根据名称解析库进行解析:/etc/passwd
root:x:0:0:root:/root:/bin/bash
组:
组类别1:
管理员组
普通用户组
系统组
登陆组
组标识:GroupID ;GID
普通用户组:1-65535
系统用户组:1-499(centos6);1-999 (centos7)
登陆用户组:500-60000(centos6),1000-60000(centos7)
名称解析:/etc/group
root:x:0:
组类别2:
用户主(基本)组:
用户的附加组:
组类别3:
私有组:组名与用户名相同,且只包含一个用户
公共组:组内包含多个用户
认证信息:
通过比对事先存储的,与登陆时提供的信息是否一致
password:
用户密码库文件:/etc/shadow
root:$6$NTfQ1/FiZ$YaJxvT4kw1tc7BfT25lbxl2Tm8w3Sf5Joz.gha.BPJ6qpZXLVTRKPYvJ5GAPj35EZ4pIHPOaAfmsM8.2qRkzt1:18278:0:99999:7:::
组的密码库文件:/etc/gshadow
root:::
密码的使用策略:
1.使用随机密码
2.最短长度不要低于8位
3.大小写字母数字特殊字符组成
4.定期更换
加密算法:
对称加密:加密和解密使用同一个密码
非对称加密:加密和解密使用一对儿密钥
密钥对儿:
公钥:
私钥:
单项加密:只能加密,不能解密;提取数据特征。
定长输出:
雪崩效应:一点微小改变会引起结果的巨大差异
[root@myEcs ~]# echo "how are you"|md5sum 5ea0b7cb299e8c26b2d9c87039f5e7ad - [root@myEcs ~]# echo "how are you?"|md5sum ce55c98ac24d4c7764877fa58ab441ef - [root@myEcs ~]#
算法:md5 sha sha256 sha384 sha512
在计算知识加salt,添加的随机数。
/etc/passwd:用户信息库
hxj_test:x:1000:1000::/home/hxj_test:/bin/bash
name:password:UID:GID:GECOS:directory:shell
name:用户名
passwd:可以是加密的密码,也可以是占位符x:
UID:uid
GID:用户所属的主组的id号
GECOS:注释信息
directory:用户的家目录,主目录
shell:用户的默认shell,登陆时默认shell。
/etc/shadow:用户的密码文件
hxj_test:$6$tmzktr3P$4QZUl7wDsD6nCaZ6fIWObzokWbAdd4PmOttxsevWozhW/Ue9A2B3KBv1eTjAbmoKE2H74Xb.nRJ68IrW20dVb.:18365:0:99999:7:::
用户名:加密的密码:最近一次修改密码的时间:密码的最短使用期限:密码的最长使用期限:警告阶段:过期期限:保留字段
/etc/group:组的信息文件
group_name:password:GID:user_list
user_list:该组的用户成员;以此组为辅加组的用户的用户列表。
linux用户和组管理:
安全上下文:
进程:进程应当以发起者的身份运行
进程对文件的访问权限,取决于发起此进程的用户的权限。
系统用户:为了能够让后台进程或服务类进程以非管理员身份运行,通常需要为此创建多个普通用户,这类用户从来不用登陆系统。
相关命令:useradd ,userdel,usermod,passwd,groupadd,groupdel,gpasswd,chage,chsh,id,su
groupadd:创建一个新组
语法:groupadd [选项] group_name
-g GID:指定GID,默认是上一个组的GID+1
[root@myEcs ~]# groupadd -g 2000 hxj_group1 [root@myEcs ~]# tail -1 /etc/group hxj_group1:x:2000: [root@myEcs ~]#
-r :创建系统组。
[root@myEcs ~]# groupadd -r group_sys
groupmod:修改组
-g:修改GID
[root@myEcs ~]# groupmod -g 1002 hxj_group1 [root@myEcs ~]# tail -1 /etc/group hxj_group1:x:1002: [root@myEcs ~]#
-n:修改组名
[root@myEcs ~]# groupmod -n hxj_group01 hxj_group1 [root@myEcs ~]# tail -1 /etc/group hxj_group01:x:1002: [root@myEcs ~]#
groupadel:删除组
[root@myEcs ~]# groupdel hxj_group01 [root@myEcs ~]# tail -2 /etc/group hxj_group:x:1001: group_sys:x:988: [root@myEcs ~]#
useradd:创建用户
语法:useradd [选项] username
-u,--uid UID:指定UID
[root@myEcs ~]# useradd -u 1001 hxj_mysql [root@myEcs ~]# tail -1 /etc/passwd hxj_mysql:x:1001:1002::/home/hxj_mysql:/bin/bash
-g,--gid GROUP:指定基本组id,此组必须事先存在
root@myEcs ~]# useradd -g cloud hxj_user1
useradd:“cloud”组不存在
[root@myEcs ~]#
-c:指明注释信息。
[root@myEcs ~]# useradd -c "hxj is cool" hxj_user1 [root@myEcs ~]# tail -1 /etc/passwd hxj_user1:x:1002:1003:hxj is cool:/home/hxj_user1:/bin/bash [root@myEcs ~]#
-G,--groups:指明用户所属的附加组,多个组之间用逗号分隔。
[root@myEcs ~]# useradd -G hxj_test,hxj_group,group_sys,hxj_mysql,hxj_user1 hxj_user2 [root@myEcs ~]# tail -6 /etc/group hxj_test:x:1000:hxj_user2 hxj_group:x:1001:hxj_user2 group_sys:x:988:hxj_user2 hxj_mysql:x:1002:hxj_user2 hxj_user1:x:1003:hxj_user2 hxj_user2:x:1004: [root@myEcs ~]# tail -7 /etc/group
-d:指定用户的家目录。通过复制/etc/skel此目录重命名实现的。指定的家目录路径如果事先存在,则不会为用户复制环境配置文件。
[root@myEcs ~]# useradd -d /tmp/hxj_hon hxj_user3 [root@myEcs ~]# ls /tmp/ a.txt hxj_hon issue.txt [root@myEcs ~]#
[root@myEcs tmp]# mkdir hxj_home1 [root@myEcs tmp]# useradd -d /tmp/hxj_home1/ hxj_user4 useradd:警告:此主目录已经存在。 不从 skel 目录里向其中复制任何文件。 [root@myEcs tmp]#
-s:指明用户的默认shell,可用的所有shell列表存储在/etc/shells文件中。
[root@myEcs tmp]# cat /etc/shells /bin/sh /bin/bash
/bin/nologin /usr/bin/sh /usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh [root@myEcs tmp]#
[root@myEcs tmp]# useradd -s /bin/csh hxj_user5 [root@myEcs tmp]# tail -1 /etc/passwd hxj_user5:x:1006:1007::/home/hxj_user5:/bin/csh [root@myEcs tmp]#
-r:创建系统用户。
-M:不为用户创建主目录
-f:密码过期后账户被彻底禁用之前的天数。
-D:显示创建用户一些默认信息
[root@myEcs tmp]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@myEcs tmp]#
创建用户时默认信息配置文件:/etc/login.defs
使用useradd -D 修改的文件路径在:/etc/default/useradd
usermod:修改用户属性
语法:usermod [选项] 登陆
-u,--uid UID:修改用户的id为此处指定的新UID。
-g,--gid GROUP:修改用户所属的基本组。
-G,--groups GROUP...:修改用户所属的附加组,原来的附加组会被覆盖。
-a,--append:与-G一同使用,用于为用户添加新的附加组
-c:修改注释信息
-d:修改用户的家目录,用户原有的文件不会转移至新的家目录
-m: 只能与-d选项一同使用,用于将原来的家目录移动为新的加目录。
-l:修改用户名
-s:修改用户的默认shell
-L:锁定账户密码;即在用户原来的密码字符之前添加一个“!”。
-U:解锁用户的密码 ;解锁就是将“!” 去掉。
userdel USERNAME:删除用户,默认不删除用户家目录
-r:删除用户并且删除用户的家目录。
passwd命令:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
passwd:后面什么都没有,修改用户自己密码
passwd USERNAME:修改指定用户的密码,但仅仅root有此权限。
-l ;-u :锁定和解锁用户
-d;-d:清除用户的密码
[root@myEcs ~]# passwd -d hxj_user1 清除用户的密码 hxj_user1。 passwd: 操作成功 [root@myEcs ~]#
-e DATE:过期期限,日期
-i DATES:非活动期限,时间范围
-n DAYS:密码的最短使用期限
-x DAYS:密码的最长使用期限
-w DAYS:警告期限
--stdin:
[root@myEcs ~]# echo "hxj123456789" | passwd --stdin hxj_user1 更改用户 hxj_user1 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@myEcs ~]# [root@myEcs ~]# passwd -d hxj_user1
gpasswd命令:
组密码文件:/etc/gshadow
passwd [选项] group
- a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
newgrp [-] group:临时切换指定的组为基本组
charg:修改密码的过期信息
chage [选项] 登录名
-d
-E
-W
-m
-M
id命令:显示用户的真实有效id
id [OPTION]... [USER]
[root@myEcs ~]# id hxj_user1 uid=1002(hxj_user1) gid=1003(hxj_user1) 组=1003(hxj_user1) [root@myEcs ~]#
-u:仅仅显示有效的uid
[root@myEcs ~]# id -u hxj_user1 1002 [root@myEcs ~]#
-g:仅仅显示基本组id
[root@myEcs ~]# id -g hxj_user1 1003 [root@myEcs ~]#
-G:仅仅显示用户所属的所有组的id
[root@myEcs ~]# id -G hxj_user1 1003 [root@myEcs ~]#
-n:显示名称而非id。可以和上面的的选项一起用。
su命令:切换用户
登陆式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
非登陆式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他用户。
[root@myEcs ~]# su - hxj_user1 上一次登录:二 4月 14 21:06:51 CST 2020pts/0 上 [hxj_user1@myEcs ~]$ pwd /home/hxj_user1 [hxj_user1@myEcs ~]$ exit logout [root@myEcs ~]# su hxj_user1 [hxj_user1@myEcs root]$ pwd /root [hxj_user1@myEcs root]$
-c "COMMAND":仅仅以指定用户的身份运行此处指定用户的命令,不用登陆到指定的用户,来运行命令。
[root@myEcs ~]# su - hxj_user1 -c "df -h" Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 5.0G 33G 14% / devtmpfs 909M 0 909M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 668K 919M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0 [root@myEcs ~]# whoami root [root@myEcs ~]#
权限管理:
进程安全上下文:
rwxrwxrwx:
做三位:定义user(owner)的权限
中三位:定义group的权限
右三位:定义other的权限
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同,如果相同,则应用属主的权限;否则则检查进程的属主是否属于文件的属组,如果是,则应用属组权限,否则就只能应用other的权限
权限:
r:读
w:写
x:执行
文件:
r:可获取文件的数据。
w:可修改文件的数据。
x:可将此文件运行为进程
目录:
r:可使用ls命令获取其下的所有文件信息,不能获取详细信息,不能使用ls -l
w:可修改此目录下的文件列表。即创建或删除文件
x:可cd至此目录中,且可使用ls -l来获取文件的详细属性信息。
[hxj_user1@myEcs tmp]$ ll total 20 -rw-r--r-- 1 root root 45 Apr 12 16:10 a.txt drwxr-xr-x 2 root root 4096 Apr 13 22:51 hxj_home1 drwx------ 2 hxj_user3 hxj_user3 4096 Apr 13 22:48 hxj_hon -rw-r--r-- 1 root root 23 Apr 12 16:24 issue.txt d--x------ 2 hxj_user1 hxj_user1 4096 Apr 15 20:12 test1 [hxj_user1@myEcs tmp]$ ls test1/ //无法使用ls命令查看目录内容 ls: cannot open directory test1/: Permission denied [hxj_user1@myEcs tmp]$ cd test1/ //可以进入目录 [hxj_user1@myEcs test1]$
权限组合机制:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
权限组合命令:
三类用户:
u:属主
g:属组
o:其他
a:所有
chmod命令:
chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
权限表示法:u= g= o= a=
root@myEcs tmp]# chmod a=rwx,g=rw,o=r a.txt [root@myEcs tmp]# ll 总用量 4 -rwxrw-r-- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]#
[root@myEcs tmp]# chmod a=rwx a.txt [root@myEcs tmp]# ll 总用量 4 -rwxrwxrwx 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]#
权限表示法:u+ g+ o+ a+ u- g- o- a-
[root@myEcs tmp]# ll 总用量 4 -rwxrwxrwx 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]# chmod u-r,g-r,o-r a.txt [root@myEcs tmp]# ll 总用量 4 --wx-wx-wx 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]#
[root@myEcs tmp]# chmod a-rwx a.txt [root@myEcs tmp]# ll 总用量 4 ---------- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]#
chmod [OPTION]... OCTAL-MODE FILE...
chmod 777 FILE
chmod [OPTION]... --reference=RFILE FILE...
[root@myEcs tmp]# ll 总用量 4 ---------- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]# chmod --reference /etc/fstab a.txt // 引用其他文件或目录的权限修改当前文件或者目录的权限 [root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]# ll /etc/fstab -rw-r--r-- 1 root root 313 7月 11 2019 /etc/fstab [root@myEcs tmp]#
chmod选项:
-R:递归修改
从属关系管理命令:chown,chgrp
chown [OPTION]... [OWNER][:[GROUP]] FILE...
修改属主属组:
[root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]# chown hxj_mysql: a.txt //修改属主 [root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_mysql hxj_mysql 45 4月 12 16:10 a.txt [root@myEcs tmp]#
[root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_mysql hxj_mysql 45 4月 12 16:10 a.txt [root@myEcs tmp]# chown :hxj_user5 a.txt //修改属组 [root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_mysql hxj_user5 45 4月 12 16:10 a.txt [root@myEcs tmp]#
[root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_mysql hxj_user5 45 4月 12 16:10 a.txt [root@myEcs tmp]# chown hxj_user1:hxj_user2 a.txt //同时修改属主属组 [root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_user1 hxj_user2 45 4月 12 16:10 a.txt [root@myEcs tmp]#
chown [OPTION]... --reference=RFILE FILE...
[root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 hxj_user1 hxj_user2 45 4月 12 16:10 a.txt [root@myEcs tmp]# chown --reference /etc/passwd a.txt //引用其他文件或者目录的属主和属组修改当前文件或者目录 [root@myEcs tmp]# ll 总用量 4 -rw-r--r-- 1 root root 45 4月 12 16:10 a.txt [root@myEcs tmp]#
chown选项:
-R:递归修改
umask:文件权限的反向掩码,遮罩码。
文件: 666-umask
目录: 777-umask
注意:文件为什么是666 - umask呢?因为文件默认不应该有写权限,如果减得到的结果中有执行权限,则需要将其加1;目录不受影响。
如:umask : 023
创建文件的默认权限为:666 - 023 = 644(other减得到3,将其加1为4)
创建目录的默认权限为:777 - 023 = 754
练习:使创建的目录默认权限为750
[root@myEcs tmp]# umask 027 [root@myEcs tmp]# mkdir file [root@myEcs tmp]# ll 总用量 8 -rw-r--r-- 1 root root 45 4月 12 16:10 a.txt //仅仅对当前shell有效 drwxr-x--- 2 root root 4096 4月 16 21:21 file [root@myEcs tmp]#
install命令:
install [OPTION]... [-T] SOURCE DEST
[root@myEcs tmp]# install /etc/passwd /tmp/ //将passwd文件复制到tmp目录下,install命令复制的文件默认加上755的权限。 [root@myEcs tmp]# ll 总用量 12 -rwxr-xr-x 1 root root 2099 4月 16 21:29 passwd [root@myEcs tmp]#
单源复制:
install [OPTION]... SOURCE... DIRECTORY
多源复制 :
install [OPTION]... -t DIRECTORY SOURCE...
创建目录:
install [OPTION]... -d DIRECTORY...
选项:
-m:设定目标文件权限,默认权限为755
-o:设定目标文件属主
-g:设定目标文件属组
-d:创建目录
mktemp命令:创建临时文件
[root@myEcs tmp]# mktemp /tmp/a.XXXXXXX /tmp/a.Rw2OvDi [root@myEcs tmp]# mktemp /tmp/a.XXXXXXX /tmp/a.UXfFe8G [root@myEcs tmp]# mktemp /tmp/a.XXXXXXX /tmp/a.lmDR7h9

浙公网安备 33010602011771号