美文网首页
Linux中权限位中的三个特殊位

Linux中权限位中的三个特殊位

作者: 小码弟 | 来源:发表于2019-01-06 16:21 被阅读0次

在Linux的stat结构体中,st_mode成员包含16位,其中4位用作文件类型,9位用作权限,剩下3位用作文件特殊属性。

suid位

  1. 第一位叫做 set-user-ID位,它解决了这样一个问题:用户如何修改自己的密码。
    似乎直接使用passwd即可。但passwd背后的原理是:passwd修改/etc/passwd这个文件但请注意这个文件的权限
    Snip20190106_5.png
    可以看到,只有root用户才有对这个文件的写权限,那普通用户是怎么修改自己的密码呢?Linux的做法是,不给普通用户修改这个文件的权限,而是给passwd命令一个特殊权限,即SUID,它会告诉内核,运行这个程序的时候认为是命令的所有者在执行命令,这里就是root,而root有修改密码权限。

如果设置了suid,所有者的可执行位上被替换成s

  1. 这里似乎潜在一个问题,既然passwd的SUID位赋予了普通用户以root身份来执行修改密码操作,那么能不能修改其他用户的密码呢?毕竟root无所不能嘛。这当然是不行的,因为passwd的实现里调用了getuid来得到当前用户的uid,只允许它修改这个uid对应的用户,也就是自己。

如果设置了sgid,组用户的可执行位上被替换成s

sgid

第二个特殊属性是用来程序运行时的所属组。如果一个程序所属的组被设置为g,且set-group-ID位也被设置,那么程序运行时,就好像它正在被g组中的某一用户运行一样。set-group-ID为给程序某一个组的访问权限。

粘滞位 (sticky bit)

粘滞位对于文件和目录有不同的用途。

对于文件而言,由于内存有限,使用交换技术。从交换空间装载程序要比从普通硬盘快,在非交换空间的硬盘上,程序可能被分成好几块存放在好几个地方,交换空间上的文件是不分块的。sticky位告诉内核即使没有人在使用程序,也要把它放在交换空间中。现在,交换技术用得少了,取而代之的是虚拟内存技术,虚拟内存使用更小单位的页,进行交换。

对于目录而言,有些目录被设计用来存放临时文件,如/tmp,任何人都可以在这里创建、删除文件,但是只有创建者才能删除目录里的文件。

Snip20190106_7.png

如果设置了粘滞位,其他用户的可执行位被替换成t

相关文章

  • Linux中权限位中的三个特殊位

    在Linux的stat结构体中,st_mode成员包含16位,其中4位用作文件类型,9位用作权限,剩下3位用作文件...

  • day16-Linux系统权限

    文件权限介绍 Linux基础权限位是9个字符,每三个为一组,前三位表示用户权限位、中间三位表示用户组权限位、后三位...

  • day15 预习笔记

    Linux系统权限知识 文件权限为说明: 前三位是用户权限位 中三位表示用户组权限位 ...

  • Linux 中的 sticky 权限位

    如果存在这样的一个需求,如果在一个目录下每个用户可以互相查看文件,但是不允许 a 用户去删除 b 用户的文件,反之...

  • 课堂笔记day16(linux文件权限)

    1.Linux文件权限 1.1分组: 1.1.1前三个字符是表示用户(属主)权限位user(用户) 1.1.2中三...

  • chmod 和大写的 X ?

    chmod(1) 手册页中对权限位的描述中提及到 rwxXst 六个权限标记, rwx 是几乎所有 Linux 初...

  • Linux中的特殊权限

    文件具有SUID的特殊权限时,代表当用户执行此二进制程序时,在执行过程中用户会暂时具有程序所有者的权限; 目录具有...

  • linux中的特殊权限

    linux特殊权限 suid sgid sticky bit 总述 详述 1.前提 2.suid 3.sgid 4...

  • 用户权限,特殊权限,ACL

    用户权限 在Linux系统中,一个用户对文件所能执行的权力称为用户权限 文件属性 权限位 rwx rwx rwx从...

  • day16课堂笔记

    第12章Linux系统的权限知识 Linux文件或目录的基础权限位是由9个字符控制的,为3位为一组 普通文件对应 ...

网友评论

      本文标题:Linux中权限位中的三个特殊位

      本文链接:https://www.haomeiwen.com/subject/bjpsrqtx.html