Linux 目录的权限

目录的读写权限

读权限

  • 若无读权限,那么“目录表”文件不许读,ls会失败

写权限

  • 若无写权限,那么“目录表”文件不许写
  • 创建文件,删除文件,文件改名会修改目录文件
  • 修改文件不需要修改目录文件,需要修改i节点
  • 目录无写权限不是指目录下所有文件禁止写

目录的x权限

执行权限

  • 有执行权限意味着分析路径名过程中可检索该目录
  • cat /a/b/c
  • 要求/,/目录下的a目录,/目录下的a目录下的b目录,这三目录有x权限,c文件有读权限;否则,命令执行失败
  • cd ../st8要求当前目录,..st8必须有x权限

STICKY权限(粘着位)

STICKY文件

  • 早期Unix具有sticky属性的可执行文件尽量常驻内存或交换区以提高效率
  • 现代Linux对访问过的文件自动缓冲在内存,文件sticky属性被忽略

STICKY目录

  • 问题:对于公共目录,用户user1和user2没有写权限,就不可以在这个目录下创建新文件;若有写权限,用户user1的文件就算是“只读文件”也可以被user2删除
  • STICKY属性用于解决这个问题:目录有写权限并且带STICKY属性,此目录下的文件仅文件主可以删除,其他用户删除操作会失败
  • 例如:/tmp目录, ls -ld /tmp,输出的第一列最后字符为t:
drwxrwxrwt 13 root root 20480  Mar 22 06:11 /tmp

权限验证的顺序

每个文件都有文件主和组的属性(文件节点中)
每个进程也有进程主和组的属性(进程PCB中)
这四个属性都是整数,uid和gid的编号与名字对应关系见/etc下passwd和group文件

文件主与进程主相同

直接使用文件主的权限,不再查看组和其他用户的权限

文件主与进程主不同,但文件主与进程主同组

只使用组权限,不使用关于其他用户的权限

文件主与进程主不同,文件主与进程主又不同组

使用文件关于其他用户的权限。

注意:超级用户root不受权限的限制

例:权限---r--rw-,文件主不可读但同组用户可读,即使文件主是该组用户之一也不行