Linux权限

Linux权限

【1】、Linux三大基础权限

r(可读)、w(可写)、x(可执行)

权限顺序:rwx,如果某一个权限没有,则他的位置由“-”代替

r-x:只有读和执行的权限,没有写的权限

对于目录一般是将wx权限一起给

对于目录来说,一般都要给执行权限,

在Linux中,如果目录没有执行权限,而存在r和w权限,那么Linux会认为这是管理员的误操作

即便我们将目录赋予了w权限,我们也是不能修改目录中的数据的

【2】、归属

属主

属组

其他人

【3】、八进制数对应权限

image-20240326151840394

【4】、chmod修改权限

  • 通过rwx进行权限修改

    u:修改所有者的权限

    g:修改属组的权限

    o:修改其他人的权限

    [root@localhost opt]# chmod ugo-x aa.txt 
    [root@localhost opt]# ll
    total 12240904
    -r--rw-rw-. 1 root root           4 Mar 25 09:14 aa.txt
    
  • 通过数字进行修改权限

    [root@localhost opt]# chmod 777 ./aa.txt 
    [root@localhost opt]# ll
    total 12240904
    -rwxrwxrwx. 1 root root           4 Mar 25 09:14 aa.txt
    

当我们在赋予权限时,又可能会出现如下的情况

有一个用户:

user:xuruizhao,group:student01、student02

此时有一个目录/dir的属主是:xuruizhao,属组是:student02,权限是457

❓用户xuruizhao能否在/dir下创建文件

这种情况就是这个用户既属于属主,又属于属组,并且这个目录的属组和属主的权限又不同,那么此时该用户对于这个目录的权限究竟是怎样的

在Linux中,一个文件或者目录的归属判定规则:

0、首先判断该用户是否存在ACL策略

1、匹配顺序:属主>属组>其他人

2、匹配即停止

也就是,对于/dir目录来说,Linux对xuruizhao用户进行匹配,发现其满足属主的要求,那么就认定其时属主,最然后面的属组也满足要求,但是,匹配要满足匹配即停止的原则

root@locahost [10:50:05 AM] [/] 
-> # ls -ld /dir 
dr--r-xrwx. 2 a1 team1 6 May 31 10:47 /dir
# 切换到a1用户下,查看情况
[a1@locahost /]$ cd /dir/
-bash: cd: /dir/: Permission denied

【5】、umask

新建目录的默认权限是:755

新建文件的默认权限是:644

  • 在 Linux 系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask 命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-r--r--,创建目录的默认权限 drwxr-xr-x ,而 umask 值则表明了需要从最大权限(777)中去掉哪些权限来成为最终的默认权限值。
{24-05-31 16:35}locahost:/home root# umask 
022

777-022=755

  • umask的默认值是可以进行修改的(尽量不要修改umask值)

    • {24-05-31 16:44}locahost:/home root# umask 077
      {24-05-31 16:44}locahost:/home root# umask -S 
      u=rwx,g=,o=
      
    • /etc/login.defs文件

普通用户和root的umask值不同

1、利用umask恢复目录权限错误

假设我们将/mnt目录下的所有数据的权限都设置为000,我们该如何恢复

1、首先根据umask的值去,查询出,默认情况下,Linux的目录和文件的权限是什么

{24-05-31 16:35}locahost:/home root# umask 
022

2、通过find命令,区分出目录和文件,在分别赋予不同的权限

【6】、suid、sgid、stickey

suid:4

sgid:2

stickey:1

在使用时,后面要加上基本权限:2644、5777,之类的

一般来说,我们不适用数字去设置附加权限,而是使用:u+s g+s o+t

1、suid

  • suid特殊权限仅适用于可执行文件,权限符号s,出现的位置属主的x位置

  • 所具有的功能是,重要用户对设有SUID的文件有执行权限,那么当用户执行此文件时,会以文件属主的身份去执行此文件,一旦文件执行结束,身份的切换也会随之消失

  • 以/usr/bin/passwd 的passwd命令为例,当普通用户执行passwd时。会具有root用户的权限,当执行完成后root的权限也就随之消失了

    [root@bogon ~]# ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 33424 Feb  7  2022 /usr/bin/passwd
    

2、sgid

  • 针对的是目录

  • 符号是s/S(取决于group是否存在x权限),符号位置在group上

  • Linux中的所有用户,默认创建的文件,文件夹,属主和属组都是属于创建时的那个用户

  • 设置了sgid的目录,会保证在这个目录下创建的文件、文件夹会自动继承父目录的属组

