前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux基础(day9)

Linux基础(day9)

作者头像
运维小白
发布2022-01-06 13:47:45
7490
发布2022-01-06 13:47:45
举报
文章被收录于专栏:运维小白运维小白

2.18 特殊权限set_uid

set_uid

例子 -rwsr-xr-x.中的s的权限

代码语言:javascript
复制
[root@hf-01 ~]# which passwd
/usr/bin/passwd
[root@hf-01 ~]# ls -l /usr/bin/passwd        会发现passwd文件含有特殊的s权限
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

set_uid介绍

  • set_uid(s):该权限针对二进制可执行文件使文件在执行阶段具有文件所有者的权限。
    • 可以使用chmod u+(-)s 【二进制文件名】 来设置权限。
  • 相当于set_uid设置user的权限位。
代码语言:javascript
复制
[root@hf-01 ~]# ls /etc/shadow
/etc/shadow     改用户密码的文件
[root@hf-01 ~]# ls -l !$    会发现更改密码的文件权限为000
ls -l /etc/shadow
----------. 1 root root 665 10月 26 08:04 /etc/shadow

set_uid总结

  • set_uid命令,就是保证普通用户临时拥有该命令所有者的身份
  • 给一个文件设置set_uid拥有临时所有者的权限
    • 前提,是该文件必须是二进制文件,而且是一个可执行(x)的文件
      • 例如:ls,passwd这些文件就是二进制文件
      • 而像,1.txt去设置set_uid权限是没有意义的
    • 小写的s包括了x权限,大写的S表示没有x权限
代码语言:javascript
复制
[root@hf-01 ~]# ls -l /usr/bin/ls     这里想给ls命令加一个
-rwxr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

然后复制SSH渠道,打开另一个终端2hf(1)下
[root@hf-01 ~]# su - hanfeng        切换到普通用户hanfeng下去
[hanfeng@hf-01 ~]$ whoami       来查看当前用户
hanfeng
[hanfeng@hf-01 ~]$ ls /root/    这时访问/root/目录,会提示没权限
ls: 无法打开目录/root: 权限不够

这时回到之前的终端下1hf(0)下
[root@hf-01 ~]# chmod u+s /usr/bin/ls       给ls命令增加+s权限
[root@hf-01 ~]# ls -l /usr/bin/ls           这时查看ls命令,会发现x变化为了s权限(小写的s包括了x权限,大写的S表示没有x权限)
-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

在切换到另一个终端2hf(1)下
[hanfeng@hf-01 ~]$ ls /root/        这时会看到有访问权限了,就是因为set_uid权限赋给ls。(当在其他用户下使用ls命令时,在执行过程中会以root身份来运行)
11.txt  123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[hanfeng@hf-01 ~]$ ls -ld /root/
dr-xr-x---. 5 root root 4096 10月 26 09:41 /root/

回到终端1hf(0)下
[root@hf-01 ~]# chmod u-s /usr/bin/ls   去除set_uid赋予给ls的权限

set_uid的写法

  • ls命令的绝对路径为 /usr/bin/ls
代码语言:javascript
复制
[root@hf-01 ~]# chmod u+s /usr/bin/ls       命令ls被赋予了s权限
[root@hf-01 ~]# chmod u-s /usr/bin/ls       收回s权限
[root@hf-01 ~]# chmod u=rws /usr/bin/ls     这也是赋予ls权限的方法,但是它缺少可执行的权限(小写的s包括了x权限,大写的S表示没有x权限)
[root@hf-01 ~]# !ls     会发现这里显示的是大写S
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls
[root@hf-01 ~]# chmod u+x /usr/bin/ls       在这里再给它加上+x可执行的权限即可
[root@hf-01 ~]# !ls     会发现这里显示的是小写s
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls
[root@hf-01 ~]# 
  • 目录可增加set_uid权限,但是基本没啥作用,目录基本不用去执行啥
  • set_uid权限本身的作用就是给一个普通用户的用户执行,临时拥有所有者的身份

2.19 特殊权限set_gid

set_gid

  • set_gid(s):可作用于文件(二进制可执行文件)和目录。
  • 相当于set_gid 设置group组的权限位。
  • 可以使用chmod g+(-) 【文件名/目录名】 来设置权限。
  • 也就是将标志s加到gid的x标志位,sgid用在目录上最多。

