特殊权限set_uid

概念:set_uid,当普通用户执行passwd命令时,可以**临时**拥有root权限。
set_uid 该权限针对二进制**可执行文件**,如:ls passwd

如下命令,查看

[root@zhangzhen-01 ~]# which passwd #查看这个命令在哪 /usr/bin/passwd [root@zhangzhen-01 ~]# ls -l /usr/bin/passwd #查看passwd文件权限 -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd #这里的s表示什么含义呢,s就是set_uid的权限,这个权限可以让普通用户(所有者)当他执行带set_uid这个命令时,这时候他就会被赋予这个所有者的临时权限。

修改密码权限的配置文件在:/etc/shadow下

[root@zhangzhen-01 ~]# ls /etc/shadow /etc/shadow [root@zhangzhen-01 ~]# ls -l !$ #在这里我们可以看见,这个文件是非常严谨,禁止任何用户对它进行任何操作。 ls -l /etc/shadow ----------. 1 root root 645 3月 28 21:58 /etc/shadow

注:在这里,root是超级用户权限,可以对他进行操作。

如何让一个普通用户临时拥有root权限,操作如下:

[root@zhangzhen-01 ~]# useradd zhang-02 #创建一个zhang-02的用户 [root@zhangzhen-01 ~]# tail -n3 /etc/passwd #查看最后三行是否创建成功 zhangzhen-03:x:1000:1000::/home/zhangzhen-03:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash zhang-02:x:1002:1002::/home/zhang-02:/bin/bash [root@zhangzhen-01 ~]# su - zhang-0 #切换用户 [zhang-02@zhangzhen-01 ~]$ whoami #查看当前是哪个用户登录的 zhang-02

如何给一个可执行的文件添加“s”(让普通用户临时拥有所有者权限),例如下:

[zhang-02@zhangzhen-01 ~]$ ls /root/ #普通用户没有访问的权限 ls: 无法打开目录/root/: 权限不够 [zhang-02@zhangzhen-01 ~]$ ls -ld /root/ #来看一下这个文件的权限,因为是普通用户,所以访问不了root dr-xr-x---. 6 root root 185 3月 29 00:21 /root/

在这里,我们回到root用户下,执行:

. 在这里,绿色的/usr/bin/ls还并没有赋予“s权限”

我们可以给这个ls文件添加“s”权限 [root@zhangzhen-01 ~]# chmod u+s /usr/bin/ls 再来查看这个文件权限 添加成功!

再回到普通用户下,实验一下是否可以查看root下的文件呢

[zhang-02@zhangzhen-01 ~]$ ls /root/ #ok,这这里可以查到 anaconda-ks.cfg dior dior2 dior3 [zhang-02@zhangzhen-01 ~]$ ls -ld /root/ dr-xr-x---. 6 root root 185 3月 29 00:21 /root/

**如何删除已添加的“s”,权限,命令如下:

[root@zhangzhen-01 ~]# chmod u-s /usr/bin/ls

特殊权限set_gid (可以针对目录,所属组的身份,)该目录的背景颜色的是×××

概念:其功能和操作和set uid是一样的
该权限可以作用在二进制可执行文件,也可以作用在目录上;
当作用在文件上时,其功能和操作和set uid是一样的;
它会使文件在执行阶段具有文件所属组的权限;
目录被设置这个权限后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。

操作命令如下:

特殊权限stick_bit

概念:可以理解为防删除位,文件是否可以被某用户删除;
主要取决于该文件所在的目录是否对该用户具有写权限;
如果没有写权限,则这个目录下的所有文件都不能删除;
同时也不能添加新的文件。
如果希望用户能够添加文件但不能删除该目录下其他用户的文件时;
则可以对父目录增加该权限,如设置后,就算用户对目录具有写权限;
也是不能删除其他用户的文件。
命令如下:chmod u=b /tmp/

示例 在普通用户下创建个文件

[zhang-02@zhangzhen-01 tmp]$ touch zhang1 #在/tmp下创建个zhang1的文件 [zhang-02@zhangzhen-01 tmp]$ ls zhang1 [zhang-02@zhangzhen-01 tmp]$ chmod 777 zhang1 #赋予最高的权限 [zhang-02@zhangzhen-01 tmp]$ ls -l zhang1#查看这个文件的所有者和所属组是谁 -rwxrwxrwx. 1 zhang-02 zhang-02 13 3月 29 23:26 zhang1

切到另外一个普通用户 user1下,查看是否可以编辑和删除。

[root@zhangzhen-01 tmp]# su - user1 [user1@zhangzhen-01 tmp]$ ls zhang1 [user1@zhangzhen-01 tmp]$ vi zhang1 # 可以编辑,已测试 [user1@zhangzhen-01 tmp]$ rm -f zhang1 #但是在这里并不可以删除 rm: 无法删除"zhang1": 不允许的操作

软链接文件

概念:软连接类似于windows的快捷方式,
软链接不只可以连接文件,也可以链接目录。
软连接后面可以跟绝对路径;
也可以跟相对路径,相对路径的话得在你要去的目录下
命令如下:ln -s [源文件] [目标文件]
### 建议使用绝对路径。
如果你创建软连接不存在的时候,会红色常闪,那么直接在这个路径下touch一个文件即可。

软连接是什么样子呢,如下图,浅蓝色:

如何创建软链接,命令如下:ln -s [源文件] [目标文件] 例:

[root@zhangzhen-01 /]# mkdir /root/111 [root@zhangzhen-01 /]# ln -s /tmp/yum.log /root/111/ [root@zhangzhen-01 /]# ls -l /root/111/ 总用量 0 lrwxrwxrwx. 1 root root 12 3月 29 23:55 yum.log -> /tmp/yum.log

如何创建软链接目录,操作如下:ln -s [源目录] [目标目录]

[root@zhangzhen-01 /]# ln -s /tmp/dior/ /root/111/zhang [root@zhangzhen-01 /]# ls -l /root/111 总用量 0 lrwxrwxrwx. 1 root root 12 3月 29 23:55 yum.log -> /tmp/yum.log lrwxrwxrwx. 1 root root 10 3月 29 23:59 zhang -> /tmp/dior/

硬链接文件

概念:硬链接不支持对目录做硬链接,只支持对文件做。
即便是硬链接源地址被删除,也不受影响,相当于windows复制。
inode号如果相同有N个文件,也不会占用空间,因为数据都存在了inode里面。
文件做硬链接可以,但是有一个前提,不可以跨分区
命令如下 :ln [源地址] [目标地址]

查看inode号:

#如下命令中,第二段表示inode号 [root@zhangzhen-01 ~]# ls -l 总用量 8 drwxr-xr-x. 2 root root 34 3月 29 23:59 111 -rw-------. 1 root root 6901 3月 27 22:40 anaconda-ks.cfg drwxr-xr-x. 2 root user1 32 3月 28 22:44 dior d---------. 3 root root 45 3月 28 23:26 dior2 drwxrwxr-x. 2 root root 19 3月 29 00:22 dior3 [root@zhangzhen-01 ~]# ls -i #查看inode号 499815 111 33574978 anaconda-ks.cfg 499801 dior 33575028 dior2 16784710 dior3