zoukankan      html  css  js  c++  java
  • 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才能设置的。

  • 相关阅读:
    Python 15 爬虫(一)
    Python 14 Mysql数据库(二)
    Python 13 JQuery&Bootstrp
    Python 12 CSS&JavaScript&DOOM
    Python 11 HTML
    Python 10 MySQL数据库(一)
    Python 9 Redis
    Python 8 协程
    Python 7 并发编程
    SNMP协议详解
  • 原文地址:https://www.cnblogs.com/chengege/p/11123135.html
Copyright © 2011-2022 走看看