set_gid作用

代码语言:javascript
复制
- set_gid作用在文件上时,和set_uid效果一致,会使普通用户临时拥有所属组的身份
代码语言:javascript
复制
[root@hf-01 ~]# chmod u=rwx /usr/bin/ls     将ls命令权限恢复成默认初始权限
[root@hf-01 ~]# !ls
ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls
[root@hf-01 ~]# chmod g+s /usr/bin/ls     设置set_gid权限
[root@hf-01 ~]# !ls
ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

在切换到另一个终端2hf(1)下
[hanfeng@hf-01 ~]$ ls /root/    将set_gid权限赋给ls,当在其他用户下使用ls命令时,(因为ls的所属组是root,所以就会以root身份来执行)
11.txt  123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[hanfeng@hf-01 ~]$ ls -ld /root/
dr-xr-x---. 5 root root 4096 10月 26 09:41 /root/

set_gid用法——>目录

代码语言:javascript
复制
[root@hf-01 ~]# ls -l
总用量 8
-rw-r--r--. 1 root root   0 10月 26 08:39 11.txt
drwxr-xr-x. 2 root root   6 10月 26 08:39 123
drwxrwxr-x. 2 root root   6 10月 26 08:57 234
-rwxrwxrwx. 1 root root 924 10月 25 06:49 2.txt
-rw-rw-r--. 1 root root   0 10月 26 08:56 33.txt
-rw-------. 1 root root 973 8月  21 05:05 anaconda-ks.cfg.1
-rw-rw-r--. 1 root root   0 10月 26 09:41 ha.txt
dr-x--xr-x. 2 root root  18 10月 26 06:56 hf
[root@hf-01 ~]# chmod g+s 234       更改234目录的set_gid权限
[root@hf-01 ~]# ls -ld 234
drwxrwsr-x. 2 root root 6 10月 26 08:57 234
[root@hf-01 ~]# chown :hanfeng 234      再来更改234目录所属组的权限
[root@hf-01 ~]# ls -ld 234
drwxrwsr-x. 2 root hanfeng 6 10月 26 08:57 234
[root@hf-01 ~]# touch 234/gurui         在目录234下新建文件gurui
[root@hf-01 ~]# ls -l 234/      查看所有者和所有组
总用量 0
-rw-r--r--. 1 root hanfeng 0 10月 27 07:46 gurui
[root@hf-01 ~]# mkdir 234/am            在目录234下新建目录am 
[root@hf-01 ~]# ls -l 234/
总用量 0
drwxr-sr-x. 2 root hanfeng 6 10月 27 07:47 am
-rw-r--r--. 1 root hanfeng 0 10月 27 07:46 gurui
[root@hf-01 ~]# chmod g-s 234       去除set_gid临时权限
[root@hf-01 ~]# touch 234/gurui111  在234目录下新建gurui111文件
[root@hf-01 ~]# !ls     发现在root用户下创建的文件,所有组默认都是root
ls -l 234/
总用量 0
drwxr-sr-x. 2 root hanfeng 6 10月 27 07:47 am
-rw-r--r--. 1 root hanfeng 0 10月 27 07:46 gurui
-rw-r--r--. 1 root root    0 10月 27 07:48 gurui111
[root@hf-01 ~]# mkdir 234/am1   在目录234下新建目录am1
[root@hf-01 ~]# ls -l 234/  发现在root用户下创建的目录,所有组默认都是root
总用量 0
drwxr-sr-x. 2 root hanfeng 6 10月 27 07:47 am
drwxr-xr-x. 2 root root    6 10月 27 07:49 am1
-rw-r--r--. 1 root hanfeng 0 10月 27 07:46 gurui
-rw-r--r--. 1 root root    0 10月 27 07:48 gurui111
  • 当给一个目录设置了set_gid之后,再去这个目录下面创建子目录和子文件的时候,那这个子文件和子目录的所属组会跟着父级目录(就是刚刚创建的set_gid权限的目录)保持一致。

set_gid总结

  • set_gid这个权限的作用,他不仅仅可以作用在文件上,也可以作用在目录上
    • 当作用在文件上,和set_uid作用类似,可以让执行文件的普通用户临时拥有所属组的身份。
    • 当作用在目录上,在创建子目录和子文件的时候,子目录和子文件所属组和该目录的所属组保持一致

