RHEL7文件权限管理

  1. 文件基本权限
  2. 文件高级权限
  3. 实战-创建一个让root都无法删除的黑客文件

 

查看文件权限

[root@localhost ~]# touch a.txt

[root@localhost ~]# ll a.txt

-rw-r--r-- 1 root root 0 Feb 15 07:52 a.txt

 

文件基本权限

-   rwx    r-x     r-x     user1  user1  FILENAME

类型 拥有者的权限 所属组的权限 其他人的权限 拥有者  属组   对象

 

对于文件:r读  w写  x执行

 

对于目录:r读(看到目录里面有什么) ls

     w建文件、删除、移动                     touch mkdir rm mv cp

     x进入                                          cd

 

修改权限的相关命令:

chmod

作用:修改文件权限

u-w                     user                            拥有者

g+x                     group                     组

o=r                     other                     其他人

a+x                     all                            所有人

 

[root@localhost ~]# ll a.txt

-rw-r--r-- 1 root root 0 Feb 15 07:52 a.txt

[root@localhost ~]# chmod u-w a.txt

[root@localhost ~]# ll a.txt

-r--r--r-- 1 root root 0 Feb 15 07:52 a.txt

[root@localhost ~]# chmod g+x a.txt

[root@localhost ~]# ll a.txt

-r--r-xr-- 1 root root 0 Feb 15 07:52 a.txt

[root@localhost ~]# chmod o-r a.txt

[root@localhost ~]# ll a.txt

-r--r-x--- 1 root root 0 Feb 15 07:52 a.txt

[root@localhost ~]# chmod a=r a.txt

[root@localhost ~]# ll a.txt

-r--r--r-- 1 root root 0 Feb 15 07:52 a.txt

 

修改目录的权限

[root@localhost ~]# mkdir test

[root@localhost ~]# ll -d test/

drwxr-xr-x 2 root root 6 Feb 15 08:07 test/

[root@localhost ~]# chmod u-w test/

[root@localhost ~]# ll -d test/

dr-xr-xr-x 2 root root 6 Feb 15 08:07 test/

 

一次性修改多个权限:

[root@localhost ~]# chmod u=rwx a.txt

[root@localhost ~]# ll a.txt

-rwxr--r-- 1 root root 0 Feb 15 07:52 a.txt

 

使用数字表示权限

-   rwx    r-x     r-x    user1  user1  FILENAME

类型 拥有者的权限 所属组的权限 其他人的权限 属主  属组 

 

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

 

[root@localhost ~]# chmod 622 a.txt

[root@localhost ~]# ll a.txt

-rw--w--w- 1 root root 0 Feb 15 07:52 a.txt

[root@localhost ~]#

 

chown

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

语法:chown USER:GROUP 对象

chown USER 对象

chown :GROUP 对象

[root@localhost ~]# chown rm:bin a.txt

[root@localhost ~]# ll a.txt

-rw--w--w- 1 rm bin 0 Feb 15 07:52 a.txt

[root@localhost ~]# chown daemon a.txt

[root@localhost ~]# ll a.txt

-rw--w--w- 1 daemon bin 0 Feb 15 07:52 a.txt

[root@localhost ~]# chown :sys a.txt

[root@localhost ~]# ll a.txt

-rw--w--w- 1 daemon sys 0 Feb 15 07:52 a.txt

 

-R递归(目录下的所有内容全部更改,否则只修改目录)

[root@localhost ~]# chown rm test/ -R

[root@localhost ~]# ll -d test/

dr-xr-xr-x 2 rm root 30 Feb 15 08:21 test/

[root@localhost ~]# ll test/

total 0

-rw-r--r-- 1 rm root 0 Feb 15 08:21 a.txt

-rw-r--r-- 1 rm root 0 Feb 15 08:21 b.txt

 

一个文件只有读的权限,拥有者是否可以写这个文件? 文件所有者一定可以写文件

[root@localhost ~]# ll /home/rm/rm.txt

-r--r--r-- 1 rm rm 30 Feb 15 08:01 /home/rm/rm.txt

[root@localhost ~]# su - rm

[rm@localhost ~]$ vim rm.txt

结果:可以正常写入,注意保存用wq!

 

设置文件默认权限的补码:

系统用户:#umask 022

普通用户:#umask 002

 

计算方法:

文件默认权限=666-umask值 666-022=644

目录默认权限=777-umask 值 777-022=755

#这是一个好的记忆方法,但不严谨。

 

umask掩码为033 . 666-033=633 结果为: 644

计算方法:

6 6 6                     umask 0 3 3

110 110 110                             000 011 011 | 取反

                                                  111 100 100 \/

 

110 110 110              111 100 100

        | /

110 100 100

6       4       4

 

