2.18特殊的权限set_uid
[root@centos-01 ~]# which passwd //查询一下passwd位置//
/usr/bin/passwd[root@centos-01 ~]# ls -l /usr/bin/passwd //查询一下passwd权限//-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd //权限是rws//
s=set_uid 保证普通用户临时拥有该命令所有者的身份(这个文件是可执行的二进制的文件)
[root@centos-01 ~]# ls /etc/shadow //改密码的文件///etc/shadow[root@centos-01 ~]# ls -l !$ //查看权限//ls -l /etc/shadow----------. 1 root root 1252 12月 13 19:37 /etc/shadow //权限为000//
- 如何给一个文件授权set_uid
[root@centos-01 ~]# chmod u+s /usr/bin/ls //增加s权限//
[root@centos-01 ~]# ls -l /usr/bin/ls //查看权限//
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls //有了S权限//
[root@centos-01 ~]# su - aming //改成 aming用户//
[aming@centos-01 ~]$ whoami
aming
[aming@centos-01 ~]$ ls /root/ //权限不 够//
ls: 无法打开目录/root/: 权限不够
[aming@centos-01 ~]$ ls -ld /root/
dr-xr-x---. 7 root root 238 6月 11 11:57 /root/
[aming@centos-01 ~]$ ls /root/ //ls经过 上面的授予S权限后//
11.txt 123 1.txt 1.txt~ 234 2.txt 3.txt anaconda-ks.cfg.1
去掉权限set_uid
[root@centos-01 ~]# chmod u-s /usr/bin/ls
2.19特殊的权限set_gid
sgid=set gid
该权限可以用于文件也可以用于目录。设置于可执行二进制文件时,作用和suid类似,即执行改文件的用户会临时获得改文件所属组的权限。设置在目录时,任何用户在此目录下创建的文件或目录都具有和该目录相同的所属组。
eg:
[root@centos-01 ~]# mkdir /tmp/test
[root@centos-01 ~]# # chmod 777 !$
[root@centos-01 ~]# ls -ld !$
ls -ld # chmod 777 !$
dr-xr-x---. 5 root root 204 12月 15 11:14 .
[root@centos-01 ~]# # chmod g+s !$ 给/tmp/test所属组增加s权限
[root@centos-01 ~]# ls -ld /tmp/testdrwxr-xr-x. 2 root root 6 12月 21 16:54 /tmp/test[root@centos-01 ~]# useradd user1[root@centos-01 ~]# su - user1 临时切换到user1用户[user1@centos-01 ~]$ cd /tmp/test/ 切换至test目录[user1@centos-01 test]$ mkdir akai001 在test目录下创建新目录
[user1@centos-01 test]$ touch akai.txt 在test目录下创建新文件
[user1@centos-01 test]$ ls -l总用量 0
drwxrwsr-x 2 user1 root 6 12月 20 15:30 adai001
-rw-rw-r-- 1 user1 root 0 12月 20 15:31 adai.txt
在test目录下新创建的目录或文件均和test有相同的所属组
2.20 特殊权限之 stick_bit
stick_bit可以理解为防删除位,当前只针对目录有效。一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新文件。如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件,则可以对其父目录增加该权限。
语法: chmod [o] [+,-] t filename
eg: /tmp/目录就设有该权限
[root@centos-01 ~]# useradd user2[root@centos-01 ~]# su - user2[user2@centos-01 ~]$ touch /tmp/user1.txt //在user2用户的/tmp/目录下创建文件user1.txt//[user2@centos-01 ~]$ echo "121">!$ //向user1.txt写入文件//echo "121">/tmp/user1.txt[user2@centos-01 ~]$ exit登出[root@centos-01 ~]# useradd user3[root@centos-01 ~]# su - user3[user3@centos-01 ~]$ rm -f /tmp/user1.txt //在user3用户下对user2用户在/tmp/目录下创建的文件实施删除工作//rm: 无法删除"/tmp/user1.txt": 不允许的操作
说明: 一个文件能否被删除,取决于该文件父目录的权限,/tmp/目录是777,任何人都可以写的,所以理论上任何人都可以删除/tmp/下的所以文件,但是刚才我们做的实验却表明,user3是不可以删除user2的文件的,就是因为/tmp/目录有stick bit权限。
2.21 软链接文件
软链接(soft link)又叫符号链接(symbolic link),这个文件包含了另一个文件的路径名,可以是任意文件或目录,可以链接不同文件系统的文件。软链接文件有类似于Windows的快捷方式,删除源文件后链接会失效。
创建软链接: ln -s [源文件] [目标文件]
2.22 硬链接
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。进行硬链接的时候该文件的内容并没有任何变化,只是指定了相同的inode index。
- 硬链接有两个限制:
1)不能跨文件系统创建硬链接,因为不同的文件系统有不同的inode index;
2)目录不能创建硬链接。 - 创建硬链接: ln [源文件] [目标文件]
软链接和硬链接的区别
1)硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。软链接就是一个普通文件,只是数据块内容有点特殊(文件用户数据块中存放的内容是另一文件的路径名的指向,类似于Windows下的快捷方式)。
2)由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
3)硬链接不能对目录进行创建,只可对文件创建。软链接可对文件或目录创建。
转载于:https://blog.51cto.com/13242922/2053035