特殊权限、软链接、硬连接

目录

一、 特殊权限set_uid
二、 特殊权限set_gid
三、 特殊权限stick_bit
四、 软链接文件
五、 硬连接文件

一、 特殊权限set_uid

set uid:该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。

比如,passwd这个命令就具有这个权限。当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。示例命令如下:

[root@minglinux ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

这里的rws权限中的s就代表set_uid权限。

再举一个例子:
首先我们切换到普通用户ming,然后使用ls命令查看/root目录,发现提示权限不够,因为/root目录是比较严谨的,只有root用户才能查看。

[root@minglinux-01 ~]# su ming
[ming@minglinux-01 root]$ whoami
ming
[ming@minglinux-01 root]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[ming@minglinux-01 root]$ ls -ld /root/
dr-xr-x---. 7 root root 240 9月  15 00:42 /root/

那此时我们给ls这个命令加上set_uid,相当于让普通用户在执行ls期间能临时拥有root用户的权限。所以ming用户再次使用ls /root/可以成功显示结果。示例命令如下:

[root@minglinux-01 ~]# whoami
root
[root@minglinux-01 ~]# chmod u+s /usr/bin/ls
[root@minglinux-01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117672 4月  11 12:35 /usr/bin/ls
[ming@minglinux-01 root]$ whoami
ming
[ming@minglinux-01 root]$ ls /root/
1.txt  anaconda-ks.cfg  dir1  dir2  dir3  dir4

二、 特殊权限set_gid

set gid:该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上。

  1. 当作用在文件上时,它会使文件在执行阶段具有文件所属组的权限。示例如下:
[root@minglinux-01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117672 4月  11 12:35 /usr/bin/ls
[root@minglinux-01 ~]# chmod g+s /usr/bin/ls
[root@minglinux-01 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117672 4月  11 12:35 /usr/bin/ls

我们给ls命令加了set_gid权限,即ls执行时具有文件ls所属的root组的权限,而root组对/root目录有r-x权限,所以此时ming用户也临时拥有了root组的权限,可以成功执行ls /root/命令。

[ming@minglinux-01 root]$ ls /root
1.txt  anaconda-ks.cfg  dir1  dir2  dir3  dir4
  1. 当作用在目录上时,任何用户在此目录下创建的文件都具有和该目录所属组相同的组。命令如下:
[root@minglinux-01 ~]# mkdir 123
[root@minglinux-01 ~]# chmod g+s 123
[root@minglinux-01 ~]# ls -ld 123
drwxr-sr-x. 2 root root 6 9月  18 07:10 123
[root@minglinux-01 ~]# chown :user1 123
[root@minglinux-01 ~]# ls -ld 123
drwxr-sr-x. 2 root user1 6 9月  18 07:10 123
[root@minglinux-01 ~]# mkdir 123/456
[root@minglinux-01 ~]# ls -ld 123/456/
drwxr-sr-x. 2 root user1 6 9月  18 07:11 123/456/
[root@minglinux-01 ~]# touch 123/test
[root@minglinux-01 ~]# ls -l 123/test 
-rw-r--r--. 1 root user1 0 9月  18 07:11 123/test

取消了123目录的set_gid权限后,在此目录下创建的文件和目录的所属组都变成了root组,而不是123目录所属的组。命令显示如下:

[root@minglinux-01 ~]# chmod g-s 123
[root@minglinux-01 ~]# ls -ld 123
drwxr-xr-x. 4 root user1 53 9月  18 07:17 123
[root@minglinux-01 ~]# mkdir 123/789
[root@minglinux-01 ~]# ls -ld 123/789/
drwxr-xr-x. 2 root root 6 9月  18 07:19 123/789/
[root@minglinux-01 ~]# touch 123/test2
[root@minglinux-01 ~]# ls -l 123/test2
-rw-r--r--. 1 root root 0 9月  18 07:19 123/test2

三、 特殊权限sticky_bit

sticky bit:可以理解为防删除位。如果希望用户能够添加文件但不能删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。
示例:

[root@minglinux ~]# ls -ld /tmp/
drwxrwxrwt. 9 root root 230 9月  17 11:32 /tmp/
[ming@minglinux-01 root]$ whoami
ming
[ming@minglinux-01 root]$ cd /tmp/
[ming@minglinux-01 tmp]$ ls
ls2  test  test_mv  vmware-root
[ming@minglinux-01 tmp]$ touch ming
[ming@minglinux-01 tmp]$ ll
总用量 116
-rwxr-xr-x. 1 root root 117672 9月  13 21:41 ls2
-rw-rw-r--. 1 ming ming      0 9月  18 07:29 ming
drwxr-xr-x. 2 root root     19 9月  12 22:18 test
drwxr-xr-x. 3 root root     18 9月  13 23:14 test_mv
drwx------. 2 root root      6 9月   5 17:15 vmware-root
[ming@minglinux-01 tmp]$ vi ming
[ming@minglinux-01 tmp]$ chmod 777 ming 
[ming@minglinux-01 tmp]$ ll ming
-rwxrwxrwx. 1 ming ming 35 9月  18 07:29 ming
[user1@minglinux-01 tmp]$ whoami
user1
[user1@minglinux-01 tmp]$ rm -rf ming 
rm: 无法删除"ming": 不允许的操作

上例中可以看到,由于/tmp/具有sticky权限,所以任一用户不能删除该目录下其他用户的文件。

  • 配置特殊权限的命令总结:

chmod u+s filename 设置set uid权限
chmod u-s filename 删除set uid权限
chmod g+s dirname 设置set gid权限
chmod g-s dirname 删除set gid权限
chmod o+t dirname 设置sticky权限
chmod o-t dirname 删除sticky权限

有时候,set_uid上的权限为大写的S,而不是小写的s,这是因为改文件没有x权限所致,不管是大写S还是小写s,都表示它存在set_uid或者set_gid权限,同理sticky bit也一样。

ps:根据前面示例可以发现,passwd显示的是rws而非传统的rwx,用数字表示为4755。/tmp/显示的rwt而非rwx,用数字表示为1777。这个7和1是如何计出来的呢?当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、或7(sst)。回过头来看passwd,它是s--,所以是4;而/tmp/是--t,所以是1。

四、 软链接文件

软链接(symbolic link):软链接建立一个独立的文件,当读取这个链接文件时,它就会把读取的行为转发到该文件所链接到的文件上。当删除链接指向的文件时,链接文件不会被删除,但无法打开;当删除链接文件时,链接指向的文件不受影响。

五、 硬连接文件

硬链接(hard link):当系统要读取一个文件时,会先读取inode信息,然后在根据inode中的信息到块区域将数据读取出来。而硬链接是直接再建立一个inode链接到文件放置的块区域,即进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制:(1)不能跨文件系统,因为不同的文件系统又不同的inode table;(2)不能链接目录。

  • ln命令
    ln即link的缩写。ln命令的格式为:ln [-s] [来源文件] [目的文件],该命令常用的选项是-s。加-s选项就是建立软链接,不加就是建立硬链接。

硬链接相关示例命令如下:

[root@minglinux ~]# mkdir /tmp/4_9
[root@minglinux ~]# cd /tmp/4_9
[root@minglinux 4_9]# cp /etc/passwd ./
[root@minglinux 4_9]# ls -l
总用量 4
-rw-r--r--. 1 root root 995 9月  17 15:30 passwd
[root@minglinux 4_9]# du -sk
4       .
[root@minglinux 4_9]# ln passwd passwd-hard
[root@minglinux 4_9]# ll
总用量 8
-rw-r--r--. 2 root root 995 9月  17 15:30 passwd
-rw-r--r--. 2 root root 995 9月  17 15:30 passwd-hard
[root@minglinux 4_9]# du -sk
4       .

一开始目录下只有一个passwd文件,目录总大小为4KB。做了硬链接后,虽然两个文件的大小都为995B,但目录的总大小并没有变化。删除源文件再比较一下,命令如下:

[root@minglinux 4_9]# rm -f passwd
[root@minglinux 4_9]# ll
总用量 4
-rw-r--r--. 1 root root 995 9月  17 15:30 passwd-hard

由此可知删除源文件passwd后,文件大小依旧不变。这说明硬链接文件并不会复制数据块,额外占用磁盘空间。

硬链接不能跨分区,示例如下:

[root@minglinux-01 ~]# ln /boot/config-3.10.0-862.el7.x86_64 /tmp/config.1
ln: 无法创建硬链接"/tmp/config.1" => "/boot/config-3.10.0-862.el7.x86_64": 无效的跨设备连接

硬链接不能链接目录,示例命令如下:

[root@minglinux 4_9]# mkdir 123
[root@minglinux 4_9]# ln 123 456
ln: "123": 不允许将硬链接指向目录

软链接相关示例命令:

[root@minglinux 4_9]# mkdir 456
[root@minglinux 4_9]# cd 456
[root@minglinux 456]# cp /etc/passwd ./
[root@minglinux 456]# ln -s passwd passwd-soft
[root@minglinux 456]# ll
总用量 4
-rw-r--r--. 1 root root 995 9月  17 16:50 passwd
lrwxrwxrwx. 1 root root   6 9月  17 16:50 passwd-soft -> passwd
[root@minglinux 456]# head -1 passwd
root:x:0:0:root:/root:/bin/bash
[root@minglinux 456]# head -1 passwd-soft
root:x:0:0:root:/root:/bin/bash
[root@minglinux 456]# rm -f passwd
[root@minglinux 456]# head -1 passwd-soft
head: 无法打开"passwd-soft" 读取数据: 没有那个文件或目录
[root@minglinux 456]# ll
总用量 0
lrwxrwxrwx. 1 root root 6 9月  17 16:50 passwd-soft -> passwd

上例中可以知道,如果删除源文件,则不能读取软链接文件。另外,目录不可以做硬链接,但可以做软链接,示例命令如下:

[root@minglinux 456]# cd ..
[root@minglinux 4_9]# ls
123  456  passwd-hard
[root@minglinux 4_9]# ln 456 789
ln: "456": 不允许将硬链接指向目录
[root@minglinux 4_9]# ln -s 456 789
[root@minglinux 4_9]# ls -ld 456 789
drwxr-xr-x. 2 root root 25 9月  17 16:52 456
lrwxrwxrwx. 1 root root  3 9月  17 16:56 789 -> 456

还有需要注意的一点是做软链接尽量使用绝对路径,因为若使用路径,当源文件移动到其他目录时,软链接会出错找不到源文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容