set-uid
passwd这个命令是linux中普通用户改密码的命令,他的文件权限是
[root@localhost ~]# which passwd
/usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
这里面多了一个“s”这个权限,这就是set-uid权限。它的作用是只要不是root用户去执行set-uid这个命令时,在执行的那一瞬间临时获得root的身份。前提是这个文件必须是二进制的文件,而且是一个可执行的文件。
哪个如何给文件设置set-uid的权限呢?
我们可以输入chmod u+s 【二进制文件的绝对路径】

set-gid
这是作用在组上的权限位。
[root@localhost ~]# chmod g+s /usr/bin/ls
[root@localhost ~]# ll /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
这是让普通用户拥有所属组的权限,他不仅可以作用在文件上,也可以作用在目录上。

[root@localhost ~]# chmod g+s aming
drwxr-sr-x. 2 root root 6 1月 6 09:15 aming
当作用在文件上时,和set-uid是类似的。当做用在目录上时,当你创建子目录或者子文件的时候,创建的子文件和子目录的所属组和该目录的所属组保持一致。

stick-bit
[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 29 root root 4096 1月 8 21:16 /tmp
这个t,这就是stick-bit权限,是防删除位。只有有权限的人才可以删除,比如所有者和root。
这里还有一个知识点,就是你的文件权限是按照目录的权限来执行,而不是按照文件的权限来执行。但是你如果加了stick-bit,你就不能删除了,但是你可以修改。

软连接
软连接相当于windows的快捷方式。
作用是节省空间,而且还可以跨分区。
怎样做软连接,ln -s 源文件 软连接文件
例如:我们要将12.txt的软连接做到/tmp的目录下,首先我们找到12.txt这个文件
-rw-rw-r--. 1 root root 130 1月 7 22:19 12.txt
然后输入命令ln -s /root/12.txt /tmp/,回车。
然后我们到/tmp这个目录下查看,
lrwxrwxrwx. 1 root root 12 1月 11 22:08 12.txt -> /root/12.txt
发现/tmp下已经产生了一个12.txt的软连接。

软连接不仅可以连接文件,也可以连接目录
我们要将111目录的软连接放到/tmp下的aming目录中,先找出111这个目录,
[root@localhost ~]# ll
drwxrwxr-x. 3 root root 99 1月 11 22:23 111
然后和做文件的软连接一样
ln -s /root/111 /tmp/aming
然后到/tmp/aming下查询这个软连接
[root@localhost ~]# cd /tmp/aming
[root@localhost aming]# ll
drwxr-xr-x. 3 root root 15 12月 17 18:40 1
lrwxrwxrwx. 1 root root 9 1月 11 22:24 111 -> /root/111
这时111的软连接已经放到aming的目录下了。这就是软连接的目录。

在当前目录下我们做的软连接则不是以绝对路径开头的,这样做会有一些弊端,比如你将数据拷贝到另一台机器上,但是当你想要查询或者使用时,会导致无法使用,所以我们创建软连接一定要用绝对路径,不要用相对路径。

这里举一个例子,比如我们的/boot已经快存满,但是有一个进程llt还在不停的往这里写数据在llt.log,这时我们就可以用一个软连接来解决这个问题,我们先找一个空间比较大的磁盘,比如/,我们可以先将llt.log拷贝到/下,cp 、/boot/llt.log /llt.log,然后我们将/boot下的llt.log删除,后面紧接着做一个llt.log的软连接。rm -f llt.log;ln -s /llt.log /boot/llt.log,这样这个服务按照路径还是写入/boot/llt.log,但实际是写入/llt.log。

硬链接
硬链接是两个文件同时用了相同inode号,那么这两个文件互为硬链接文件,删除其中一个,对另一个没有影响。他不会占用多余的空间。他只是源文件的一张皮,硬链接不支持目录,只支持文件,而且不能跨分区。
创建硬链接的命令为ln
比如我们要为12.txt创建一个硬链接,并更名为123.txt
[root@localhost ~]# ll
-rw-rw-r--. 1 root root 130 1月 7 22:19 12.txt
然后我们输入命令[root@localhost ~]# ln 12.txt 123.txt
创建完成后我们再查询一下,输入命令ll -i查看inode
[root@localhost ~]# ll -i
33583037 -rw-rw-r--. 2 root root 130 1月 7 22:19 123.txt
33583037 -rw-rw-r--. 2 root root 130 1月 7 22:19 12.txt
这时我们发现这两个文件有相同的inode,相同连接数,大小相同,创建的时间也相同。他俩互为硬链接文件。