文件特殊权限suid、sgid、stick_bit、硬连接、软连接

第二章 文件、目录管理

2.18 特殊权限之 suid

SUID的做用就是:让原本没有相应权限的用户运行这个程序时,能够访问没有权限访问的资源。passwd是一个很鲜明的例子。
suid=set uidnode

# umask
0022

umask的数值0022中第一位表明的就是特殊权限,包括有suid、sgid、sticky_bit。ui

该权限针对二进制可执行文件(x),是文件在执行阶段具备文件全部者的权限。spa

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

passwd这个命令就有该权限,当普通用户执行passwd命令时,能够临时得到root权限,从而能够更改密码。
passwd属性找那个显示的是rws,并不是传统的rwx,用数字表示为4755。
4是如何计算来的呢?
当有特殊权限时,第一位数字能够是0,1(--t),2(-s-),3(-st),4(s--),5(s-t),6(ss-),7(sst)。passwd是s--,因此数值为4。code

  • 自定义一个set uid权限:
[root@3 ~]# su - 2  临时切换到用户2
[2@3 ~]$ ls -l /root/
ls: 没法打开目录/root/: 权限不够   **此时做为普通用户,没有查看(ls)/root/目录的权限因此报错
[2@3 ~]$ exit
登出
[root@3 ~]# chmod u+s /bin/ls  给ls命令增长set uid权限
[root@3 ~]# ls -l /bin/ls
-rwsr-xr-x. 1 root root 117656 11月  6 2016 /bin/ls
[root@3 ~]# su - 2
上一次登陆:三 6月  7 21:31:56 CST 2017pts/0 上
[2@3 ~]$ ls -l /root/  ls得到查看root的权限
总用量 4
-rw-------. 1 root root 1422 5月  22 01:30 anaconda-ks.cfg
[2@3 ~]$ exit
登出
[root@3 ~]# chmod u-x /bin/ls  去除全部者执行(x)权限
[root@3 ~]# ls -l /bin/ls  当全部者没有x权限以后s会变成S
-rwSr-xr-x. 1 root root 117656 11月  6 2016 /bin/ls
[root@3 ~]# chmod u-s /bin/ls
[root@3 ~]# ls -l /bin/ls
-rwxr-xr-x. 1 root root 117656 11月  6 2016 /bin/ls

注: 普通文件必须有x权限s权限才生效。索引

2.19 特殊命令之 sgid

sgid=set gid
该权限能够用于文件也能够用于目录。设置于可执行二进制文件时,做用和suid相似,即执行改文件的用户会临时得到改文件所属组的权限。设置在目录时,任何用户在此目录下建立的文件或目录都具备和该目录相同的所属组。
eg:资源

[root@2 ~]# mkdir /tmp/test
[root@2 ~]# chmod 777 !$
chmod 777 /tmp/test
[root@2 ~]# ls -ld !$
ls -ld /tmp/test
drwxrwxrwx 2 root root 6 6月   8 07:18 /tmp/test
[root@2 ~]# chmod g+s !$  给/tmp/test所属组增长s权限
chmod g+s /tmp/test
[root@2 ~]# ls -ld /tmp/test
drwxrwsrwx 2 root root 6 6月   8 07:18 /tmp/test
[root@2 ~]# useradd user1
[root@2 ~]# su - user1  临时切换到user1用户
[user1@2 ~]$ cd /tmp/test/  切换至test目录
[user1@2 test]$ mkdir adai001  在test目录下建立新目录
[user1@2 test]$ touch adai.txt  在test目录下建立新文件
[user1@2 test]$ ls -l
总用量 0
drwxrwsr-x 2 user1 root 6 6月   8 07:20 1
-rw-rw-r-- 1 user1 root 0 6月   8 07:21 2.txt
在test目录下新建立的目录或文件均和test有相同的所属组

2.20 特殊权限之 stick_bit

stick_bit能够理解为防删除位,当前只针对目录有效。一个文件是否能够被某用户删除,主要取决于该文件所在目录是否对该用户具备写权限。若是没有写权限,则这个目录下的全部文件都不能被删除,同时也不能添加新文件。若是但愿用户可以添加文件但同时不能删除该目录下的其余用户的文件,则能够对其父目录增长该权限。it

语法: chmod [o] [+,-] t filename
eg: /tmp/目录就设有该权限test

[root@2 ~]# useradd user2
[root@2 ~]# su - user2
[user2@2 ~]$ touch /tmp/user1.txt 在user2用户的/tmp/目录下建立文件user1.txt
[user2@2 ~]$ echo "121">!$  向user1.txt写入文件
echo "121">/tmp/user1.txt
[user2@2 ~]$ exit
登出
[root@2 ~]# useradd user3
[root@2 ~]# su - user3  切换到user3用户下
[user3@2 ~]$ rm -f /tmp/user1.txt  在user3用户下对user2用户在/tmp/目录下建立的文件实施删除工做
rm: 没法删除"/tmp/user1.txt": 不容许的操做    操做没法完成

说明: 一个文件可否被删除,取决于该文件父目录的权限,/tmp/目录是777,任何人均可以写的,因此理论上任何人均可以删除/tmp/下的因此文件,可是刚才咱们作的实验却代表,user3是不能够删除user2的文件的,就是由于/tmp/目录有stick bit权限。登录

2.21 软连接文件

软连接: 跟硬连接不一样,这个是创建一个独立的文件,而这个文件的做用是当读取这个连接文件时,它会把读取的行为转发到该文件所 link 的文件上。file

那么就来举一个例子:如今有文件 a,咱们作了一个软连接文件 b(只是一个连接文件,很是小), b 指向了文件 a。当读取 b 时,那么b 就会把读取的动做转发到 a 上,这样就读取到了文件 a。因此,当咱们删除文件 a 时,文件 b 并不会被删除,可是再读取 b 时,会提示没法打开文件。然而,当咱们删除 b 时, a 是不会有任何影响的。(b文件相似Windows的快捷方式,可是是二级快捷方式,inode硬连接是一级)

这就用到了 ln 命令:

语法 : ln [-s] [来源文件] [目的文件(快捷方式)]
ln 经常使用的选项就一个-s,若是不加就是创建硬连接,加上就创建软连接。

 

2.22 硬连接

>硬链接指经过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不论是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。通常这种链接就是硬链接。硬链接的做用是容许一个文件拥有多个有效路径名,这样用户就能够创建硬链接到重要文件,以防止“误删”的功能。进行硬连接的时候该文件的内容并无任何变化,只是指定了相同的inode index。

  • 硬连接有两个限制:
    1)不能跨文件系统建立硬连接,由于不一样的文件系统有不一样的inode index;
    2)目录不能建立硬连接。
  • 建立硬连接: ln [源文件] [目标文件]

软连接和硬连接的区别

1)硬连接就是同一个文件使用了多个别名(他们有共同的 inode)。软连接就是一个普通文件,只是数据块内容有点特殊(文件用户数据块中存放的内容是另外一文件的路径名的指向,相似于Windows下的快捷方式)。 2)因为硬连接是有着相同 inode 号仅文件名不一样的文件,所以,删除一个硬连接文件并不影响其余有相同 inode 号的文件。删除软连接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接就变成了死连接。 3)硬连接不能对目录进行建立,只可对文件建立。软连接可对文件或目录建立。

相关文章
相关标签/搜索