本节所讲内容:php
文件的基本权限:r w x (UGO+ACL)html
文件的高级权限:suid sgid stickypython
经过对文件设定权限能够达到如下三种访问限制权限:mysql
q 只容许用户本身访问;linux
q 容许一个预先指定的用户组中的用户访问;sql
q 容许系统中的任何用户访问。shell
咱们能够经过ls命令来查看一个文件的具体信息,加参数 –l 能够查看这个文件的权限信息vim
[root@panda mnt]# lswindows
[root@panda mnt]# touch a.txt安全
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 root root 0 Dec 5 20:37 a.txt
[root@panda mnt]# ls -l a.txt
-rw-r--r-- 1 root root 0 Dec 5 20:37 a.txt
[root@panda ~]# ll
total 8
-rw-------. 1 root root 1572 Jul 28 06:40 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jan 1 2017 Desktop
drwxr-xr-x. 2 root root 6 Jan 1 2017 Documents
drwxr-xr-x. 2 root root 6 Jan 1 2017 Downloads
-rw-------. 1 root root 1726 Jul 27 23:13 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Jan 1 2017 Music
drwxr-xr-x. 2 root root 6 Jan 1 2017 Pictures
drwxr-xr-x. 2 root root 6 Jan 1 2017 Public
drwxr-xr-x. 2 root root 6 Jan 1 2017 Templates
drwxr-xr-x. 2 root root 6 Jan 1 2017 Videos
[root@panda mnt]# stat -c %a a.txt
644
[root@panda mnt]# stat -c %A a.txt
-rw-r--r—
[root@panda ~]# getfacl /etc/hosts
getfacl: Removing leading '/' from absolute path names
# file: etc/hosts
# owner: root
# group: root
user::rw-
group::r--
other::r--
文件权限基本解释:
- |
rwx |
r-x |
r-x |
user1 |
user1 |
time |
FILENAME |
文件类型 |
拥有者的权限 |
所属组的权限 |
其余人的权限 |
拥有者 |
属组 |
最后修改时间 |
对象 |
其中:文件类型,能够为p、d、l、s、c、b和 –
q p表示命名管道文件
q d表示目录文件
q l表示符号链接文件
q -表示普通文件
q s表示socket套接口文件,好比咱们启用mysql时,会产生一个mysql.sock文件
q c表示字符设备文件
q b表示块设备文件
linux中文件扩展名
windows里经过扩展名来区分文件类型的。linux里文件扩展名和文件类型没有关系。但为了容易区分和兼容用户使用windows的习惯,咱们仍是会用扩展名来表示文件类型。举例以下:
l 源码.tar、.tar.gz、.tgz、.zip、.tar.bz表示压缩文件,建立命令通常为tar,gzip,zip等。
l .sh表示shell脚本文件,经过shell语言开发的程序。
l .pl表示perl语言文件,经过perl语言开发的程序。
l .py表示python语言文件,经过python语言开发的程序。
l .html、.htm、.php、.jsp、.do表示网页语言的文件。
l .conf表示系统服务的配置文件。
l .rpm表示rpm安装包文件。
例如:
[root@panda mnt]# ll a.txt
-rw-r-xr-- 1 root root 1 Dec 5 20:37 a.txt
表示文件a.txt是普通文件,文件的全部者是root用户,而root用户属于root组,文件只有1个硬链接,长度是5个字节,最后修改时间12月5日20:37。
全部者root对文件有读写执行权限,root组的成员对文件有读和执行权限,其余的用户对这个文件只有读的权限
有三种权限能够应用:读取,写入与执行,这些权限对访问文件和目录的影响以下:
权限 |
对文件的影响 |
对目录的影响 |
r(读取) |
能够读取文件的内容 |
能够列出目录的内容(文件名) |
w(写入) |
能够更改文件的内容 |
能够建立或删除目录中的任意文件 |
x(执行) |
能够做为命令执行文件 |
能够访问目录的内容(取决于目录中文件的权限) |
对于文件:
q r:读
q w:写
q x:执行
对于目录:
q r:读(看到目录里面有什么) ls
q w:建文件、删除、移动 touch mkdir rm mv cp
q x:进入 cd cat
具体说明:
r (Read,读取):对文件而言,具备读取文件内容的权限;对目录来讲,具备浏览目录的权限.
w (Write,写入):对文件而言,具备新增、修改文件内容的权限;对目录来讲,具备删除、移动目录内文件的权限。
x (execute,执行):对文件而言,具备执行文件的权限;对目录了来讲该用户具备进入目录的权限。
-:表示不具备该项权限
结束:
对于文件的全部者或者是属主, root能够将这些权限改变为任何它想指定的权限;
例如:一个文件只有读权限,那么它就禁止任何普通用户对它的修改;若是文件只有执行权限,那么系统容许它像一个程序同样执行。
全部者: 就是建立文件的用户,这个用户拥有对它所建立的文件的一切权限,全部者能够容许其所在的用户组能够访问全部者的文件。
用户组: 用户组是具备相同特征用户的逻辑集合,有时咱们须要让多个用户具备相同的权限,好比查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问受权,若是有10个用户的话,就须要受权10次,显然这种方法不太合理;另外一种方法是创建一个组,让这个组具备查看、修改此文件的权限,而后将全部须要访问此文件的用户放入这个组中,那么全部用户就具备了和组同样的权限。这就是用户组。
其它用户:系统内的其余全部者用户就是other用户类
u -rwx------:文件全部者对文件具备读取、写入和执行的权限。
u -rwxr--r--: 文件全部者具备读、写与执行的权限,用户组里用户及其余用户则具备读取的权限
u -rw-rw-r-x:文件全部者与同组用户对文件具备读写的权限,而其余用户仅具备读取和执行的权限。
u drwx--x—x: 目录全部者具备读写与进入目录的权限,其余用户近能进入该目录,却没法读取任何数据。
u drwx------: 除了目录全部者具备完整的权限以外,其余用户对该目录彻底没有任何权限。
每一个用户都拥有本身的专属目录,一般放置在/home目录下
这些专属目录的默认权限为【rwx------】表示目录全部者自己具备全部权限,其余用户没法进入该目录,以下图所示:
在当前用户状态下建立的文件或目录,自动成为该用户的所属
用到的命令:chown chgrp 若是对目录操做,-R
[root@panda ~]# ll /home/wang.txt
-rw-r--r--. 1 root root 0 Apr 7 21:16 /home/wang.txt
[root@panda ~]# chown :tom /home/wang.txt
[root@panda ~]# ll /home/wang.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# touch /home/li.txt
[root@panda ~]# chown jerry:jerry /home/li.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 jerry jerry 0 Apr 7 21:16 /home/li.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# chown .tom /home/li.txt
[root@panda ~]# ll /home/*.txt
-rw-r--r--. 1 jerry tom 0 Apr 7 21:16 /home/li.txt
-rw-r--r--. 1 root tom 0 Apr 7 21:16 /home/wang.txt
-rw-r--r--. 1 tom root 0 Apr 7 21:15 /home/yang.txt
[root@panda ~]# chgrp tom /home/yang.txt
[root@panda ~]# mkdir /home/dir1
[root@panda ~]# touch /home/dir1/test-{01..10}
[root@panda ~]# ls /home/dir1
test-01 test-02 test-03 test-04 test-05 test-06 test-07 test-08 test-09 test-10
[root@panda ~]# chown -R tom /home/dir1d
chown: cannot access ‘/home/dir1d’: No such file or directory
[root@panda ~]# chown -R tom /home/dir1
[root@panda ~]# ll /home/dir1
total 0
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-01
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-02
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-03
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-04
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-05
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-06
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-07
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-08
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-09
-rw-r--r--. 1 tom root 0 Apr 7 21:20 test-10
修改权限的相关命令:chmod
做用:修改文件、目录权限
用法:(中间的+、-、=表示添加仍是删除该用户的对应权限)
u-w |
user |
拥有者 |
g+x |
group |
组 |
o=r |
other |
其余人 |
a+x |
all |
全部人 |
删除文件的写权限
[root@panda mnt]# chmod u-w a.txt
[root@panda mnt]# ll
total 0
-r--r--r-- 1 root root 0 Dec 5 20:37 a.txt
让全部者所在的组用户拥有执行的权限
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r--r-- 1 san admin 0 Dec 5 21:04 b.txt
[root@panda san]# chmod g+x b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-xr-- 1 san admin 0 Dec 5 21:04 b.txt
删除其它用户对文件的读权限
[root@panda san]# chmod o-r b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-x--- 1 san admin 0 Dec 5 21:04 b.txt
[root@panda san]# chmod o+rwx b.txt
[root@panda san]# ll
total 0
drwxr-xr-x 2 san admin 6 Dec 5 21:04 aa
-rw-r-xrwx 1 san admin 0 Dec 5 21:04 b.txt
======================================================
chmod u+x file1 //属主增长执行
chmod a=rwx file1 //全部人等于读写执行
chmod a=- file1 //全部人没有权限
chmod ug=rw,o=r file1 //属主属组等于读写,其余人只读
ll file1 //以长模式方式查看文件权限
=======================================================
用到的命令:chown
做用:修改文件拥有者和所属组
语法:
q chown user:group 对象
q chown user 对象
q chown :group 对象
q -R :递归(目录下的全部内容所有更改,不然只修改目录)
举例以下:
修改文件的全部者和所属组
修改文件的全部者
修改文件的所属组
给目录及其里面的文件赋权
在目录下新建两个文件
扩展:
若是一个文件只有读的权限,拥有者是否能够写入文件内容呢?
[root@panda mnt]# ll
total 0
-rwxr--r-- 1 miao root 0 Dec 5 20:37 a.txt
dr-xr-xr-x 2 san admin 30 Dec 5 21:22 bb
[root@panda mnt]# chmod u-wx a.txt
[root@panda mnt]# ll a.txt
-r--r--r-- 1 miao root 0 Dec 5 20:37 a.txt
[root@panda mnt]# su - miao
Last login: Mon Dec 5 20:13:44 CST 2016 on pts/0
[miao@panda ~]$ cd /mnt
[miao@panda mnt]$ ls
a.txt bb
[miao@panda mnt]$ ll
total 0
-r--r--r-- 1 miao root 0 Dec 5 20:37 a.txt
dr-xr-xr-x 2 san admin 30 Dec 5 21:22 bb
[miao@panda mnt]$ vim a.txt
[miao@panda mnt]$ cat a.txt
nihao
[miao@panda mnt]$ exit
logout
rwx |
|||
r-- |
-w- |
--x |
|
100 |
010 |
001 |
二进制 |
4 |
2 |
1 |
十进制 |
组合 |
值 |
||
rw- |
4+2=6 |
||
r-x |
4+1=5 |
||
rw-r--r-- |
rw-=6 r--=4 r--=4 rw-r—r--=644 |
举例以下:
建一个目录TEST,要求以下:
一、root用户和test用户能够读写执行
二、其余用户没有任何权限
创建两个用户组group1和group2,再创建三个用户 user一、user二、user3,而且把前两个用户分配给组group1,最后一个用户分给组group2
实验1:用户1和2都属一个组,在1下建立一个文件,2能够访问查看吗?写入这个文件内容,绝对路径看能查看到里面内容吗?
实验2:若是不能访问,有几种方法设置可让2访问?
方法:修改用户的目录组权限,让它容许同组用户访问,其它用户不能够
[root@panda home]# su - user3
[user3@panda ~]$ ls /home/user1
ls: cannot open directory /home/user1: Permission denied
实验3:如何让用户3能够访问用户1的文件,可是不能修改用户3的主组
第一种:在user1目录的其它权限位置给一个权限
第二种状况:本身下来测试一下附加组
=======================================
一、权限对文件的影响
[root@panda home]# ll dir1/test-01
-rwxrwxrwx. 1 root root 0 Apr 7 21:20 dir1/test-01
[root@panda home]# ll -d dir1
drwxr-xr-x. 2 root root 4096 Apr 7 21:20 dir1
[root@panda home]# su - tom
Last login: Fri Apr 7 21:31:29 CST 2017 on pts/0
[tom@panda ~]$ exit
logout
[root@panda home]# su - tom
Last login: Fri Apr 7 21:51:05 CST 2017 on pts/0
[tom@panda ~]$ cat /home/dir1/test-01
[tom@panda ~]$ rm -f /home/dir1/test-01
rm: cannot remove ‘/home/dir1/test-01’: Permission denied
二、权限对目录的影响
[root@panda home]# ll -d dir1/
drwxr-xr-x. 2 root root 4096 Apr 7 21:20 dir1/
[root@panda home]# chmod 777 dir1/
[root@panda home]# ll -d dir1/
drwxrwxrwx. 2 root root 4096 Apr 7 21:20 dir1/
[root@panda home]# chmod 000 dir1/test-01
[root@panda home]# ll dir1/test-01
----------. 1 root root 0 Apr 7 21:20 dir1/test-01
[root@panda home]# su - tom
Last login: Fri Apr 7 21:51:19 CST 2017 on pts/0
[tom@panda ~]$ cat /home/dir1/test-01
cat: /home/dir1/test-01: Permission denied
[tom@panda ~]$ rm -f /home/dir1/test-01
[tom@panda ~]$ touch /home/dir1/test-001
首先看一个例子:
为何咱们建立的文件的权限是644呢?
咱们建立文件的默认权限是怎么来的?
如何改变这个默认权限呢?
umask命令容许你设定文件建立时的缺省模式,对应每一类用户(文件属主、同组用户、其余用户)存在一个相应的umask值中的数字
对于文件来讲,这一数字的最大值分别是6;系统不容许你在建立一个文本文件时就赋予它执行权限,必须在建立后用chmod命令增长这一权限(为了安全考虑)
4 2
对于目录来讲,则容许设置执行权限,这样针对目录来讲,umask中各个数字最大能够到7
umask设置了用户建立文件的默认权限,它与chmod的效果恰好相反.;umask设置的是权限“补码”,而chmod设置的是文件权限码。咱们只要记住umask是从权限中拿走相应的位便可 。如:umask值为022,则默认目录权限为755,默认文件权限为644
该命令的通常形式为:umask nnn 其中nnn为umask值000 – 777
umask设置了用户建立文件的默认权限,它与chmod的效果恰好相反.;umask设置的是权限“补码”,而chmod设置的是文件权限码。咱们只要记住umask是从权限中拿走相应的位便可 。如:umask值为022,则默认目录权限为755,默认文件权限为644
咱们通常在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
计算方法:
文件默认权限=666-umask值 666-022=644
目录默认权限=777-umask 值 777-022=755
Umask表示的是要减掉的权限
永久生效,编辑用户的配置文件vim .bash_profile
其实文件与目录设置不止这些,还有所谓的特殊权限。因为特殊权限会拥有一些“特权”.
于是用户若无特殊需求,不该该启用这些权限,避免安全方面出现严重漏洞,形成入侵,甚至摧毁系统!!!
特殊权限:
q SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变动成程序全部者
q SGID:限定:既能够给二进制可执行程序设置,也能够对目录设置
功能:在设置了SGID权限的目录下创建文件时,新建立的文件的所属组会 继承上级目录的所属组
q Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
q s对应的数值为
SUID |
SGID |
Stickybit |
u=四、u+s |
g=二、g+s |
o=一、o+t |
SUID属性通常用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的全部者权限。使用”ls -l” 或者”ll” 命令浏览文件时,若是可执行文件全部者权限的第三位是一个小写的”s”,就代表该执行文件拥有SUID属性。好比/usr/bin/passwd文件
注意:
一、若是一个文件被设置了SUID或SGID位,会分别表如今全部者或同组用户的权限的可执行位上;
二、linux系统规定,若是本来该位上有x,则这些属性显示为小写字母(有效),不然显示大写字母(无效)
三、因为SUID和SGID是在执行程序(程序的可执行位被设置)时起做用,而可执行位只对普通文件和目录文件有意义,因此设置其余种类文件的SUID和SGID位是没有多大意义的
一、咱们能够看到/etc/shadow文件是没有权限的。除了root用户能够操做,其它用户都不能够。可是由于passwd命令具备s特殊权限,因此咱们切换到普通用户后,修改普通用户密码,它是能够把信息写入到这个密码文件里面的
一、咱们能够看到/etc/shadow文件是没有权限的。除了root用户能够操做,其它用户都不能够。可是由于passwd命令具备s特殊权限,因此咱们切换到普通用户后,修改普通用户密码,它是能够把信息写入到这个密码文件里面的
二、看下面的例子,能够看到cat命令是没有s特殊权限的,咱们在普通用户下看密码文件,提示没有权限,若是咱们在root用户下,确是能够执行的,给cat命令添加s权限,咱们能够看到它是能够看到这个密码文件内容的
其实咱们是借用root用户的身份执行的
若是咱们删除s权限后
s(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件全部者换成用户组,该文件就能够任意存取整个用户组所能使用的系统资源。
强调: SUID通常用在文件上(脚本) SGID用在目录上比较多
[root@panda ~]# mkdir /tencent
[root@panda ~]# groupadd xuegod
[root@panda ~]# useradd -G xuegod xiaobai
[root@panda ~]# useradd -G xuegod dabai
[root@panda ~]#
[root@panda ~]# chown :xuegod /tencent/
[root@panda ~]# ll -d /tencent/
drwxr-xr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/
[root@panda ~]# chmod 775 /tencent/
[root@panda ~]# chmod g+s /tencent/
[root@panda ~]# ll -d /tencent/
drwxrwsr-x. 2 root xuegod 6 Oct 11 19:43 /tencent/
切换到xiaobai用户下面:
[root@panda ~]# su - xiaobai
[xiaobai@panda ~]$ cd /tencent/
[xiaobai@panda tencent]$ touch aa
[xiaobai@panda tencent]$ touch bb
[xiaobai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb
[xiaobai@panda tencent]$ exit
logout
退出
切换到dabai用户下面:
[root@panda ~]# su - dabai
[dabai@panda ~]$ cd /tencent/
[dabai@panda tencent]$ touch cc
[dabai@panda tencent]$ touch dd
[dabai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 aa
-rw-rw-r--. 1 xiaobai xuegod 0 Oct 11 19:45 bb
-rw-rw-r--. 1 dabai xuegod 0 Oct 11 19:46 cc
-rw-rw-r--. 1 dabai xuegod 0 Oct 11 19:46 dd
经过上面你们能够看到尽管用户变了,可是它的所属组是没有变的,所以别人在此目录中建立的任何目录和文件,所属组都是此目录的所属组,可是属主仍是本身,可是任何人在此目录建立的文件,均可以被删除
SBIT(Sticky):只针对目录有效,对文件无效,做用是防止别人删除掉对方的资料,防止用户本身的文件被别的用户误删除
[root@panda ~]# mkdir /tencent
[root@panda ~]# chmod 1777 /tencent/
[root@panda ~]# su - test
Last login: Tue Oct 11 20:12:57 CST 2016 on pts/2
[test@panda ~]$ cd /tencent/
[test@panda tencent]$ touch aa
[test@panda tencent]$ touch bb
[test@panda tencent]$ exit
logout
切换用户
[root@panda ~]# su - xiaobai
Last login: Tue Oct 11 20:11:14 CST 2016 on pts/2
[xiaobai@panda ~]$ cd /tencent/
[xiaobai@panda tencent]$ touch cc
[xiaobai@panda tencent]$ touch dd
[xiaobai@panda tencent]$ ll
total 0
-rw-rw-r--. 1 test test 0 Oct 11 20:14 aa
-rw-rw-r--. 1 test test 0 Oct 11 20:14 bb
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 cc
-rw-rw-r--. 1 xiaobai xiaobai 0 Oct 11 20:14 dd
[xiaobai@panda tencent]$ rm -f aa
rm: cannot remove ‘aa’: Operation not permitted --提示没有权限
[xiaobai@panda tencent]$ exit
logout
这就是sticky位的功能
ACL: Access Control List (ACL)访问控制列表
它是一种权限分配以外的广泛范式。例如,默认状况下你须要确认3个权限组:UGO。而使用ACL,你能够增长权限给其余用户或组别,而不单只是简单的"other"或者是拥有者不存在的组别。能够容许指定的用户A、B、C拥有写权限而再也不是让他们整个组拥有写权限
ACL使用状况:
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 miao miao 0 Dec 5 22:36 a.txt
若是我有一个用户san,想让它对文件a.txt有读写的权限,而其它用户不能够对这个文件有权限操做。有以几种状况:
一、 给other权限,存在的问题就是让全部用户都对这个文件有读写,达不到咱们的目的
二、 把SAN用户加入一个组,存在的问题就是:若是miao组里还有其它重要的文件,那么这个时候san用户也能够来这里随意访问,有安全隐患
三、 经过sudo。在普通用户状态下:经过sudo命令。存在的问题就是:你须要配置sudo文件,这个配置是有严格的格式要求。比较麻烦,也不灵活
经过上面咱们能够看:在LINUX中。由于对其它其它用户的权限定义过于宽泛,因此对用户权限细粒度的划分使用就比较麻烦,那么ACL就是用来解决这个问题的
[root@panda ~]# rpm -qf `which getfacl`
acl-2.2.51-12.el7.x86_64
[root@panda ~]# rpm -qf `which setfacl`
acl-2.2.51-12.el7.x86_64
ACL_USER_OBJ: 至关于Linux里file_owner的权限
ACL_USER: 定义了额外的用户能够对此文件拥有的权限
ACL_GROUP_OBJ: 至关于Linux里group的权限
ACL_GROUP: 定义了额外的组能够对此文件拥有的权限
ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限
ACL_OTHER: 至关于Linux里other的权限
举例以下:
[root@panda mnt]# getfacl a.txt
# file: a.txt
# owner: miao
# group: miao
user::rw-
group::r--
other::r--
[root@panda mnt]# getfacl --omit-header a.txt
user::rw-
group::r--
other::r—
[root@panda mnt]# setfacl -m u:san:rwx a.txt
[root@panda mnt]# getfacl --omit-header a.txt
user::rw- --定义了ACL_USER_OBJ,说明文件拥有者有读写权限
user:san:rw- --定义了ACL_USER,说明用户SAN也拥有了对此文件的读执行权限
group::r-- --定义了ACL_GROUP_OBJ,说明文件组拥有了读写权限
mask::rw- --定义了ACL_MASK的权限为读写
other::r— --定义了ACL+OTHER,说明其它用户对此文件没有任何操做权限
[root@panda mnt]# setfacl -b a.txt
[root@panda mnt]# ll a.txt
-rw-r--r-- 1 miao miao 0 Dec 5 22:36 a.txt
[root@panda mnt]# getfacl a.txt
# file: a.txt
# owner: miao
# group: miao
user::rw-
group::r--
other::r—
u 若是文件系统不支持ACL的话,你可能要从新挂载挂载一下你的文件系统
用的命令:
mount -o remount, acl [mount point]
u ACL中的MASK参数
若是文件有ACL_MASK值,那么文件的组权限中显示的权限就是mask的值,而不是组的权限,同时在MASK中,mask规定的是最大权限,也就是说假如你添加了一个普通用户的ACL权限是rw,可是mask的值确是r。那么这个用户对这个文件也只有r权限。
[root@panda mnt]# ll a.txt
-rw-rwxr-- 1 miao miao 0 Dec 5 22:36 a.txt
[root@panda mnt]# getfacl --omit-header a.txt
user::rw-
user:san:rwx-
group::r--
mask::rwx
other::r—
MASK的做用:它是用来临时的压制一些用户或者组的权限。尽可能保证其它人权限设置为空
setfact -m -x -b -d
ACL权限继承:
第一种写法:
[root@panda home]# setfacl -m u:jerry:rwx dir2/
[root@panda home]# setfacl -m d:jerry:rwx dir2/
第二种写法:
[root@panda home]# setfacl -m d:u:tom:r dir-33/
你们有时候发现用root权限都不能修改某个文件,这种状况大部分缘由是由于用chattr命令锁定该文件了。
文件系统属性权限:chattr(防止误操做包括root用户)
chattr命令的做用很大,经过chattr命令修改文件属性可以提升系统的安全性,可是它并不适合全部的目录。chattr命令不能保护/、/dev、/tmp、/var目录。
lsattr命令是显示chattr命令设置的文件属性
Linux文件系统扩展属性:chattr lsattr
chattr [+ - =] 选项 对象
q +:增长权限 -:删除权限 =:等于某个权限
q +a
对文件来讲:只能在文件中追加数据,但现有数据不能删除也不能进行修改,用追加方式,vi没法判断你作的操做是属于哪一种,因此不能用vi来编辑文件
对目录来讲:只容许在目录中创建和修改文件,可是不容许删除
q +i
对文件来讲:不能修改,删除文件,也不能添加和修改其内的数据,但能够查看文件里面的内容
对目录来讲:只能修改目录下的文件数据,但不能创建和删除文件
lsattr 可选参数 -a
举例:
对文件来讲:
建立一个新文件,并写入数据
[root@xuegod72 mnt]# echo 'xuegod-linux' > b.txt
[root@xuegod72 mnt]# cat b.txt
xuegod-linux
使用chattr添加a属性,让这个文件只能增长内容,不能修改内容
[root@xuegod72 mnt]# chattr +a b.txt
[root@xuegod72 mnt]# ll b.txt
-----w----+ 1 root root 13 Oct 12 11:15 b.txt
[root@xuegod72 mnt]# echo 123456 >> b.txt
上面能够看到是能够增长内容的
[root@xuegod72 mnt]# echo 78910 > b.txt
-bash: b.txt: Operation not permitted 没法修改内容
使用chattr添加i属性,让文件禁止任何人修改
[root@xuegod72 mnt]# chattr +i b.txt
[root@xuegod72 mnt]# echo 12345 >> b.txt
-bash: b.txt: Permission denied 没法添加内容
查看文件隐藏属性
[root@xuegod72 mnt]# lsattr -a b.txt
----ia---------- b.txt
删除添加的文件隐藏属性
[root@xuegod72 mnt]# chattr -i b.txt
[root@xuegod72 mnt]# chattr -a b.txt
[root@xuegod72 mnt]# lsattr b.txt
---------------- b.txt
实际应用:
[root@ xuegod72 ~]# chattr +a /etc/passwd
[root@l xuegod72 ~]# chattr +a /etc/shadow
其它还能针对日志文件进行设置