Linux 权限位详解

Linux 权限位详解,第1张

概述1. Linux 权限位 对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的。 在Linux中,有5种权限,分别是,r、w、x、s、t。 可读权限:r 可写权限:w 可执行权限:x Setuid:s(Set User ID) Setgid:s(Set Group ID) 粘滞位:t 下面依次讲解权限位: 1.1 可读权限 对于文件,可读权限: 用字符表示:r 用八进制表示:4 可以对读取文



1. linux 权限位

对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的。


在linux中,有5种权限,分别是,r、w、x、s、t。

可读权限:r 可写权限:w 可执行权限:x SetuID:s(Set User ID) SetgID:s(Set Group ID) 粘滞位:t


下面依次讲解权限位:



1.1 可读权限


对于文件,可读权限:

用字符表示:r

用八进制表示:4

可以对读取文件里的内容


对于目录,可读权限:

用字符表示:r 用八进制表示:4 可以列出目录下的内容





1.2 可写权限


对于文件,可写权限:

用字符表示:w

用八进制表示:2

可以对文件进行更改


对于目录,可写权限:

用字符表示:w 用八进制表示:2 可以在目录下创建文件或目录





1.3 可执行权限


对于文件,可写权限:

用字符表示:x

用八进制表示:1

可以执行该文件(脚本或命令)


对于目录,可写权限:

用字符表示:x 用八进制表示:1 可以cd进入该目录





1.4 SetuID

这是一个特殊的权限位,


对于文件,SetuID:

用字符表示:s 用八进制表示:4000

SetuID最常用的是配合执行权限x使用,例如,系统中内置命令passwd,它默认是带有s权限位,passwd命令的主要功能是修改用户的密码,而修改密码的流程是:

将加密后的哈希值写入到/etc/passwd文件对应的用户条目中。 使用pwconv工具转换到/etc/shadow文件中。 而普通用户是没有权限修改/etc/passwd/etc/shadow文件

在普通用户尝试执行passwd,该passwd的所有者是root并且设置了SuID,因此passwd以root身份执行。


当你查看进程时,你会发现,进程不是普通用户,而是passwd工具的所有者(root)





1.5 SetgID

这是一个特殊的权限位,


对于目录,SetgID:

用字符表示:s 用八进制表示:2000

当一个目录拥有sgid权限时,其他用户在该目录下创建文件或目录后,它会继承目录的ID,即创建的文件或目录的属组为父目录的属组。

[[email protected] data]# mkdir project[[email protected] data]# chmod 2777 project/[[email protected] data]# ls -lhtotal 0drwxrwsrwx 2 root root 6 Apr 20 23:42 project[[email protected] data]# su bob[[email protected] data]$ mkdir project/test_for_bob[[email protected] data]$ ls -lh project/total 0drwxrwsr-x 2 bob root 6 Apr 20 23:42 test_for_bob





1.6 粘滞位

这是一个特殊的权限位,


对于目录粘滞位:

用字符表示:t 用八进制表示:1000

/tmp目录就是使用了粘滞位t,其作用是,在该目录下创建文件或目录后,仅允许其作者(所有者)进行删除 *** 作。其他用户无法删除。





2. linux 权限表





3. ls -l 输出详解

例如:lrwxrwxrwx. 1 root root 7 Oct 3 02:33 bin -> usr/bin


第一个字符的含义:

-:常规文件 b:块特殊文件 c:字符特殊文件 C:高性能(”连续数据“)文件 d:目录 D:门(Solaris 2.5及以上版本) l:符号链接 M:离线(”前已“)文件(Cray DMF) n:网络专用文件(HP-UX) p:FIFO(命名管道) P:断开(Solaros 10及以上) s:套接字 ?:其他文件

第二个字符的含义:

r:属主的读权限

第三个字符的含义:

w:属主的写权限

第四个字符的含义:

x:属主的执行权限

S:设置了SUID,没有执行权限 s:设置了SUID,具有执行权限

第五个字符的含义:

r:属组的读权限

第六个字符的含义:

w:属主的写权限

第七个字符的含义:

x:属组执行权限

S:设置了sgiD,没有执行权限 s:设置了sgiD,具有执行权限

第八个字符的含义:

r:其他人的读权限

第九个字符的含义:

w:其他人的写权限

第十个字符的含义:

x:其他人的执行权限 T:设置了粘滞位,没有执行权限 t:设置了粘滞位,具有执行权限

第十一个字符的含义:

.:没有任何其他替代访问方法的SElinux安全上下文(没有设置ACL) +:具有任何其他组合访问方法的SElinux安全上下文(设置了ACL) 第十二个字符的含义:该文件的硬链接数量 第十三个字符的含义:该文件的属主 第十四个字符的含义:该文件的属组 第十五个字符的含义:该文件的大小 第十六到第十八个字符的含义:最后一次修改的时间 第十九个字符的含义:文件或目录的名称 第二十个字符的含义:链接符号

第二十一个字符的含义:链接文件的源文件





4. umask 掩码


umask是一个内置命令。其作用是指定创建的文件或目录的默认权限。

使用方法:umask [-S|-p] [mode]

-S:打印出字符权限位 -p:打印八进制数权限位(默认)


使用不加任何参数的umask会打印出八进制的权限:默认0022

第一个数字表示:特殊权限位的八进制数 第二个数字表示:属主的八进制数的反掩码 第三个数字表示:属组的八进制数的反掩码 第四个数字表示:其他人的八进制数的反掩码


例如:手动更改,可使用八进制,也可以使用字符表示

[[email protected] data]# umask 0022[[email protected] data]# mkdir test_dir[[email protected] data]# touch test_txt[[email protected] data]# ls -lhtotal 0drwxr-xr-x 2 root root 6 Apr 21 01:34 test_dir-rw-r--r-- 1 root root 0 Apr 21 01:34 test_txt[[email protected] data]# rm -rf *[[email protected] data]# umask 0777[[email protected] data]# mkdir test_dir[[email protected] data]# touch test_txt[[email protected] data]# ls -lhtotal 0d--------- 2 root root 6 Apr 21 01:37 test_dir---------- 1 root root 0 Apr 21 01:37 test_txt


注意:尽管你的umask设置为0000,后续创建文件的权限依然是666。出于安全着想,执行权限必须手动添加。所以你会看到,目录权限为777,而文件权限为666

总结

以上是内存溢出为你收集整理的Linux 权限位详解全部内容,希望文章能够帮你解决Linux 权限位详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存