Linux权限
Linux权限
【1】、Linux三大基础权限
r(可读)、w(可写)、x(可执行)
权限顺序:rwx,如果某一个权限没有,则他的位置由“-”代替
r-x:只有读和执行的权限,没有写的权限
对于目录一般是将wx权限一起给
对于目录来说,一般都要给执行权限,
在Linux中,如果目录没有执行权限,而存在r和w权限,那么Linux会认为这是管理员的误操作
即便我们将目录赋予了w权限,我们也是不能修改目录中的数据的
【2】、归属
属主
属组
其他人
【3】、八进制数对应权限
【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命令去增加和减少文件的底层命令
本文来自博客园,作者:Linux小菜鸟,转载请注明原文链接:https://www.cnblogs.com/xuruizhao/p/18275934