软链接、硬连接node
能够用ln命令对一个已经存在的文件再创建一个新的链接,而不复制文件的内容。链接有软链接和硬链接之分,软链接又叫符号链接。它们各自的特色是:linux
硬链接:是给文件一个副本,原文件名和链接文件名都指向相同的物理地址。目录不能有硬链接;硬链接不能跨越文件系统(不能跨越不一样的分区)文件在磁盘中只有一个拷贝,节省硬盘空间;shell
修改其中一个,与其链接的文件同时被修改。若是删除其中任意一个其他的文件将不受影响。
因为删除文件要在同一个索引节点属于惟一的链接时才能成功,所以能够防止没必要要的误删除。
符号链接(软链接):用ln -s命令创建文件的符号链接符号链接是linux特殊文件的一种,做为一个文件,它的数据是它所链接的文件的路径名。相似windows下的快捷方式。
固然删除这个链接,也不会影响到源文件,但对链接文件的使用、引用都是直接调用源文件的。vim
具体关系 :windows
软连接和硬连接bash
硬连接和软连接的区别:函数
1:硬连接原文件和新文件的inode编号一致。而软连接不同。ui
2:对原文件删除,会致使软连接不可用,而硬连接不受影响。spa
3:对原文件的修改,软、硬连接文件内容也同样的修改,由于都是指向同一个文件内容的。操作系统
2.18 特殊权限set_uid
set命令:做用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的做用分别是打开和关闭指定的模式。set命令不可以定义新的shell变量。若是要定义新的变量,可使用declare命令以变量名=值
的格式进行定义便可。
Set_UID命令:在Linux的命令行下执行“ps -aux”命令时,就会列出当前系统中的全部进程,在其中能够看到每一个进程都和用户的真实id关联,实际上,Linux中的每一个进程还跟一个称为有效用户id(set User id)紧密关联。前者用于表示该进程由那个用户控制,后者用于为新创建的文件分配全部权,检查文件访问许可等操做,同时有效用户为该文件的全部者。linux系统内核容许一个进程以调用一个SetUID程序(或显示执行SetUID系统调用)的方式,来改变其自身的有效用户id。如何设置SetUID权限呢?使用“chmod”命令便可为指定文件设置SetUID权限,例如“chmod 4xxx filename”命令,取消SetUID权限的命令为“chmod xxx filename”。相似的,执行“chmod 2xxx filename”命令能够设置SetGID权限,使用“chmod xxx filename”命令便可取消SetGID权限,若是执行“chmod 6xxx filename”命令,便可同时为指定文件设置SetUID和SetGID,执行命令“chmod 0xxx filename”,便可同时取消指定文件的SetUID和SetGID权限。命令"chmod 6755 /usr/bin/vim",就能够将“vi”命令的全部者更改成Root,
set(选项)(参数)
-a:标示已修改的变量,以供输出至环境变量。 -b:使被停止的后台程序马上回报执行状态。 -C:转向所产生的文件没法覆盖已存在的文件。 -d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 -e:若指令传回值不等于0,则当即退出shell。 -f:取消使用通配符。 -h:自动记录函数的所在位置。 -H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。 -k:指令所给的参数都会被视为此指令的环境变量。 -l:记录for循环的变量名称。 -m:使用监视模式。 -n:只读取指令,而不实际执行。 -p:启动优先顺序模式。 -P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号链接。 -t:执行完随后的指令,即退出shell。 -u:当执行时使用到未定义过的变量,则显示错误信息。 -v:显示shell所读取的输入值。 -x:执行指令后,会先显示该指令及所下的参数。
取消某个set曾启动的参数。
使用declare命令定义一个新的环境变量"mylove",而且将其值设置为"Visual C++",输入以下命令:
declare mylove='Visual C++' #定义新环境变量
再使用set命令将新定义的变量输出为环境变量,输入以下命令:
set -a mylove #设置为环境变量
执行该命令后,将会新添加对应的环境变量。用户可使用env命令和grep命令分别显示和搜索环境变量"mylove",输入命令以下:
env | grep mylove #显示环境变量值
此时,该命令执行后,将输出查询到的环境变量值。
set_uid的表现,权限上添加了小写的s,
更改密码的文件/etc/shadow,root也没法更改。
ls能够查看root权限时。是添加了set_uid权限。
去掉set_uid权限方法。
普通用户用ls命令查看root权限。能显示的内容。
2.19 特殊权限set_gid
(1)、设置set_gid的方法。设置过的文件会变成黄(橙)色。
(2)、更改所属组方法。
在ls命令前面添加!号,显示的全面。
2.20 特殊权限stick_bit
(1).防删除,在权限中以t显示。
设置777权限,所属者,所属组。
2.21 软连接文件(symbolic link)
Symbolic Links : 跟hard link不一样,这个是创建一个独立的文件,而这个文件的做用是当读取这个连接文件时,它会把读取的行为转发到该文件所link的文件上。这样讲,也许比较绕口,那么就来举一个例子。如今有文件a,咱们作了一个软连接文件b(只是一个连接文件,很是小),b指向了文件a。当读取b时,那么b就会把读取的动做转发到a上,这样就读取到了文件a。因此,当你删除文件a时,文件b并不会被删除,可是再读取b时,会提示没法打开文件。而,当你删除b时,a是不会有任何影响的。
符号(软)连接 :
一、可应用于目录;
二、能够跨文件系统;
三、不会增长被连接文件的连接次数;
四、其大小为指定的路径所包含的字符个数;
命令: ln
语法 : ln [-s] [来源文件] [目的文件]
-v : 显示过程
ln 经常使用的选项就一个 ‘-s’, 若是不加就是创建硬连接,加上就创建软连接。
[root@localhost ~]# mkdir 123 [root@localhost ~]# cd 123 [root@localhost 123]# cp /etc/passwd ./ [root@localhost 123]# ll 总用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:08 passwd [root@localhost 123]# du -sk 8 . [root@localhost 123]# ln passwd passwd-hard [root@localhost 123]# ll 总用量 8 -rw-r--r-- 2 root root 1097 5月 10 17:08 passwd -rw-r--r-- 2 root root 1097 5月 10 17:08 passwd-hard [root@localhost 123]# du -sk 8
实例浅绿色
若是删除掉源文件,则软连接文件不能读取了,并且使用 ‘ll’ 查看发现颜色也变了。
[root@localhost ~]# ln -s 456 789 [root@localhost ~]# ls -ld 456 789 drwxr-xr-x 2 root root 4096 5月 10 17:22 456 lrwxrwxrwx 1 root root 3 5月 10 17:29 789 -> 456
注意:建立软链接时,源文件(左边的)要用绝对路径,防止该软连接文件路径变化时,找不到路径。大文件放在前面;作软链接尽可能使用绝对路径。
软连接的做用 :
1)方便访问一个文件
2)一个文件我想在多个地方都能访问到
/tmp/abc/1.txt /root/123/1.txt
3)磁盘扩容
举例 : 系统里面有两个分区 : /123 /abc ,其中/123/快用满了,还要写一个文件写道/123/aaa(要写进去意味着/123/着分区要写满了,而且还不够。)此时看到/abc/还有不少不少空间,因此咱们就想到了要借用一下/abc/的空间,如何借用?用软连接。
/123/aaa --->mv /abc/aaa -->经过/123/aaa/能够访问到。ln -s /abc/aaa ----> 再写数据到aaa实际上写到了/abc/aaa,同时能够经过/123/aaa能访问。
2.22 硬链接文件(hard link)
Hard Links : 当系统要读取一个文件时,就会先去读inode table,而后再去根据inode中的信息到块区域去将数据取出来。而hard link 是直接再创建一个inode连接到文件放置的块区域。也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增长了一个指到这个文件的inode, hard link 有两个限制:(1)不能跨文件系统,由于不一样的文件系统有不一样的inode table; (2) 不能连接目录。?
‘ll’ 命令等同于 ‘ls -l’, 请使用 ‘which’ 命令查看一下。作了硬连接后,虽然两个文件大小都为 ‘1097’, 可是目录的大小并无变化。
一个目录的(ls -l)第二列的数字,其实就是该目录下面有几个子目录(含隐藏的目录.和..)
注意 : 目录没法作硬连接,硬连接没法跨磁盘或者分区。
硬连接 :
一、只能对文件建立,不能应用用于目录;
二、不能跨文件系统;
三、建立硬连接会增长文件被连接的次数
[root@localhost 123]# ll 总用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:08 passwd-hard [root@localhost 123]# rm -f passwd [root@localhost 123]# du -sk 8 .
删除源文件passwd, 空间依旧不变。这说明硬连接只是复制了一份inode信息。
[root@localhost ~]# ln 123 456 ln: "123": 不容许将硬连接指向目录
硬连接不能用于目录。
[root@localhost ~]# mkdir 456 [root@localhost ~]# cd 456 [root@localhost 456]# cp /etc/passwd ./ [root@localhost 456]# ln -s passwd passwd-soft [root@localhost 456]# ll 总用量 4 -rw-r--r-- 1 root root 1097 5月 10 17:18 passwd lrwxrwxrwx 1 root root 6 5月 10 17:19 passwd-soft -> passwd [root@localhost 456]# head -n1 passwd-soft root:x:0:0:root:/root:/bin/bash [root@localhost 456]# head -n1 passwd root:x:0:0:root:/root:/bin/bash [root@localhost 456]# rm -f passwd [root@localhost 456]# head -n1 passwd-soft head: 没法打开"passwd-soft" 读取数据: 没有那个文件或目录 [root@localhost 456]# ll 总用量 0 lrwxrwxrwx 1 root root 6 5月 10 17:19 passwd-soft -> passw
注意:两种连接的本质区别关键点在于inode.
软连接与硬连接的区别
软连接:
1.软连接:以路径的形式存在,相似于Windows操做系统中的快捷方式;
2.软连接:能够 跨文件系统 ,硬连接不能够;
3.软连接:能够对一个不存在的文件名进行连接;
4.软连接:能够对目录进行连接;
硬连接:
1.硬连接:以文件副本的形式存在。但不占用实际空间。
2.不容许给目录建立硬连接
3.硬连接只有在同一个文件系统中才能建立
参考连接 :
https://mp.weixin.qq.com/s/RAReIQsXJhv750xw4wILjg