1-9 RHEL7-文件权限管理

Posted 北极之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-9 RHEL7-文件权限管理相关的知识,希望对你有一定的参考价值。

 

本节所讲内容:

  文件的基本权限: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 常见几种文件权限组成

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

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

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

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

u  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

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

语法:

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

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章 特殊权限

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

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

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

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

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

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

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

q  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-文件权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Magento 1.9.2.4 管理员权限角色和用户问题

RHEL7--第5章

Linux进出命令

用户和组管理用户和组管理

RHEL7 学习

RHEL7--第十六章 Squid