了解:

/etc/bashrc

 

特殊权限:

SUID SGID               Stickybit

s对应的数值为:u 4,g 2,o 1

SUID:

限定:只能设置在二进制可执行程序上面。对目录文本设置无效。

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

[root@localhost ~]# which passwd

/usr/bin/passwd

[root@localhost ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jan 29 2014 /usr/bin/passwd

 

[root@localhost ~]# which less

/usr/bin/less

[root@localhost ~]# chmod u+s /usr/bin/less

 

[rm@localhost ~]$ less /etc/shadow

看到文件里的内容

等同

[root@localhost ~]# chmod 4755 /usr/bin/less

 

任务 s 大小写有什么区别

 

SGID

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

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

[root@localhost ~]# mkdir xuegod

[root@localhost ~]# chown :rm xuegod/

[root@localhost ~]# ll -d xuegod/

drwxr--r-- 2 root rm 6 Feb 15 09:03 xuegod/

[root@localhost ~]# touch xuegod/rm.txt

[root@localhost ~]# touch xuegod/mk.txt

[root@localhost ~]# ll xuegod/

total 0

-rw-r--r-- 1 root root 0 Feb 15 09:04 mk.txt

-rw-r--r-- 1 root root 0 Feb 15 09:04 rm.txt

 

加上SGID

[root@localhost ~]# chmod g+s xuegod/

[root@localhost ~]# touch xuegod/docker.txt

[root@localhost ~]# ll xuegod/

total 0

-rw-r--r-- 1 root rm 0 Feb 15 09:06 docker.txt

-rw-r--r-- 1 root root 0 Feb 15 09:04 mk.txt

-rw-r--r-- 1 root root 0 Feb 15 09:04 rm.txt

 

Stickybit

限定:只作用于目录

功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除

[root@localhost ~]# ll -d /tmp/

drwxrwxrwt. 14 root root 4096 Feb 15 09:08 /tmp/

 

[root@localhost ~]# chmod 1777 /share/

[root@localhost ~]# ll -d /share/

drwxrwxrwt 2 root root 6 Feb 15 09:10 /share/

 

[rm@localhost ~]$ cd /share/

[rm@localhost share]$ ls

[rm@localhost share]$ touch rm.txt

 

[root@localhost ~]# useradd mk

[root@localhost ~]# su - mk

[mk@localhost ~]$ cd /share/

[mk@localhost share]$ rm -rf rm.txt

rm: cannot remove ‘rm.txt’: Operation not permitted

 

扩展ACL

 

[root@localhost ~]# ll b.txt

-rw-r--r-- 1 root root 0 Feb 15 08:40 b.txt

 

[root@localhost ~]# getfacl b.txt

# file: b.txt

# owner: root

# group: root

user::rw-

group::r--

other::r--

 

设置

[root@localhost ~]# setfacl -m u:rm:rw b.txt

[root@localhost ~]# getfacl b.txt

# file: b.txt

# owner: root

# group: root

user::rw-

user:rm:rw-

group::r--

mask::rw-

other::r--

 

对目录进行设置

[root@localhost ~]# setfacl -R -m u:mk:rw test

 (-R一定要在-m前面,表示目录下所有文件)

[root@localhost ~]# getfacl !$

getfacl test

# file: test

# owner: rm

# group: root

user::r-x

user:mk:rw-

group::r-x

mask::rwx

other::r-x

 

删除acl

[root@localhost ~]# setfacl -x u:rm b.txt #删除单个用户的acl权限

[root@localhost ~]# setfacl -b b.txt               #删除所有用户的acl权限

 

实战-创建一个让root都无法删除的黑客文件

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

+a 只能追加内容

+i 不能被修改

 

[root@localhost ~]# echo "xuegodlinux" > b.txt

[root@localhost ~]# cat b.txt

xuegodlinux

[root@localhost ~]# chattr +a b.txt

[root@localhost ~]# echo "123456" > b.txt

-bash: b.txt: Operation not permitted

[root@localhost ~]# echo "123456" >> b.txt

[root@localhost ~]# rm -rf b.txt

rm: cannot remove ‘b.txt’: Operation not permitted

 

[root@localhost ~]# chattr +i b.txt

[root@localhost ~]# echo "123456" >> b.txt

-bash: b.txt: Permission denied

 

[root@localhost ~]# lsattr b.txt

----ia---------- b.txt

[root@localhost ~]# chattr -i b.txt

[root@localhost ~]# chattr -a b.txt

[root@localhost ~]# lsattr b.txt

---------------- b.txt

 

实际应用

[root@localhost ~]# chattr +a /etc/passwd

[root@localhost ~]# chattr +a /etc/shadow

 

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

 

你可能感兴趣的:(linux)