几个配置命令:
chown --- 修改文件/目录所属信息 //格式 chown [选项] 新属主[:[新属组]] 被改变归属的文件或目录 chown [-选项] :新属组 被改变归属的文件或目录 chgrp --- 修改文件/目录所属组信息 //格式 chgrp [-选项] 新属组 被改变归属的文件或目录 chmod --- 修改文件/目录权限 //格式 chmod [-R] {[ugoa][+-=][rwxst]} [文件名或目录名] -R 递归修改指定目录下所有文件、子目录的权限 [ugoa] u 拥有者 / g 拥有者所属的用户组 / o 其他用户 / a 所有的 [+-=] + 增加某项权限 / - 去掉某项权限 / = 赋予某项权限 [rwxst] r 读权限 / w 写权限 / x 执行权限 / s 拥有者或所属组特殊权限 / t 其他人特殊权限 //或者 //格式 chmod --- [-选项] nnn 文件或目录 //nnn用三位八进制数字表示的所设置的权限(读 4 / 写 2 / 执行 1 ) ———————————————————————————————————————————————————————————————————————————————————————— setfacl --- 设置ACL权限 //格式 setfacle [选项] 文件名 getfacl --- 查看ACL权限 //格式 getfacle [选项] 文件名 m:设定 ACL 权限 给予用户 ACL 权限,则使用"u:用户名:权限"格式赋予 给予组 ACL 权限,则使用"g: 组名 :权限" 格式赋予 x:删除指定的 ACL 权限 b:删除所有的 ACL 权限 d:设定默认 ACL 权限(只对目录生效) k:删除默认 ACL 权限 R:递归设定 ACL 权限(目录下的所有子文件生效)
文件权限:
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1563 Nov 16 20:15 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Desktop
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Documents
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Downloads
-rw-r--r--. 1 root root 1718 Nov 16 22:07 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Music
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Pictures
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Public
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Templates
drwxr-xr-x. 2 root root 6 Nov 16 22:30 Videos
A —— B ——— C D E F ————— G ———— H
A:文件类型 d 目录文件/普通文本文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s 套接字文件
B:访问权限(主·组·其他)
C:文件数
D:属主
E:属组
F:文件大小
G:建档文件时间
H:文件名
对于访问文件权限,既可以用rwx来表示,也可以用数字来表示(其中:r---4 w---2 x---1),而文件的权限只针对三类对象(属主---u,属组---g,其他---o)。对于目录文件有读或者写权限必须要有执行权限 r-x rwx 。对于用户如果对该目录有写权限则可以删除该目录下所有用户创建的文件。
!!!系统默认文本文件权限值 644 文本文件最高权限值 666 622 !!!
!!! 目录文件的权限值 755 最高权限值 777 022 !!!
eg:文本文件为666,减去055权限,请问还有什么权限
666 rw- rw- rw-
- 055 --- r-x r-x
--------------------------
622 rw- -w- -w-
读写权利失去写权利,而由于本来就没有执行权利,所以剩余写权利
这就是安全上下文:
系统任何进程开始都保存为一个文件,由用户执行可执行文件后成为进程,
而进程能否执行,取决于用户对可执行文件有没有权限, --- rwx
而程序一旦执行后转为进程,那么进程就与之前的可执行文件无关,
进程的权限为进程发起者的权限, ---属主
而进程能否访问某个文件,则取决于发起者是否有权限访问目标文件, 访问者权限(主/组/其他)
而这一切就叫做安全上下文
文件权限修改:
[root@localhost ~]# mkdir shabi
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod a+rwx shabi
[root@localhost ~]# ll
drwxrwxrwx. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod o-rwx shabi
[root@localhost ~]# ll
drwxrwx---. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod o+r shabi
[root@localhost ~]# ll
drwxrwxr--. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod o=rw shabi
[root@localhost ~]# ll
drwxrwxrw-. 2 root root 6 Dec 2 14:42 shabi
//也可以使用数字更改 (4-w 2-r 1-x 可以进行叠加操作)
[root@localhost ~]# chmod 777 shabi
[root@localhost ~]# ll
drwxrwxrwx. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod 707 shabi
[root@localhost ~]# ll
drwx---rwx. 2 root root 6 Dec 2 14:42 shabi
[root@localhost ~]# chmod 704 shabi
[root@localhost ~]# ll
drwx---r--. 2 root root 6 Dec 2 14:42 shabi
文件的主和组修改:
//使用chown修改属主和属组
[root@localhost ~]# useradd new_user
[root@localhost ~]# groupadd new_group
[root@localhost ~]# chown -R new_user shabi
[root@localhost ~]# ll
drwx---r--. 2 new_user root 6 Dec 2 14:42 shabi
[root@localhost ~]# chown .new_group shabi
[root@localhost ~]# ll
drwx---r--. 2 new_user new_group 6 Dec 2 14:42 shabi
//使用chgrp修改组属性(只能修改组!!!)
[root@localhost ~]# chgrp root shabi
[root@localhost ~]# ll
drwx---r--. 2 new_user root 6 Dec 2 14:42 shabi
文件和目录的特殊权限:
在基本的rwx的权利下,还三个特殊的权限(s s t),分别对应(主 组 其他)
u+s 可执行文件所属用户的强制位,作用让进程文件的所属用户不再属于发起者的身份,而是程序文件自身的所属用户
g+s 可执行文件所属组的强制位,作用让进程文件的所属组不再属于发起者的身份,而是程序文件自身的所属组
o+t 仅对目录生效 该目录下用户只能删除自己的文件不能删除别人创建的文件
// u+s 执行属主特殊权限
[root@localhost ~]# ll
d----------. 2 root root 6 Dec 2 16:34 shabi
[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 51856 Jan 11 2019 /usr/bin/cat
[root@localhost ~]# chmod u+s /usr/bin/cat
// ---设置特殊权限后,执行该命令文件的所属用户就是文件自身的用户,root
//意思就是无论是谁执行cat都是以root权利的执行!!!
//g+s 可执行文件所属组的强制位
//作用让进程文件的所属组不再属于发起者的身份,而是程序文件自身的所属组对目录文件设置
//意思就是无论是谁对这个文件进行操作,都属于这个组的操作执行
//o+t 仅对目录生效 该目录下用户只能删除自己的文件不能删除别人创建的文件
//只能自己对自己创造的文件进行删除操作,不能对其他的文件进行操作
进程掩码:
①//查看umask权限 ---!!!此时权限为反权限(000代表是rwx都有!!!)
[root@localhost ~]# umask //查看当前用户的umask权限
0022 //此时的权限为组和其他人不能执行w权限
[root@localhost ~]# touch file800
[root@localhost ~]# mkdir dir800
[root@localhost ~]# ll -d dir800 file800
drwxr-xr-x. 2 root root 4096 3月 11 19:40 dir800
-rw-r--r--. 1 root root 0 3月 11 19:40 file800
②//这个为临时修改shell的值
[root@localhost ~]# umask 000
//此时组和其他赋予w权限
[root@localhost ~]# mkdir dir900
[root@localhost ~]# touch file900
[root@localhost ~]# ll -d dir900 file900
drwxrwxrwx. 2 root root 4096 3月 11 19:44 dir900
-rw-rw-rw-. 1 root root 0 3月 11 19:44 file900
③//永久修改shell值
[root@localhost ~]# vim /etc/profile //在这个文件下vim编辑
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[root@localhost ~]# source /etc/profile
//立即在当前shell中生效,此时执行的编辑文件的组和其他人没有w权限
④//umask同样可以对新建用户进行unmask权限修改
[root@localhost ~]# vim /etc/login.defs
UMASK 077
// etc/login.defs 为新建用户目录,此时设置新建用户只有属主有rwx,组和其他没有任何权限
[root@localhost ~]# useradd gougou
[root@localhost ~]# ll -d /home/gougou/
drwx------. 4 gougou gougou 4096 3月 11 19:50 /home/gougou/
//此时gougou用户只有rwx权限
[root@localhost ~]# vim /etc/login.defs
UMASK 000
//重新设置新用户权限,此时为都有rwx权限
[root@localhost ~]# useradd yangyang
[root@localhost ~]# ll -d /home/yangyang/
drwxrwxrwx. 4 yangyang yangyang 4096 3月 11 19:53 /home/yangyang/
ACL权限:
设置特殊的用户权限
//新建组shabi和两个新用户usr_one,usr_two还有一个组group_onw
[root@localhost ~]# mkdir shabi
[root@localhost ~]# useradd usr_one
[root@localhost ~]# useradd usr_two
[root@localhost ~]# groupadd group_onw
//将新用户加入到group_onw组内
[root@localhost ~]# gpasswd -M usr_one,usr_two group_onw
//修改shabi的默认组为group_onw,赋予770权限
[root@localhost ~]# chgrp group_onw shabi
[root@localhost ~]# chmod 770 shabi
[root@localhost ~]# ll -d shabi
drwxrwx---. 2 root group_onw 6 Dec 2 17:20 shabi
//此时usr_one,usr_two拥有对文件的rwx权限(组成员)
[root@localhost ~]# useradd usr_three
[root@localhost ~]# setfacl -m u:usr_three:rwx shabi
//使用setfacl设置新用户usr_three rwx权限
[root@localhost ~]# ll -d shabi
drwxrwx---+ 2 root group_onw 6 Dec 2 17:20 shabi
//此时查看文件,发现+ 意思就是存在特权用户
[root@localhost ~]# getfacl shabi
# file: shabi
# owner: root
# group: group_onw
user::rwx
user:usr_three:rwx
group::rwx
mask::rwx
other::---
//查看文件,发现usr_three拥有rwx权限,而usr_three不属于这个组
而组同样也可以设置ACL权限
[root@localhost ~]# setfacl -m m:rx shabi
[root@localhost ~]# getfacl shabi
# file: shabi
# owner: root
# group: group_onw
user::rwx
user:usr_three:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::---
//特殊权限为rx
ACL权限的删除
①//删除用户ACL权限
[root@localhost ~]# setfacl -x u:usr_three shabi
[root@localhost ~]# getfacl shabi
# file: shabi
# owner: root
# group: group_onw
user::rwx
group::rwx
mask::rwx
other::--- //此时已经没有显示 usr_three 的信息
②//删除组用户ACL权限
[root@localhost ~]# setfacl -x g:group_onw shabi
[root@localhost ~]# getfacl shabi
# file: shabi
# owner: root
# group: group_onw
user::rwx
group::rwx
mask::rwx
other::---
递归和默认ACL权限:
递归和默认是有区别的!!!
//递归给予ACL权限
(通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限)
setfacl -m u:用户名:权限 -R 文件名
//意思就是在这个文件下创造的新文件,ACL权限用户同样可以拥有ACL执行能力
//默认 ACL 权限
(如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的 ACL 权限)
setfacl -m d:u:用户名:权限 文件名
//意思就是在这个文件下创造的新文件,ACL权限用户同样可以拥有ACL执行能力(默认ACL权限只对新建的用户有作用,同样新建的文件是不具备执行权限的)
!!!这两个命令都是针对目录的,是不能给文件设置的,因为文件是不具备子文件的。