2.20 特殊权限stick_bit

stick_bit介绍

代码语言:javascript
复制
系统中的/tmp/目录是拥有stick_bit权限的
[root@hf-01 ~]# ls -ld /tmp/
drwxrwxrwt. 9 root root 4096 10月 27 05:14 /tmp/

这drwxrwxrwt.里面的t(t里面包含x权限),就是stick_bit权限,

stick_bit(t):又叫做防删除位。只对目录有效,对文件无效。

相当于stick-bit设置others权限位。

stick_bit用法

代码语言:javascript
复制
在终端2hf(1)下

[hanfeng@hf-01 ~]$ whoami   查看所属主
hanfeng
[hanfeng@hf-01 ~]$ cd /tmp/     切换到/tmp/目录下
[hanfeng@hf-01 tmp]$ ls
aminglinux  amning  mysql.sock  yum.log
[hanfeng@hf-01 tmp]$ touch yunwei   新建文件yunwei
[hanfeng@hf-01 tmp]$ ls -l  会看到文件yunwei的所属主和所属组都是hanfeng
总用量 0
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rw-rw-r--. 1 hanfeng hanfeng  0 10月 27 08:40 yunwei
[hanfeng@hf-01 tmp]$ vi yunwei  并可以编辑文件
[hanfeng@hf-01 tmp]$ chmod 777 yunwei   将yunwei文件权限修改为777
[hanfeng@hf-01 tmp]$ ls -l  会看到yunwei的权限变化为-rwxrwxrwx.
总用量 4
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rwxrwxrwx. 1 hanfeng hanfeng 26 10月 27 08:41 yunwei

这时在切换到1hf(0)下
[root@hf-01 tmp]# whoami    查看所属主
root
[root@hf-01 tmp]# su - user1    切换到user1用户下
[user1@hf-01 ~]$ cd /tmp/       切换到目录/tmp/下
[user1@hf-01 tmp]$ ls       会发现可以查看到文件
aminglinux  amning  mysql.sock  yum.log  yunwei
[user1@hf-01 tmp]$ vi yunwei    也可以进行编辑
[user1@hf-01 tmp]$ rm -f yunwei     不可以删除文件yunwei的
rm: 无法删除"yunwei": 不允许的操作

所以说,这个stick_bit权限叫防删除位,只有有权限的用户(比如root)才可以删除,而其他的用户是根本无法删除掉的

stick_bit例子

  • 就是防止别人删除自己的文件(root用户除外)
代码语言:javascript
复制
在终端1hf(0)下

[user1@hf-01 tmp]$ mkdir user1  新建目录user1
[user1@hf-01 tmp]$ chmod 777 user1  并把权限修改为777
[user1@hf-01 tmp]$ ls -l
总用量 4
drwxr-xr-x. 4 user1   hanfeng 39 10月 26 08:23 aminglinux
drwxr-xr-x. 3 root    root    14 10月 25 06:29 amning
srwxrwxrwx. 1 mysql   mysql    0 10月 27 02:47 mysql.sock
drwxrwxrwx. 2 user1   user1    6 10月 27 08:57 user1        777权限,意味着任何用户都可以去写,可读,可执行
-rw-r--r--. 1 user1   root     0 10月 26 07:48 yum.log
-rwxrwxrwx. 1 hanfeng hanfeng 45 10月 27 08:43 yunwei

切换到终端2hf(1)下

[hanfeng@hf-01 tmp]$ cd user1   切换到目录user1下面
[hanfeng@hf-01 user1]$ touch 1.txt  发现可以创建文件
[hanfeng@hf-01 user1]$ mkdir 234    可以创建目录
[hanfeng@hf-01 user1]$ ls -l
总用量 0
-rw-rw-r--. 1 hanfeng hanfeng 0 10月 27 09:03 1.txt
drwxrwxr-x. 2 hanfeng hanfeng 6 10月 27 09:03 234

在切换到终端1hf(0)下

