特殊权限和软、硬连接介绍

软链接、硬连接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

相关文章
相关标签/搜索