文件安全与权限------Shell 学习(1)

来源:互联网 发布:什么是java技术 编辑:程序博客网 时间:2024/04/30 16:41

 

本文仅仅是学习笔记,记录了我自己原先有所疑惑,现在明确了的内容。并不能作为一个细致的教程。

 

文件属性

文件的读、写、执行权限很容易理解,这些权限与文件的重命名及更改权限无关,只有文件的所有者以及root用户可以操作重命名和更改权限。

目录的读、写、执行权限有些不一样:

  1. 目录的读:可以列出该目录中的文件。
  2. 目录的写:可以在目录中添加和删除文件。(目录的重命名和更改权限也只有文件所有者及root用户可以操作。如果要修改目录中的文件内容,则该文件必须具有写权限,而且其祖先目录必须具有执行权限,祖先目录不一定要有写权限。)
  3. 目录的执行:可以搜索或进入目录。假使目录没有执行权限,那么即使目录有写权限,也无法在目录中添加、删除、修改文件内容或执行。

所以说,目录的执行权限是目录内文件能够被添加、删除、修改内容、执行的先决条件。当目录具有了执行权限后,如果要在目录中添加或删除文件,则必须使目录具有写权限;而如果要在目录中修改内容或执行文件,则该文件必须具有对应属性。

子目录所具有的实际权限 = 母亲目录权限 & 子目录自身权限。目录中文件的权限不需要和目录做与操作。

 


 

 

suid和guid位

文件的属性包含12位,后9位为普通的读、写、执行权限,左边第一位为suid位,左边第二位为guid位,要设置suid位,则其文件拥有者的权限必须包含执行权限,要设置guid位,则其文件用户组必须包含执行权限。左边第三位是粘滞位,sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源。

如果一个文件被设置了suid位,那么其它用户在运行这个文件时便拥有了该文件所有者的权限(该权限不是指读、写、执行权限,而是指利用系统资源的权限)。
如果一个文件被设置了guid位,那么其它用户在运行这个文件时便拥有了该文件用户组的所有权限。

 


 

 

可以用指令id来查看当前用户的id及用户组信息。

 


 

 

umask

umask与创建文件、文件夹时的默认权限的对应关系如下表

对于文件,除了要减去umask位外,还要减去执行权限。

 


 

 

文件链接

符号(软)链接只是在文件中写入目标文件的路径,可以跨文件系统,也可以为目录创建,创建时一定要注意:目标文件必须以绝对路径的方式给出。

硬链接则真正地拷贝了整个目标文件,并且会保持和目标文件一致,inode链接数会增加。无法跨文件系统,无法为目录创建。

原创粉丝点击