[user1@hf-01 tmp]$ cd user1
[user1@hf-01 user1]$ ls
1.txt  234
[user1@hf-01 user1]$ ls -l
总用量 0
-rw-rw-r--. 1 hanfeng hanfeng 0 10月 27 09:03 1.txt
drwxrwxr-x. 2 hanfeng hanfeng 6 10月 27 09:03 234
[user1@hf-01 user1]$ rm -f 1.txt
[user1@hf-01 user1]$ ls
234
[user1@hf-01 user1]$ rm -r 234
rm:是否删除有写保护的目录 "234"?y
[user1@hf-01 user1]$ ls
[user1@hf-01 user1]$ pwd    
/tmp/user1
[user1@hf-01 user1]$ ls -ld .
drwxrwxrwx. 2 user1 user1 6 10月 27 09:07 

上述例子,这是因为这个目录,删除的这个文件所在的目录有没有写权限,而不是看删除的文件本身的权限,user1目录下有1.txt文件,要想删除1.txt,看的不是1.txt文件的权限,而是看1.txt所在目录的权限,它所在的目录是user1,user1就是777,777是任何用户可编辑的,所以就可删除,而一旦我们加上了stick_bit权限

stick_bit总结

  • 文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新的文件。
  • 如果希望用户能够添加文件,但是不能删除该目录下其他用户的文件,则可以对该目录增加这个权限。
  • 设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。
  • 有时候,set-uid上的权限为大写的S,而不是小写的s。这是因为该文件没有x权限所致,不管是大写的S还是小写s,都表示它存在set-uid和set-gid权限。同理stick-bit也一样。
  • 当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、7(sst),这里的“(---)”,分别指user、group、others的权限位(rwx rwx rwx)。 如:/tmp是--t,所以第一位为1,所以/tmp权限用数字表示为1777。
  • 文件的读写执行权限不要和目录的读写执行权限混淆。
  • 比如:一个文件设置了可写权限,但目录未设置可写权限,表示不能删除该文件,但文件内容是可编辑的。
  • 一个目录设置了可写权限,但目录下文件没有可写权限,表示可删除该文件,但该文件不能编辑。能否删除一个文件或者目录,看得是这个文件或目录所在的父目录的权限,能否删除和文件本身的权限无关。

2.21 软链接文件

软链接介绍

  • 链接文件分为硬链接文件(hard link)和软链接文件(symbolic link),两种链接的本质区别在于inode。
    • 软链接文件:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。做软链接尽量使用绝对路径。

例子

代码语言:javascript
复制
```
[root@hf-01 ~]# ls -l /bin     这个/bin,就是一个软链接文件,真正是在/usr/bin/下
lrwxrwxrwx. 1 root root 7 8月  21 05:03 /bin -> usr/bin
[root@hf-01 ~]# /bin/ls
11.txt	123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[root@hf-01 ~]# /usr/bin/ls     会发现和/bin/ls是一个软链接文件
11.txt	123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
```

软链接其实就是在一个文件本身存了另一个文件目录的路径。链接文件的大小适合路径是有关系的,路径越长,那这个软链接文件越大

软链接优势

软链接就像是windows中的快捷方式,可以很大程度的节省磁盘空间

案例分析
代码语言:javascript
复制
比如要找一个文件,必须要在/tmp/123/12/1.txt,而本身这个1.txt文件放到了/root/123/这个目录下
而这个程序必须要在/tmp/12/目录下找到1.txt文件

方法一:可以拷贝一份到该目录下,但若是文件更改后,就会继续要拷贝,所以很麻烦。

方法二:给/root/123/1.txt做一个软链接
ln -s创建软链接
  • ln -s 源文件 软链接文件
代码语言:javascript
复制
[root@hf-01 ~]# ls
11.txt  123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[root@hf-01 ~]# cd /tmp/
[root@hf-01 tmp]# ls
aminglinux  amning  mysql.sock  user1  yum.log  yunwei
[root@hf-01 tmp]# ln -s /tmp/yum.log /root/123/yum.log
[root@hf-01 tmp]# ls -l /root/123/      这样就形成了一个软链接文件
总用量 0
lrwxrwxrwx. 1 root root 12 10月 30 05:44 yum.log -> /tmp/yum.log
ln -s 链接目录
  • 不仅可以链接文件,还可以链接目录
代码语言:javascript
复制
[root@hf-01 tmp]# ln -s /tmp/amning/ /root/amning111
[root@hf-01 tmp]# ls -l !$
ls -l /root/amning111
lrwxrwxrwx. 1 root root 12 10月 30 05:51 /root/amning111 -> /tmp/amning/
同一目录,创建软链接
  • 在/tmp/目录下,源文件aa.log链接——》目标文件ss.log
