linux文件类型详解
*nix 有各种的文件类型
当#ls -la后,会发现在权限位前有个 - 有些是 b 有些是 d
这个位置就是文件类型的标示
普通文件regular file, 用 - (破折号)标示, 比如 -rwxr--r-- ,rxw前面的 - 表明这个是普通文件。 www.zhishiwu.com
目录文件directory 用d标示 ,比如drwx------ 目录也是一个文件,其中存放着文件名和文件索引结点之间的关联关系。目录是目录项组成的一个表。其中每个表项下面对应目录下的一个文件。
块设备文件block deivce ,用 b 标示,实际上表示硬件设备 ,I/O以2的幂次方数据块大小传送,可以在/dev 目录访问这些设备,包含磁盘驱动光盘驱动这类存储的。
字符设备文件character device ,用c 标示,也表示硬件设备,但是数据是以字节流发送的,这些设备包括终端设备和串口设备。
链接link设备 用 I 标示, 就是ln 创建的链接,分为软和硬链接, 其中硬链接限制了其链接的文件必须是同一文件系统的,不能链接到目录,不能链接不存在的文件。其链接的文件权限就是它所指向的文件的权限。
命名管道文件pipe 用 p标示, 管道也是一个文件,作为数据管道方便程序之间的通信,管道实际缓存了来自第一个进程的输入数据,也称为FIFO。
套接字文件socket 用s标示 ,套接字是方便进程之间通信的特殊文件。与管道不同的是,套接字能促使通过网络连接的不同计算机的进程之间进行通信。套接字文件也不与任何数据块关联。
www.zhishiwu.com
文件模式
有三种 sticky,suid,sgid, 来表示特别权限位,换成数字就是1777 的1这种
suid位,对应八进制位为4.表明用户访问权位上的可执行位x 变为s 比如 -rws------ ,当用户执行一个可执行文件时,执行进程就调用这个文件的用户关联起来。 如果可执行位上设置了suid位,那么进程就继承文件所有者的UID。进而可以访问拥有者的所有访问权。可以查看/usr/bin/passwd 的权限 大写的S表明文件本来没有可执行权限并且设置了suid位。
使用#chmod 4755 filename
sgid ,对应八进制位为2,表明用户组访问权位上的可执行位x变为s 比如-rwxrws--- ,类似于上面的suid,不过是用于组的。进程也有实际的组ID和有效组ID,分别对应用户的GID和文件组的GID。使用#chmod 2755 filename
sticky ,对应八进制位为1,如果有这个存在,表明防止对那个目录具有写权限的用户(不包含root用户和文件所有者)删除或者更名其中的文件,这个在 权限位的最后面, t 比如-rwx-----t,就就是设置了sticky后该目录下的文件只能有超级管理员和文件所有者删除和目录所有者删除。使用#chmod 1755 filename www.zhishiwu.com
助记法里面 suid 为u+s, sgid 为 g+s, sticky为o+t (删除标记位 分别是 u-s,g-s,o-t)
rwsrw-r-- 表明有suid标示,
rwxrwxrw- 表明有sgid标示,
rwxrw-rwt 表明有stick标示,当设置了特别权限位时,如果原来这个位上有x,那么这个特殊标示就显示为小写字母s,s,t ,否者就显示为大写S,S,T.
作者 rainysia