本节所讲内容:

文件的基本权限:r w x (UGO+ACL)

文件的高级权限:suid sgid sticky

第1章 文件的基本权限

1.1 权限的作用

通过对文件设定权限可以达到以下三种访问限制权限:

q  只允许用户自己访问;

q  允许一个预先指定的用户组中的用户访问;

q  允许系统中的任何用户访问。

1.2 查看文件权限

我们可以通过ls命令来查看一个文件的具体信息,加参数 –l 可以查看这个文件的权限信息

[root@panda mnt]# ls

[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组的成员对文件有读和执行权限,其他的用户对这个文件只有读的权限

1.3 权限说明

有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:

权限

对文件的影响

对目录的影响

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可以将这些权限改变为任何它想指定的权限;

例如:一个文件只有读权限,那么它就禁止任何普通用户对它的修改;如果文件只有执行权限,那么系统允许它像一个程序一样执行。

1.4 文件拥有者

所有者-用户组-其他用户

所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。

用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。

其它用户:系统内的其他所有者用户就是other用户类

1.5 举例说明

1.5.1 常见几种文件权限组成


-rwx------:文件所有者对文件具有读取、写入和执行的权限。


-rwxr--r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限


-rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。


drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。


drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

1.5.2 举例如下:

每个用户都拥有自己的专属目录,通常放置在/home目录下

这些专属目录的默认权限为【rwx------】表示目录所有者本身具有所有权限,其他用户无法进入该目录,如下图所示:

在当前用户状态下创建的文件或目录,自动成为该用户的所属

1.5.2 更改文件的所有者和属组

用到的命令: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

1.6 修改权限

修改权限的相关命令:chmod

作用:修改文件、目录权限

用法:(中间的+、-、=表示添加还是删除该用户的对应权限)

u-w

user

拥有者

g+x

group

o=r

other

其他人

a+x

all

所有人

1.6.1 对文件权限的修改

删除文件的写权限

[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 //以长模式方式查看文件权限
=======================================================

1.6.2 对目录的权限修改

1.6.3 一次修改多个权限

1.7 修改文件的拥有者及所属组

用到的命令:chown

作用:修改文件拥有者和所属组

语法:


chown user:group 对象


chown user 对象


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

1.8 使用数字表示权限

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,要求如下:

1、root用户和test用户可以读写执行

2、其他用户没有任何权限

1.9 综合案例

建立两个用户组group1和group2,再建立三个用户
user1、user2、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目录的其它权限位置给一个权限

第二种情况:自己下来测试一下附加组

=======================================

1、权限对文件的影响

[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

2、权限对目录的影响

[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

1.10 补码

首先看一个例子:

为什么我们创建的文件的权限是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

第2章 特殊权限

其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.

因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!
特殊权限:


SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效

功能:程序运行时的权限从执行者变更成程序所有者


SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置

功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会          继承上级目录的所属组


Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位


s对应的数值为

SUID

SGID

Stickybit

u=4、u+s

g=2、g+s

o=1、o+t

SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件

注意:

1、如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上;

2、linux系统规定,如果原本该位上有x,则这些属性显示为小写字母(有效),否则显示大写字母(无效)

3、由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是没有多大意义的

2.1.1  SUID举例如下

1、我们可以看到/etc/shadow文件是没有权限的。除了root用户可以操作,其它用户都不可以。但是因为passwd命令具有s特殊权限,所以我们切换到普通用户后,修改普通用户密码,它是可以把信息写入到这个密码文件里面的

1、我们可以看到/etc/shadow文件是没有权限的。除了root用户可以操作,其它用户都不可以。但是因为passwd命令具有s特殊权限,所以我们切换到普通用户后,修改普通用户密码,它是可以把信息写入到这个密码文件里面的

2、看下面的例子,可以看到cat命令是没有s特殊权限的,我们在普通用户下看密码文件,提示没有权限,如果我们在root用户下,确是可以执行的,给cat命令添加s权限,我们可以看到它是可以看到这个密码文件内容的

其实我们是借用root用户的身份执行的

如果我们删除s权限后

2.1.2  SGID举例如下

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

通过上面大家可以看到尽管用户变了,但是它的所属组是没有变的,因此别人在此目录中创建的任何目录和文件,所属组都是此目录的所属组,但是属主还是自己,但是任何人在此目录创建的文件,都可以被删除

2.1.3  粘滞位举例如下:

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位的功能

2.1.4 扩展:ACL

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有读写的权限,而其它用户不可以对这个文件有权限操作。有以几种情况:

1、 
给other权限,存在的问题就是让所有用户都对这个文件有读写,达不到我们的目的

2、 
把SAN用户加入一个组,存在的问题就是:如果miao组里还有其它重要的文件,那么这个时候san用户也可以来这里随意访问,有安全隐患

3、  通过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参数解释

Ÿ   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的权限

举例如下:

  • 查看ACL权限

[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—

  • 添加ACL权限

[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,说明其它用户对此文件没有任何操作权限

  • 删除ACL权限

[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/

第3章: 实战:创建一个让root都无法删除的文件

大家有时候发现用root权限都不能修改某个文件,这种情况大部分原因是因为用chattr命令锁定该文件了。

文件系统属性权限:chattr(防止误操作包括root用户)

chattr命令的作用很大,通过chattr命令修改文件属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

lsattr命令是显示chattr命令设置的文件属性

Linux文件系统扩展属性:chattr  lsattr

chattr [+ - =] 选项 对象

+增加权限   -:删除权限     =:等于某个权限

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

其它还能针对日志文件进行设置

1-9 RHEL7-文件权限管理的更多相关文章

  1. linux下的文件权限管理

    权限管理有两个层面 第一层区分用户:文件属主(u), 组用户(g), 其它(o) 第二层区分权限:读(r),写(w),可执行(x) 这两个层次构成文件权限管理的二维结构 u         g     ...

  2. (大数据工程师学习路径)第一步 Linux 基础入门----用户及文件权限管理

    用户及文件权限管理 实验介绍 1.Linux 中创建.删除用户,及用户组等操作. 2.Linux 中的文件权限设置. 一.Linux 用户管理 Linux 是一个可以实现多用户登陆的操作系统,比如“李 ...

  3. Linux用户和文件权限管理

    本文为原创文章,转载请标明出处 目录 用户管理 系统用户文件 添加用户 useradd 设置用户密码 passwd 删除用户 userdel 用户管理 usermod 用户组管理 系统用户组文件 添加 ...

  4. Linux 文件权限管理

    1.文件权限的概述 在Linux系统下,使用权限来保护资源的安全将是一种不错的选择.系统中每个文件的权限都有可读(r).可写(w)和可执行(x)这三种权限,它们分别对应权限数值4.2 和1.系统为每个 ...

  5. 3,linux入门到上手-文件权限管理与配置

    linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...

  6. Linux用户及文件权限管理

    Linux用户及文件权限管理

  7. 利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

    简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下 01 one(); 02 03 function one ...

  8. 实验楼学习linux第一章第三节用户及文件权限管理

    用户及文件权限管理 常用命令 查看用户 whoami 创建用户 sudo adduser 用户名 切换账户 su 用户名 删除账户 sudo deluser 用户名 --remove-home 查看用 ...

  9. (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】

    原文地址:http://www.cnblogs.com/melonblog/archive/2013/05/09/3062303.html 原文作者:豆浆油条 - melon 本文示例代码测试环境是W ...

  10. Mac os 下的文件权限管理

    Mac os 下的文件权限管理 命令 ls -l -A 结果 -rw-r--r-- 1 user admin 2326156 4 12 15:24 adb 横线代表空许可.r代表只读,w代表写,x代表 ...

随机推荐

  1. 【Lucene4.8教程之五】Luke 2014-06-24 15:12 1092人阅读 评论(0) 收藏

    一.Luke基本内容 1.Luke简介 Luke可用于查看Lucene创建的索引,并对其进行基本操作. 2.创建Luke (1)从Github上下载源文件 https://github.com/tar ...

  2. jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想)

    jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想) 一.总结 1.多看学习视频:洞悉原理,触类旁通, 2.函数封装:$.post(URL,data,callback); ...

  3. oracle改动登录认证方式

    通过配置sqlnet.ora文件.我们能够改动oracle登录认证方式. SQLNET.AUTHENTICATION_SERVICES=(NTS);基于操作系统的认证 SQLNET.AUTHENTIC ...

  4. Redis Service

    https://raw.githubusercontent.com/MSOpenTech/redis/3.0/Windows%20Service%20Documentation.md

  5. ssh连接上腾讯云、华为云Linux服务器,一会就自动断开

    客户端向服务端发送心跳 依赖 ssh 客户端定时发送心跳,putty.SecureCRT.XShell 都有这个功能. Linux / Unix 下,编辑 ssh 配置文件: # vim /etc/s ...

  6. 简单sql部分强化练习题

    简单查询部分sql练习题 -- 选择部门30中的全部职工 select * from emp where deptno = 30; -- 列出全部业务员(CLERK)的姓名,编号,和部门编号 sele ...

  7. 小强的HTML5移动开发之路(21)—— PhoneGap

    一.PhoneGap是什么 PhoneGap 是一个用基于 HTML,CSS 和 JavaScript 的,创建移动跨平台移动应用程序的快速开发框架.它使开发者能够利用 iPhone,Android, ...

  8. Java数组课后习题

    package javafirst; import java.util.Arrays; class Show{ public void showArray(int[] arr){ for(int i ...

  9. 从研究try catch 捕获不到异步错误谈谈学习方法的问题

    先看下面的代码,思考一下输出 try { throw new Error(3) } catch (e) { console.log(e) } try { setTimeout(function () ...

  10. Jdbc连接MySQL 8时报错“MySQLNonTransientConnectionException: Public Key Retrieval is not allowed”

    一.问题 因停电检修,今天重启服务器后,再启动jboss就报错"MySQLNonTransientConnectionException: Public Key Retrieval is n ...