linux特殊权限和链接

9月17日任务
2.18 特殊权限set_uid
2.19 特殊权限set_gid
2.20 特殊权限stick_bit
2.21 软链接文件
2.22 硬连接文件

关于“文件”概念的反思。一直以来,文件、文件夹、目录、路径四个概念我都是混着用的。最近翻linux的书时发现没看到“文件夹”这三个字,用“目录”代替。另一个是我一直觉得文件包含目录,其实在linux中目录就是目录,文件就是文件。

特殊权限set_uid

特殊权限set_gid作用在二进制文件上,让所有者之外的用户执行该文件时拥有该文件所有者的权限。linux中一切介文件,比如linux中passwd命令,记录在/usr/bin/passwd文件中。当执行这个命令时,linux会到/usr/bin目录下调用passwd文件。

root权限太高不能交给普通用户使用,set_uid相当于开放了一部分系统管理工具(可执行二进制文件)的权限给普通用户。

chmod u+s file就为file增加了set_uid权限。目录设置set_uid没有意义。

特殊权限set_gid

chmod g+s file,从命令上比较容易看出set_gid与组的权限有关:赋予文件所有者之外的用户所属组的权限。作用在文件上,与set_uid类似,区别就在于文件所有者权限和所属组权限的区别。

set_gid还可以作用在目录。之前讲过目录和文件的类比。理解这个类比,尤其是从inode、block上看,很容易理解:在有set_gid权限的目录下,其他组用户新建文件的所属组与目录的所属组一致。

特殊权限stick_bit

特殊权限stick_bit只作用在目录上,是防删除权限。有stick_bit权限目录下的文件,只有所有者和root用户可以删除。当然,其他用户可以查看和修改文件内容,这个根据文件的权限而规定。具体还是要了解目录和文件的类比。如果想防止文件内容被其他用户删除,参看隐藏权限i。

软链接

软链接像windows下的快捷方式。在linux系统文件里常看到软链接,其用处在于某目录下需要放置其他目录下的一个文件,用软链接链接到源文件可以节省磁盘空间,源文件变更链接不需同步更新。

ln -s file file_soft,第一个file是源文件,第二个是软链接。做软链接时尽量用绝对路径指定源文件,后期管理方便。

软链接实战:一应用产生日志存放在某分区上,长时间积累日志很大,可以把日志拷贝到其他分区再在原分区创建软链接。这样应用依旧正常工作。

硬链接

ln file file_hard。硬链接不产生新的inode、block,可以理解成原文件的另一张皮。由于不产生新inode,所以硬链接文件不会占用双份空间。软链接会产生新inode但不占用新block,软链接inode指向源文件inode,然后linux就找到源文件的block(详见深入文件系统)。

软硬链接有四方面区别:

  • 软链接产生新inode,硬链接不产生新inode
  • 目录不可以硬链接,可以软链接
  • 硬链接不可以跨分区,软链接可以
  • 删除源文件,软链接不能使用,硬链接仍可以使用

你可能感兴趣的:(linux特殊权限和链接)