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,相同连接数,大小相同,创建的时间也相同。他俩互为硬链接文件。