linux 权限

一。权限介绍

权限就是,定义了  什么样的角色可以干什么样的事情。 在计算机中 用户拥有什么样的权限军能干什么事情。 由于linux中一切皆文件的特性。所有用户对linux的权限就可以理解为用户对文件的权限。

并且因为Linux中除了文件还有保存文件的文件夹,所以linux权限其实就是  用户对linux中文件夹和文件的权限

文件和文件夹得基本权限有三个:

      读        写          执行

相对于文件来说:根据权限linux用户可以分为三类:

1)所有者

2)所属组中的成员

3)其他人

权限的查看:

[root@python ~]# ls -l a.txt           # 查看a.txt这个文件的权限
-rw-r--r--. 1 root root 48 7月 2 13:10 a.txt

第一个 - 代表文件的类型, 这个是普通文件
剩余的三个为一组,三个为一组分开看
rw- 代表文件所有者对,文件有什么权限 (r读 w写)
r-- 代表所属组中的成员,对这个文件有什么权限
r-- 代表其他人对这个文件有什么权限

1 代表(block块和 i节点,只做过一次绑定. 做硬链接时这里会发生变化) * 链接

第一个 root 代表文件所有者
第二个 root 代表文件的所属组

48 代表的是 文件的大小。 (单位是 字节)

之后的就是时间了。 7 月 2号 13:10 分创建的,
名字叫 a.txt

  r(read) 读      w(write) 写     x(exceute) 执行

链接:链接使用 ln 做链接。(链接的意思 就类似于 window 的快捷方式的东西。 

ln -s /root/a.txt  /root/xxx     #这是软连接, /root/axtxt 连接到 /root/xxx    两个文件的 i 节点是不相同的

ln /root/a.txt  /root/ccc     # 这是硬链接,  两个文件的 i 节点是相同的。

)

二。普通权限

 定义所有者、所属组、其他人对 文件或文件夹有何种的权限。

普通权限就只有  r(read) 读      w(write) 写     x(exceute) 执行  

                           chmod      - 改变文件的访问权限

语法: chmod [options] mode file

-R  递归设置权限,针对目录有效

mode 谁给什么权限  u(所有者)  g(所属组)  o(其他人)  a(所有人)  +(增加)  -(收回)  =(赋予)    权限  r(读)   w(写)   x(执行)

[root@python ~]# chmod g+w,o-r a
[root@python ~]# ll a
-rw-rw----. 1 root root 0 7月   3 08:52 a

[root@python ~]# chmod u+x,g+x-w,o+x-w b
[root@python ~]# ll b
-rwxr-xr-x. 1 root root 0 7月   3 08:52 b

[root@python ~]# chmod g-r,o-r c
[root@python ~]# ll c
-rw-------. 1 root root 0 7月   3 08:52 c

[root@python ~]# chmod u=rw,g=---,o=--- c
-rw-------. 1 root root 0 7月   3 08:52 c

命令在输入时,注意不要添加多余的 空格。

数字权限:

r == 4                  w == 2                 x == 1

用法就是 当一个用户拥有所有权限时,就是7  只有读就是4  读写就是6 这样来算的。

-rw-r--r--   这个所对应的数字权限就是   644
-rwxr-xr-x 这个所对应的数字权限就是 755
[root@python ~]# chmod 711 a b c
[root@python ~]# ll a b c
-rwx--x--x. 1 root root 0 7月   3 08:52 a
-rwx--x--x. 1 root root 0 7月   3 08:52 b
-rwx--x--x. 1 root root 0 7月   3 08:52 c

                           chown      - 改变文件所有者和所有组

语法: chown [options] user [:group] file ...

-R 递归设置,针对文件夹的

[root@python doc]# chown python_web a
[root@python doc]# ll-rwx--x--x. 1 python_web root 0 7月   3 08:52 a
-rwx--x--x. 1 root       root 0 7月   3 08:52 b
-rwx--x--x. 1 root       root 0 7月   3 08:52 c


[root@python doc]# chown python_web.python_web b # 所属组用 . 表示的 .组名称 就能修改组了
[root@python doc]# ll
-rwx--x--x. 1 python_web root       0 7月   3 08:52 a
-rwx--x--x. 1 python_web python_web 0 7月   3 08:52 b
-rwx--x--x. 1 root       root       0 7月   3 08:52 c

                           chgrp      - 改变文件所属组

语法: chgrp [option] 组名称

-R  递归设置,只对文件夹有效

三。特殊权限

 定义了 SUID   SGID   SBIT 权限。  特殊权限是对 普通权限的一个扩充

linux 特殊权限 7 777

  suid   4   当一个二进制拥有SUID权限后,当其他用户执行该二进制文件的时候。该二进制文件就会以他所有者的权限去执行。

[root@python ~] # chmod 4755 /bin/systemctl
- rwsr-xr-x  1  root   root  7178283 。。。。。  
这里多了一个 s 的粘连位。 这样再普通用户再执行 shutdown 的时候也会执行成功,因为它自动的回去使用root的身份去执行

  sgid   2   要求文件夹下 新建的子文件夹或者子文件  继承父文件夹的属组