代码语言:javascript
复制
[root@hf-01 tmp]# ls -l
总用量 4
-rw-r--r--. 1 root    root     0 10月 30 06:09 aa.log
srwxrwxrwx. 1 mysql   mysql    0 10月 30 04:49 mysql.sock
drwxrwxrwx. 2 user1   user1    6 10月 27 09:07 user1
[root@hf-01 tmp]# ln -s aa.log ss.log
[root@hf-01 tmp]# ls -l
总用量 4
-rw-r--r--. 1 root    root     0 10月 30 06:09 aa.log
srwxrwxrwx. 1 mysql   mysql    0 10月 30 04:49 mysql.sock
lrwxrwxrwx. 1 root    root     6 10月 30 06:13 ss.log -> aa.log
弊端——在同一目录下
  • 弊端——假设做了一个相对路径的软链接,再把所有的文件拷贝到另一台机器上的时候(软链接本身也是一个文件),结果会发现这个文件不存在,(也就是源不存在),所以尽量使用绝对路径
弊端解决方法
  • 尽量使用绝对路径,这样就会避免文件的不存在
代码语言:javascript
复制
[root@hf-01 ~]# cd /tmp/
[root@hf-01 tmp]# ls -l
总用量 4
drwxr-xr-x. 4 user1   hanfeng 53 10月 30 06:01 aminglinux
lrwxrwxrwx. 1 root    root     6 10月 30 06:13 ss.log -> aa.log
[root@hf-01 tmp]# mv ss.log aminglinux/
[root@hf-01 tmp]# cd aminglinux
[root@hf-01 aminglinux]# ls -l
总用量 0
drwxr-xr-x. 4 user1 hanfeng 31 10月 25 06:55 aming2
lrwxrwxrwx. 1 root  root     6 10月 30 06:13 ss.log -> aa.log

这里会发现aa.log在飘红闪烁,这是因为这个文件不存在

阿铭工作中例子

代码语言:javascript
复制
[root@hf-01 ~]# df -h    查看磁盘分区情况
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  2.4G   16G   14% /
devtmpfs        489M     0  489M    0% /dev
tmpfs           494M     0  494M    0% /dev/shm
tmpfs           494M  6.7M  487M    2% /run
tmpfs           494M     0  494M    0% /sys/fs/cgroup
/dev/sda1       197M   75M  123M   38% /boot
  • 假如在/boot下,一个hanfeng.log日志文件占用很大空间,但是这个yin.log日志文件必须在这个/boot目录下,不能更改文件路径,那么就可以使用软链接来完美解决这个问题。可以将hanfeng.log 复制到/根目录下(大磁盘空间下)cp /boot/hanfeng.log /hanfeng.log 然后删除/boot/hanfeng.log文件,尽快的将复制的那个日志做个软链接链接到/boot,ln -s /hanfeng.log /boot/hanfeng.log就可以解决文件过大但是不能改路径的问题。

总结

  • 命令ln(link)
  • 格式:ln【-s】 【来源文件】【目的文件】
  • -s 建立软链接,不加-s建立硬链接。

2.22 硬连接文件

硬链接定义

  • 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域。即建立硬链接时该文件内容没有变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。
  • 硬链接不支持对目录做链接,只支持对文件做链接
硬链接和软连接对比
  • 硬链接
代码语言:javascript
复制
[root@localhost ~]# ln 1.txt 1_heard.txt
  • 软链接
代码语言:javascript
复制
[root@localhost ~]# ln -s 1.txt 1_sorft.txt
  • 对比:会发现软链接很小,硬链接很大
    • ls -i 查看inode号
    • 会发现硬链接文件和源文件使用了同一个inode号,大小相同,可使用find命令查找到硬链接
代码语言:javascript
复制
[root@localhost ~]# ls -l
总用量 32
drwxr-xr-x. 3 root root   45 10月 26 16:11 111
-rw-r--r--. 1 root root    0 10月 26 15:54 111.12.txt
-rw-r--r--. 2 root root  391 10月 30 15:10 1_heard.txt
lrwxrwxrwx. 1 root root    5 10月 30 15:06 1_sorft.txt -> 1.txt
[root@localhost ~]# ls -i
33584735 111          33575033 1_sorft.txt  33575034 2.txt   33574987 anaconda-ks.cfg
33584737 111.12.txt   33575035 1.txt        33584734 3.txt   33575006 anaconda-ks.cfg.1
33575035 1_heard.txt  33584733 1.txt~       33584736 3.txt~  33575036 windows.txt