root@locahost [01:52:45 PM] [/] 
-> # chown :team1 /dir
root@locahost [01:53:05 PM] [/] 
-> # 
root@locahost [01:53:06 PM] [/] 
-> # ls -ld /dir      
drwxr-xr-x. 2 root team1 6 May 31 13:52 /dir
root@locahost [01:53:08 PM] [/] 
-> # chmod g+s /dir
root@locahost [01:53:18 PM] [/] 
-> # ls -ld /dir   
drwxr-sr-x. 2 root team1 6 May 31 13:52 /dir
root@locahost [01:53:20 PM] [/] 
-> # mkdir /dir/aaa
root@locahost [01:53:34 PM] [/] 
-> # ls -ld /dir/aaa
drwxr-sr-x. 2 root team1 6 May 31 13:53 /dir/aaa

3、sticky

  • 粘滞位

  • 用于目录,权限符号t/T(取决于other是否存在x权限),符号位置在other的x位置。

  • 对于设置了t权限的目录,在该目录建立的文件或目录,只有建立者可以删除其他用户无法删除。(除了删除操作外,对其他用户创建的文件的其他操作也不被允许)

    # 赋予sticky权限
    chmod o+t sg
    [root@localhost /]# ll | grep sg
    drwxrwxrwt.   2 root root   26 Mar 27 16:09 sg
    [a@localhost sg]$ ll
    total 8
    -rw-rw-r--. 1 a a 3 Mar 27 16:09 a1
    -rw-rw-r--. 1 b b 3 Mar 27 16:04 b1
    [b@localhost sg]$ rm -rf ./a1
    rm: cannot remove './a1': Operation not permitted
    [b@localhost sg]$ 
    

【7】、ACL策略

  • ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。

  • ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

  • ACL可以针对某一个用户去设置,也可以某一个组去设置

  • 使用setfacl可以设置ACL,getfacl可以查看对象的ACL

1、setfacl

  • chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。

  • 换句话说,setfacl可以更精确的控制权限的分配。比如:让某一个用户对某一个文件具有某种权限。

  • 这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)

  • option

    • -m:--modify-acl 更改文件的访问控制列表

      # u仅仅代表后面的xiaoli是一个用户,不代表属主
      root@locahost [11:03:13 AM] [/] 
      -> # setfacl -m u:a1:rwx /dir
      root@locahost [11:03:33 AM] [/] 
      -> # ls -ld /dir 
      drwxrwxr-x+ 2 root root 6 May 31 11:03 /dir
      
      
    • -R:--recursive 递归操作子目录

    • -d:--default 应用到默认访问控制列表的操作

    • -x:清楚指定的ACL策略

      # 在删除时不需要指定权限了,只需要指定用户即可
      root@locahost [11:10:21 AM] [/] 
      -> # setfacl -x u:a1 /dir
      
    • -b:清除所有的ACL策略

      root@locahost [11:10:27 AM] [/] 
      -> # setfacl -b  /dir
      root@locahost [11:11:23 AM] [/] 
      -> # ls -ld /dir
      drwxr-xr-x. 2 root root 20 May 31 11:05 /dir
      

    ⚠️对于设置了ACL策略的文件/目录,此时权限位中的属组权限位就不再是代表属组的权限了,而是显示权限掩码mask

2、getfacl

  • 显示文件或目录的ACL策略。对指定的文件或目录进行精准的权限控制

    root@locahost [11:05:18 AM] [/] 
    -> # getfacl /dir
    getfacl: Removing leading '/' from absolute path names
    # file: dir
    # owner: root
    # group: root
    user::rwx
    user:a1:rwx
    group::r-x
    mask::rwx
    other::r-x
    

【8】文件底层权限

文件的基础权限有rwx,这是使用ll命令可以查看出来的,使用chmod命令可以进行更改,
但是文件还具有底层权限-a和-i
这两个权限一般情况是不存在的,使用ll命令是无法查出来的
-a权限:使文件只可以进行追加操作,除此之外任何操作都不被允许执行
-i权限:是文件不具备任何操作的权限(不能删除,写入,重命名等),一些黑客就会使用这个权限来使植入电脑的病毒不可被删除

我们可以使用lsattr命令来查看文件的底层权限
使用chatter命令去增加和减少文件的底层命令
posted @ 2024-06-29 23:57  Linux小菜鸟  阅读(19)  评论(0编辑  收藏  举报