博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 权限
阅读量:4307 次
发布时间:2019-06-06

本文共 5251 字,大约阅读时间需要 17 分钟。

一。权限介绍

权限就是,定义了  什么样的角色可以干什么样的事情。 在计算机中 用户拥有什么样的权限军能干什么事情。 由于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

你可能感兴趣的文章
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-123. 买卖股票的最佳时机 III(动态规划)
查看>>
Django 源码阅读:服务启动(wsgi)
查看>>
Django 源码阅读:url解析
查看>>
Docker面试题(一)
查看>>
第一轮面试题
查看>>
2020-11-18
查看>>
Docker面试题(二)
查看>>
一、redis面试题及答案
查看>>
消息队列2
查看>>
C++ 线程同步之临界区CRITICAL_SECTION
查看>>
测试—自定义消息处理
查看>>
MFC中关于虚函数的一些问题
查看>>
根据图层名获取图层和图层序号
查看>>