硬链接文件特性

  • 就是创建的文件和另外一个文件是相同的inode号,这两个文件相互为硬链接文件。(软链接文件是有原有的目标,它有一个真正的文件,软链接仅仅为一个快捷方式)
  • 再删除源文件后,会发现==软链接==一直闪烁,表示找不到源文件了,那这个软链接文件就没有用了
  • 再删除源文件后,会发现==硬链接==,会发现正常使用,但inode会变成1
代码语言:javascript
复制
[root@localhost ~]# rm 1.txt
rm:是否删除普通文件 "1.txt"?y
[root@localhost ~]# ls -l
总用量 28
drwxr-xr-x. 3 root root   45 10月 26 16:11 111
-rw-r--r--. 1 root root    0 10月 26 15:54 111.12.txt
-rw-r--r--. 1 root root  391 10月 30 15:10 1_heard.txt
lrwxrwxrwx. 1 root root    5 10月 30 15:06 1_sorft.txt -> 1.txt
  • 真正存数据的地方,存这个文件信息的位置在inode上
    • inode号代表着一个inode,inode是存在于文件系统中特殊的东西,这个inode会去记录一些文件的属性,如文件的时间、权限、位置等
代码语言:javascript
复制
[root@localhost ~]# ls -i 1_heard.txt
33575035 1_heard.txt
  • 硬链接不会占用双份空间,因为使用的同一个inode

硬链接的限制

  • 硬链接的限制:

目录不能做硬链接

不能跨文件系统(跨分区),因为不同的文件系统有不同的inode,不同的table目录体系。

代码语言:javascript
复制
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  1.1G   17G    6% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           493M     0  493M    0% /dev/shm
tmpfs           493M  6.7M  486M    2% /run
tmpfs           493M     0  493M    0% /sys/fs/cgroup
/dev/sda1       197M  109M   88M   56% /boot
tmpfs            99M     0   99M    0% /run/user/0
[root@localhost ~]# ls -i /boot/
    71 config-3.10.0-514.el7.x86_64
    67 grub
131136 grub2
    76 initramfs-0-rescue-513f8b3950084e768a99df3a6cd3d9e6.img
    75 initramfs-3.10.0-514.el7.x86_64.img
189445 initramfs-3.10.0-514.el7.x86_64kdump.img
    74 initrd-plymouth.img
    72 symvers-3.10.0-514.el7.x86_64.gz
    70 System.map-3.10.0-514.el7.x86_64
    77 vmlinuz-0-rescue-513f8b3950084e768a99df3a6cd3d9e6
    73 vmlinuz-3.10.0-514.el7.x86_64
[root@localhost ~]# ln /boot/config-3.10.0-514.el7.x86_64 /tmp/conifg.1
ln: 无法创建硬链接"/tmp/conifg.1" => "/boot/config-3.10.0-514.el7.x86_64": 无效的跨设备连接

硬链接总结

  • 硬链接文件不能跨分区创建,因为每个分区都有各自的inode。
    • 比如、:d1分区有a文件的inode号是88,而d2分区的b文件的inode号也是88.
    • 正是因为各个分区的inode号各自为营,如果跨分区创建硬链接文件就会导致混乱。
    • 为了避免这个问题,所以不允许跨分区创建硬链接文件。
  • 硬链接可以删除,因为使用了相同的inode 显示无法创建硬链接
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.18 特殊权限set_uid
    • set_uid
      • 例子 -rwsr-xr-x.中的s的权限
      • set_uid介绍
      • set_uid总结
      • set_uid的写法
  • 2.19 特殊权限set_gid
    • set_gid
      • set_gid作用
      • set_gid用法——>目录
    • set_gid总结
    • 2.20 特殊权限stick_bit
      • stick_bit介绍
        • stick_bit用法
          • stick_bit例子
            • stick_bit总结
            • 软链接介绍
            • 例子
            • 软链接优势
            • 阿铭工作中例子
            • 总结
            • 硬链接定义
            • 硬链接文件特性
            • 硬链接的限制
            • 硬链接总结
        • 2.21 软链接文件
        • 2.22 硬连接文件
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档