2.18-2.20 特殊权限和软硬链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.18-2.20 特殊权限和软硬链接相关的知识,希望对你有一定的参考价值。

2.18-2.22特殊权限和软硬链接


2.18-2.20 特殊权限

一、特殊权限之suid

set uid权限使普通用户临时拥有root赋予某个命令的特殊权限。即这个命令在普通用户用起来和root用户用起来效果是一样的。

语法:chmod u+s 二进制可执行文件,例如:chmod u+s /bin/ls。这样普通用户可以用ls查看root文件夹。

注:如果权限中的s变成了S,是由于所有者没有执行权限,加一个x可执行权限就变成小s了。umask第一位表示为4

二、特殊权限之set gid

set gid类似于suid,但它可以作用于目录。

chmod g+s 命令/可执行文件:让其他用户临时拥有该命令所属组的权限

chmod g+s 目录:其他用户在这个目录下新建的一切目录和文件都归该目录所属组。

注:umask第一位表示为2

三、sticky_bit

作用于目录,对文件没有意义。

语法:chmod o+t 目录

注:文件能否被其他用户删除,主要取决于文件所在的目录是否对其他用户有写的权限。(如果目录具有写的权限,即使文件不能读写执行,也并没有什么用,还是能被其他用户删除和修改。)

四、为什么要使用特殊权限

举个例子,比如 /usr/bin/passwd 这个二进制文件。

它的权限是 -rwsr-xr-x ,我不是所有者,我具有"x"权限,我执行它时,获得了它的所有者(即root)的权限,

所以在该二进制程序执行时,我可以用它来读到我平时是没有权限访问的 /etc/shadow 文件(-r--------),从而能更改我自己的密码

五、修改SUID,SGID,SBIT权限

1.符号类型修改权限

chmod u+s test --为test文件加上suid权限

chmod g+s test --为test文件加上sgid权限

chmod o+t test --为test文件加上sbit权限

2.数字类型修改权限

我们知道普通文件的rwx权限修改

对于特殊权限,需要在最前面增加一位,SUID:4,SGID:2,SBIT:1

chmod 4777 test --test拥有SUID权限,rwsrwxrwx

chmod 2777 test --test拥有SGID权限,rwxrwsrwx

chmod 1777 test --test拥有SBIT权限,rwxrwxrwt


2.21-2.22 软链接和硬链接

软链接(symbolic link)和硬链接(hard link)。两种链接的本质区别关键点在于inode。

软连接 : 跟hard link不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,它会把读取的行为转发到该文件所link的文件上。这样讲,也许比较绕口,那么就来举一个例子。现在有文件a,我们做了一个软链接文件b(只是一个链接文件,非常小),b指向了文件a。当读取b时,那么b就会把读取的动作转发到a上,这样就读取到了文件a。所以,当您删除文件a时,文件b并不会被删除,但是再读取b时,会提示无法打开文件。而,当您删除b时,a是不会有任何影响的。

看样子,似乎 hard link 比较安全,因为即使某一个 inode 被删掉了,只要有任何一个 inode 存在,那么该文件就不会消失不见!不过,不幸的是,由于 Hard Link 的限制太多了,包括无法做目录的link ,所以在用途上面是比较受限的!反而是 Symbolic Link 的使用方向较广!那么如何建立软链接和硬链接呢?这就用到了ln 命令。

硬链接 : 当系统要读取一个文件时,就会先去读inode table,然后再去根据inode中的信息到块区域去将数据取出来。而hard link 是直接再建立一个inode链接到文件放置的块区域。也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增加了一个指到这个文件的inode, hard link 有

两个限制:(1)不能跨文件系统,因为不同的文件系统有不同的inode table; (2) 不能链接目录。

如何创建:

命令: ln

语法 : ln [-s]  [来源文件]  [目的文件]

ln 常用的选项就一个 ‘-s’, 如果不加就是建立硬链接,加上就建立软链接。

创建软连接的方式

#ln -s soure /file object   

创建软连接是连接文件本身,可以跨分区建立软连接,不会应为不同分区而出现不能使用的问题。

在创建软连接的文件中,修改一处文件另一处同时发生修改,当删除软连接对象时,不影响源文件使用,当删除源文件后,连接对象失去作用

创建硬连接的方式

#ln soure /file object

硬连接在文件中使用inode号连接,两个连接文件同事使用一个inode号进行文件表示,一处文件修改,修改针对文件底层数据块修改,两个文件同时修改内容

删除一处文件,不会影响另一处文件的使用。因为硬连接使用inode号连接,所以只能在同分区能使用,不能跨分区使用。

举例:

技术分享图片

上例中的 ‘ll’ 命令等同于 ‘ls -l’, 请使用 ‘which’ 命令查看一下。做了硬链接后,虽然两个文件大小都为 ‘1097’, 但是目录的大小并没有变化。

技术分享图片

删除源文件passwd, 空间依旧不变。这说明硬链接只是复制了一份inode信息。

技术分享图片

硬链接不能用于目录。

技术分享图片

如果删除掉源文件,则软链接文件不能读取了,而且使用 ‘ll’ 查看发现颜色也变了。

技术分享图片

目录是可以软链接的。


以上是关于2.18-2.20 特殊权限和软硬链接的主要内容,如果未能解决你的问题,请参考以下文章

特殊权限软硬链接

特殊权限set_uid,set_gid,stick_bit和软硬链接

centOS 7 特殊权限及软硬连接文件介绍

特殊权限set_uid,set_gid,stick_bit,软硬链接

26期20180607 set_uid stick_bit 软硬连接

26期20180607 set_uid stick_bit 软硬连接