权限
1、linux中权限在文件中的标识
2、权限的描述形式
(1)字符形式 r read w write x excute
(2)数值形式 r=4 w=2 x=1
-rw-------. 1 root root 1456 Nov 19 12:19 anaconda-ks.cfg 600
drwxr-xr-x. 2 root root 6 Nov 19 14:12 Desktop 755
3、权限字符的含义
文本文件:r 查看文件内容 cat tac more less head tail grep vim
w 编辑文件内容 vim echo 123>a.txt cat<<EOF FILE
x 执行文件内容(脚本)命令文件
目录文件:r 查看目录中的文件名 ls
w 创建文件 touch mkdir cp mv > rm
x 执行cd (r-x) (rwx)
4、权限的匹配规则
可执行文件(命令文件)进程的所属用户身份是用户发起者身份;
判断发起者身份是否是目标文件所属用户,是,只匹配目标文件所属用户为的权限
不是,判断发起者身份是否是目标文件所属组用户,是组用户,只匹配目标文件所属组的权限
不是,直接匹配目标文件其他用户位的权限
5、修改权限
格式:chmod 权限 FILE..... #作为普通用户只能更改属于自己的文件权限
u所属用户位 g所属组 o其他用户 a所有
chmod ugo=rwx file1 == chmod a=rwx file1 ==chmod rwx file
chmod u=rw,g+r,o-r file ==chmod -x file
chmod 644 file2 rw-r--r--
chmod 006 file3
chmod u=6 file4 #错误的
-------------------------------------------------------------------------
chown 更改文件的所属用户
chown 用户名 file
chown 用户名:组名 file
chown .组名 file #只对文件的所属组更改
chgrp 更改文件的所属组
chgrp 组名 file
6、文件默认权限值
文本文件最高权限值:666
权限掩码(权限过滤值):022 #umask
文本文件默认的权限值:644
目录文件最高的权限值: 777
目录文件默认的权限值:022 #umask
目录文件默认的权限值:755
rw- rw- rw- 6 6 6
--- -wx -wx 0 3 3
rw- r-- r-- 6 3 3 -----错 644
eg:拷贝文件/etc/fstab 到/var/tmp/fstab
配置文件/var/tmp/fstab 的权限 • 文件/var/tmp/fstab 的拥有者是 zhangsan
• 文件/var/tmp/fstab 属于 zhangsan 组 • 文件/var/tmp/fstab 对任何用户不可执行 • 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
#cp /etc/fstab /var/tmp/fstab #chown zhangsan /var/tmp/fstab #chgrp zhangsan /var/tmp/fstab #chmod a-x /var/tmp/fstab #chmod o+r /var/tmp/fstab
7、特殊权限
u+s suid=4 所属用户的禁锢位
仅对可执行文件(命令文件)设置有意义: 可执行文件(命令文件)设置u+s权限,可执行文件的进程所属用户是可执行文件自身的用户: eg:
[root@ggbbbbb ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd
[root@ggbbbbb ~]# ll /etc/shadow
----------. 1 root root 2105 Dec 4 11:56 /etc/shadow
[rhel85@ggbbbbb ~]$ passwd (为什么普通用户可以修改密码/etc/shadow)
Changing password for user rhel85.
Current password:
原因:通过普通用户执行passwd,passwd文件的进程身份是root
设置情况:通过任意用户执行命令通过root身份来执行就可以设置特殊权限u+s
g+s sgid=2 所属组的禁锢位
(1)对可执行文件设置有意义:(很少用) 可执行文件(命令文件)设置g+s权限,可执行文件的进程所属组是可执行文件自身的所属组 (2)对目录文件设置有意义: 任意用户在该目录下创建的文件,文件的所属组都是目录的所属组 eg:
[root@ggbbbbb ~]# mkdir /pub
[root@ggbbbbb ~]# chmod 777 /pub
[root@ggbbbbb ~]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 96144 Jul 10 2021 /usr/bin/touch
[user@ggbbbbb ~]$ touch /pub/u1
[user@ggbbbbb ~]$ ll /pub/u1
-rw-rw-r--. 1 user user 0 Dec 4 16:20 /pub/u1
--------------------------------目录g+s-----------------------------------------------
[root@ggbbbbb~]# chmod g+s /pub
[root@ggbbbbb ~]# ll /pub -d
drwxrwsrwx. 2 root root 16 Dec 4 16:20 /pub
[user@ggbbbbb ~]$ touch /pub/u2
[user@ggbbbbb~]$ ll /pub/
total 0
-rw-rw-r--. 1 user user 0 Dec 4 16:20 u1
-rw-rw-r--. 1 user root 0 Dec 4 16:22 u2
o+t sticky=1 冒险位
仅对目录文件有意义: 目录文件设置o+t权限后,用户只能删除自己的文件不能删除别人的文件
[root@ggbbbbb ~]# ll -d /test
drwxrwxrwx. 3 root root 102 Dec 4 15:18 /test
[root@ggbbbbb ~]# ll /test
total 0
-rw-r--r--. 1 root root 0 Dec 4 15:09 r2
-rw-r--r--. 1 root root 0 Dec 4 15:09 r3
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red1
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red2
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red3
-rw-r--r--. 1 user user 0 Dec 4 15:10 u1
-rw-r--r--. 1 user user 0 Dec 4 15:10 u2
-rw-r--r--. 1 user user 0 Dec 4 15:10 u3
[user@ggbbbbb test]$ rm -f r2 删除任意用户的文件
--------------------目录o+t----------------------------------
[root@ggbbbbb ~]# chmod o+t /test
[root@ggbbbbb ~]# ll -d /test
drwxrwxrwt. 3 root root 92 Dec 4 16:28 /test
[user@ggbbbbb test]$ rm -f r3
rm: cannot remove 'r3': Operation not permitted
[user@ggbbbbb test]$ rm -f u1
[user@ggbbbbb test]$ rm -f red1
rm: cannot remove 'red1': Operation not permitt ~]# ll -d /test
drwxrwxrwx. 3 root root 102 Dec 4 15:18 /test
[root@ggbbbbb ~]# ll /test
total 0
-rw-r--r--. 1 root root 0 Dec 4 15:09 r2
-rw-r--r--. 1 root root 0 Dec 4 15:09 r3
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red1
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red2
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red3
-rw-r--r--. 1 user user 0 Dec 4 15:10 u1
-rw-r--r--. 1 user user 0 Dec 4 15:10 u2
-rw-r--r--. 1 user user 0 Dec 4 15:10 u3
[user@ggbbbbb test]$ rm -f r2 删除任意用户的文件
--------------------目录o+t----------------------------------
[root@ggbbbbb ~]# chmod o+t /test
[root@ggbbbbb ~]# ll -d /test
drwxrwxrwt. 3 root root 92 Dec 4 16:28 /test
[user@ggbbbbb test]$ rm -f r3
rm: cannot remove 'r3': Operation not permitted
[user@ggbbbbb test]$ rm -f u1
[user@ggbbbbb test]$ rm -f red1
rm: cannot remove 'red1': Operation not permitted
8、扩展权限(隐藏)
./*
getfacl 查看文件的列表权限
[root@ggbbbbb ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
group::r--
other::r-- ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
group::r--
other::r--
stefcal 设置列表权限
-m指定权限列表
setfacl -m u:用户名(UID):权限 file
setfacl -m g:组名(GID):权限 file
[root@ggbbbbb ~]# setfacl -m u:xixi:rwx aaa
[root@ggbbbbb ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
user:xixi:rwx
group::r--
mask::rwx
other::r--
-x 删除扩展权限列表
-b 清空扩展权限(扩展权限的表示符)
[root@ggbbbbb ~]# setfacl -x u:xixi: aaa
[root@ggbbbbb ~]# ll aaa
-rwSr-Sr-T+ 1 redhat xixi 5 Dec 4 14:31 aaa
[root@ggbbbbb ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
group::r--
mask::r-- (扩展权限标识)
other::r--
[root@ggbbbbb ~]# setfacl -b aaa
[root@ggbbbbb ~]# ll aaa
-rwSr-Sr-T. 1 redhat xixi 5 Dec 4 14:31 aaa
用户、组
Liunx管理模式:
私有模式:每一个用户对应一和用户同名的组
共有模式:
用户类型(最多可创建65535)
管理员:root UID=0
普通用户:rhel1 1-65535
系统用户:系统安装自动创建 1-200 201-999
一般用户:手动添加 1000-60000
创建用户
useradd 用户名 /usr/sbin/useradd
-u 指定UID
-g 指定GID,修改用户基本组
-G 指定附加组
-c 注释
-d 家目录
-s 设置shell
查看用户
cat /etc/passwd 用户配置文件
grep ' 用户名' /etc/passwd
id 用户名
root:x:0:0:root:/root:/bin/bash /sbin/nologin 用户名:密码占位符:UID:GID:描述信息,注释字段:家目录:SHELL(登陆时shell,非登陆时shell)
用户修改
usermod [options] [选项参数] 用户名
格式 : #usermod 选项 组名 用户名
#useradd useer
-l 指定新的登录名 #usermod -l newuser user
-u 指定UID #usermod -u 1111 newuser
-g 指定GID,修改用户基本组 #usermod -g 1000 newuser
-G 指定加入附加组 #usermod -G b1 newuser
-c 注释 #usermod -c xiaoxioamake newsuer
-d 家目录 #usermod -d 家目录 newuser
-s 设置shell #usermod -s /sbin/nologin newuser
-L 锁定用户密码
-U 解锁用户密码
删除用户
userdel -r 用户 #删除用户以及用户相关的所有文件
注:默认也会删除用户的基本组,但是如果基本组中有其他用户,userdel -r 删除不会删除基本组
用户设置/修改密码
passwd [用户名] -d 删除用户密码 -l 锁定用户密码 -u 解锁用户密码 管理员:可指定用户名更改系统 ,任意用户的密码不需要输入之前的密码,不严格匹配密码等级设置。 普通用户:不可以指定用户名。只能更改自己密码,需要输入之前密码,严格匹配等级设置。 echo 密码 |passwd--stdin 用户名
chpasswd 批量更改用户密码
[root@ggbbbbbb ~]#cat users redhat: 1234 root:12345 xiao1:123456 [root@ggbbbbb ~]#cat users | chpasswd [root@ggbbbbb ~]#echo redhat:1234 | chpasswd
破解密码
关机-->开机-->鼠标进入启动界面-->第一个引导菜单-->e---->找到linux这一行在行尾添加rd
.break-->ctrl-x-->mount -o remount,rw /sysroot ---->chroot /sysroot-->passwd root--->设置密码--确认密码-->touch /.autorelabel-->exit-->exit(等)
组类别
管理组:root GID=0
普通用户:1-65535
系统组:
一般组:
主组、私有组,用户的默认组
附加组(额外组)用户的默认组除外的组
添加组
groupadd 组名
查看组
cat /etc/passwd 组配置文件
grep ' 组名' /etc/passwd
修改组信息
groupmod [options] [选项参数] 组名
-n 指定新组名 #groupmod -n g2 grp2 -g 指定GID #groupmod -g 2222 gr2
删除组
groupdel #删除组名
设置修改密码
gpasswd 组名
格式: gpasswd 选项 用户名 组名
-a 将用户加入指定组 #gpasswd -a ggbbb g2
-d 将指定用户从组移除 #gpasswd -d ggbbb g2
-M 指定组成员列表 #gpasswd -M user1,user2 g2 #gpasswd -M haha,xixi g2
--------------------------------------------------------------------------
-A 指定组长 #gpasswd -A haha g2
-R 锁定组密码 #gpasswd -R g2
登陆新组
newgroup 组名 切换身份
扩展
useradd haha /etc/passwd
/etc/group
/etc/shadow 密码文件
/etc/gshadow
/home/USERNAME (d)
/var/spool/mail/USERNAME (-)
groupadd /etc/group /etc/gshado /etc/shadow 用户密码文件