[root@python ~] # chmod 2755 doc      # 这样再进行创建文件的时候,不管所有者是谁,所属组都会是继承自父文件夹的

  sticky bit   1  如果给文件夹赋予 粘连位, 则该文件夹下的文件或者文件夹只能够由所有者以及ROOT删除。(粘连位一般用于公共目录, 确保谁的文件谁才能够删除, 不能够随便的删除。)

[root@python ~] # chmod 1755 /opt/publick       # 为公共的文件夹添加粘连位,不允许随便删除。   

四。ACL权限

针对某个用户或者私人定制权限,优先级高于基本权限。

例:

-rwx--x--x. 1 root   root       0 7月   3 08:52 c

root rwx
root --x
other --x
以上是 root用户 root组 和 其他人的权限

如果我需要让 user02 user03 要有 rwx 权限。 group01组拥有 rw 权限。这时单纯的去更改 other 这个位置
上的权限就不行了。 因为这里的是针对的 所有的用户。 一旦改了所有的用户都会有这个权限。 而不是我想要的只是个别用户了

所以 ACL 权限,  就是用在现在的情况下了。

1.设置 ACL 权限:

  setfacl   设置文件的ACL权限

  语法:  setfacl [option] file...

  -m   修改acl

  -x   删除acl

  -b  删除所有acl

  -k  删除默认的acl

  -R 递归

[root@python ~]# setfacl -m user:user01:rwx filename      # 给一个用户 user01 设置 rwx 权限
[root@python ~]# setfacl -m group:group01:rw filename # 给一个组 group01 设置rw权限 (都是对filename这个文件来说的)
# 添加权限
[root@python doc]# setfacl -m user:python_web:rwx a
[root@python doc]# setfacl -m group:python_web:rw a
[root@python doc]# getfacl
Usage: getfacl [-aceEsRLPtpndvh] file ...
Try `getfacl --help' for more information.
[root@python doc]# getfacl a
# file: a
# owner: python_web
# group: root
user::rwx
user:python_web:rwx
group::--x
group:python_web:rw-
mask::rwx
other::--x


# 收回权限
[root@python ~]# setfacl -x python_web a # 收回python_web 这个用户的对 a 文件的权限
[root@python ~]# setfacl -b a # 删除 a 文件所有的 ACL 权限。

2.查看 ACL 权限: 

  getfacl    -查看某个文件的所有的权限

五。隐藏权限

对文件属性进行特殊的定义。需要特殊的命令才可以看得到这种权限

[root@python ~ ]# lsattr  文件或文件名     # 查看我文件或者文件夹的隐藏权限

[root@python ~]# lsattr doc
---------------- doc/a
---------------- doc/b
---------------- doc/c

全部都是 - 表示没有设置过任何的 隐藏权限

            

                           chattr     - 设置文件或文件夹的隐藏权限

chattr [+-=][options] 文件或文件名

+ : 增加某个特殊的权限参数,其他原本存在的参数不动

- : 删除某个特殊的权限参数,其他原本存在的参数不动

= : 设置权限参数,并且仅有后面接的参数, 其他原本有的将会被覆盖

A : 当设置了 A 属性时, 这个文件(或目录) 的存取时间 atime (access) 将不可被修改,可避免电脑磁盘I/O错误的情况发生时,这个会被改变,(一般会设置在频繁访问的文件上,防止因为频繁访问,频繁修改atime 造成频繁的 磁盘 I/O 写入。)

S: 此功能类似 sync  (同步操作) , 就是将数据同步写入磁盘中, 可以有效的避免数据流失。 (实时的将数据写入磁盘)

a: 设置 a 之后,此文件只能增加数据,不能删除数据。(只有 root 才可以设置这个属性)。(适合于多人编辑的文档,只写不删)

  a 设置之后,就不能使用 vim 进行编辑了。 只能使用    ( echo '内容' >> 文件名  ) 这种方式才能写入文件

c: 设置 c 之后,将会自动将此文件 “压缩”, 在读取的时候将会自动的解压缩,但是在存储的时候,将会先进性压缩再存储.(这个属性对大文件非常的有用。)

d: 当执行 dump (备份) 程序的时候,设置d 属性将可使该文件(或者目录)具有转储的功效。

i :  i的作用非常大。 他可以让一个文件' 不能被删除、改名、设置链接、也无法写入或新增数据', 对于系统安全性有相当大的帮助。

j: 当使用 ext3 文件系统格式时。 设置 j 属性将会使文件在写入时先记录在 joumal 中。 但是,当文件系统设置参数为 data=joumalled 时,有于已经设置了日志了, 所以这个属性无效。

s: 当文件设置了 s 参数时, 他会从这个硬盘空间完全删除。

u: 于s相反, 当使用 u 来设置文件时,则数据内容其实还存在于粗盘中,可以用来还原删除的。

注:  这个属性的设置上,比较常见的时 a  于 i 的设置, 并且很多设置值都是必须要root才能设置的。

原文地址:https://www.cnblogs.com/chengege/p/11123135.html