set_uid:该权限针对二进制可执行文件,使文件在执行阶段具备文件全部者的权限; 通俗一点讲就是,普通用户想要访问一个没有其余用户可执行权限的目录时,暂时借助二进制文件的所属主权限去访问这个目录,若是没有s权限,就不能访问; 注意:普通用户要有这个二进制文件的可执行权限。若是没有,那也是不能访问的。 咱们系统中passwd命令就具备s权限。当普通用户执行passwd命令的时候,能够临时得到root权限,从而能够更改密码;node
系统修改密码命令:passwdlinux
[root@linux-128 ~]# which passwd /usr/bin/passwd [root@linux-128 ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd //颜色变成红色
系统密码文件:/etc/shadowui
[root@linux-128 ~]# ls -l /etc/shadow ---------- 1 root root 663 10月 20 15:14 /etc/shadow
注意:这里全部者,所属组,其余用户都没有执行权限,可是root是超级用户,它具备至高无上的权限,因此root用户是能够修改密码的;按理说普通用户没有执行权限是没办法去修改密码的,可是咱们passwd命令具备s权限,普通用户在使用命令passwd时,能够临时获取到passwd所属主的root权限,因此能修改密码。code
例子:使用普通用户查看/root/目录:rem
[root@linux-128 ~]# ls -ld /root/ //root目录没有其余用户可执行权限; dr-xr-x---. 3 root root 163 10月 25 00:45 /root/ [root@linux-128 ~]# su - wuzhou //切换用户 上一次登陆:一 10月 23 21:56:30 CST 2017pts/0 上 [wuzhou@linux-128 ~]$ ls /root/ ls: 没法打开目录/root/: 权限不够 //没有权限
咱们怎样才能让普通用户wuzhou打开/root/目录呢? 解:咱们给ls命令加上一个s权限,让用户wuzhou临时拥有ls的全部者权限;例如:it
[root@linux-128 ~]# which ls alias ls='ls --color=auto' /usr/bin/ls [root@linux-128 ~]# chmod u+s /usr/bin/ls [root@linux-128 ~]# ls -l /usr/bin/ls -rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls [root@linux-128 ~]# su - wuzhou 上一次登陆:五 10月 27 00:18:52 CST 2017pts/0 上 [wuzhou@linux-128 ~]$ ls /root/ anaconda-ks.cfg
设置s权限:table
- chmod u+s 二进制文件名
- chmod u=rws 二进制文件名
- chmod 4755 二进制文件名 这个4是这样得出来的:
suid = 4
sgid = 2
stick_bit = 1
取消s权限:test
- chmod u-s
- chmod u=rws
- chmod 755
set_gid:该权限能够做用在二进制可执行文件上,也能够做用在目录上。看成用在文件上时,其功能和set_uid同样,它会使文件在执行阶段具备该文件所属组的权限。做用在目录上时,任务用户在此目录下建立的文件和目录都具备和该目录所属组相同的组。登录
设置s权限:file
- chmod g+s 二进制文件名或目录
- chmod g=rws 二进制文件名或目录
- chmod 2755 二进制文件名或目录
例子:做用在二进制文件上
[root@linux ~]# ls -l /bin/ls -rwxr-xr-x. 1 root root 112664 10月 15 2014 /bin/ls [root@linux ~]# chmod g+s /bin/ls \\/bin/ls 加上sgid [root@linux ~]# !ls ls -l /bin/ls -rwxr-sr-x. 1 root root 112664 10月 15 2014 /bin/ls \\颜色会变成黄色 [root@linux ~]# su - wzzhan [wzzhan@linux ~]$ ls /root \\wzzhan用户会调用命令ls属组的权限去访问/root目录 111.bak 444 5.txt 777 install.log prem 222 4.txx 6.txt anaconda-ks.cfg install.log.syslog test
例子:做用于目录上
[root@linux tmp]# mkdir 555 \\建立目录555 [root@linux tmp]# chmod 777 555 \\设置权限全部人可读可写可执行 [root@linux tmp]# su - wzzhan \\切换用户 wzzhan下 [wzzhan@linux ~]$ cd /tmp/555 [wzzhan@linux 555]$ mkdir dir \\建立目录dir [wzzhan@linux 555]$ touch file \\建立文件file [wzzhan@linux 555]$ logout \\退出用户到root下 [root@linux tmp]# chmod g+s 555 \\将目录555添加sgid权限 [root@linux tmp]# su - wzzhan \\切换用到wzzhan下 [wzzhan@linux tmp]$ cd 555 [wzzhan@linux 555]$ mkdir dir1 \\建立目录dir1 [wzzhan@linux 555]$ touch file1 \\建立文件file1 [wzzhan@linux 555]$ ls -l 总用量 8 drwxrwxr-x. 2 wzzhan wzzhan 4096 10月 27 15:04 dir drwxrwsr-x. 2 wzzhan root 4096 10月 27 15:06 dir1 \\建立的目录的属组是调用的目录的属组 -rw-rw-r--. 1 wzzhan wzzhan 0 10月 27 15:04 file -rw-rw-r--. 1 wzzhan root 0 10月 27 15:06 file1 \\建立的文件的属组也是调用的目录的属组
sticky_bit:防删除位。一个目录下的文件嫩不能被删除,不是取决于文件自己的属组属组还有其余权限, 而是在于这个文件所在目录的权限是否可读可写可执行,若是目录可写,那就意味着咱们能够删除目录下的任何文件。当一个目录的权限为其余人可读可写可执行的时候,那么其余用户均可以删除这个目录下的文件,包括root文件,为了防止文件被其余用户删除,咱们给这这个目录增长一种特殊权限:sticky,防删除位,要用root用户操做。这样一个用户就不能删除另外一个用户建立的文件了。只有root和建立文件本人才可以删除。
设置t权限:
- chmod o+t 目录
- chmod o=rwt 目录
- chmod 1755 目录
例子:
root@linux ~]# cd /tmp [root@linux tmp]# chmod o+t 666 [root@linux tmp]# ls -ld 666 drwxrwxrwt. 3 root root 4096 10月 27 15:42 666 [root@linux tmp]# su - user1 [user1@linux ~]$ cd /tmp/666 [user1@linux 666]$ ls -l 总用量 8 drwxrwxr-x. 2 wzzhan wzzhan 4096 10月 27 15:42 11 -rw-r--r--. 1 root root 337 10月 27 15:22 1.txt -rw-r--r--. 1 root root 0 10月 27 15:22 1.xt -rw-rw-r--. 1 wzzhan wzzhan 0 10月 27 15:42 2.txt [user1@linux 666]$ rm -r 111 rm: 没法删除"111": 没有那个文件或目录 [user1@linux 666]$ rm -r 11 rm:是否删除有写保护的目录 "11"?y rm: 没法删除"11": 不容许的操做 [user1@linux 666]$ rm -r 1.txt rm:是否删除有写保护的普通文件 "1.txt"?y rm: 没法删除"1.txt": 不容许的操做 [user1@linux 666]$ rm -rf 2.txt rm: 没法删除"2.txt": 不容许的操做 [user1@linux 666]$ logout [root@linux tmp]# ls 1 22.txt 3 555 6.txt file1 test1 1.txt 2.txt 3.txt 666 dir1 test yum.log [root@linux tmp]# cd 666 [root@linux 666]# ls 11 1.txt 1.xt 2.txt [root@linux 666]# rm -rf 11 [root@linux 666]# ls 1.txt 1.xt 2.txt [root@linux 666]# su - wzzhan [wzzhan@linux ~]$ cd /tmp/666 [wzzhan@linux 666]$ ls -l 总用量 4 -rw-r--r--. 1 root root 337 10月 27 15:22 1.txt -rw-r--r--. 1 root root 0 10月 27 15:22 1.xt -rw-rw-r--. 1 wzzhan wzzhan 0 10月 27 15:42 2.txt [wzzhan@linux 666]$ rm 2.txt 用户wzzhan才能删除2。txt文件 [wzzhan@linux 666]$ ls -l 总用量 4 -rw-r--r--. 1 root root 337 10月 27 15:22 1.txt -rw-r--r--. 1 root root 0 10月 27 15:22 1.xt
软连接:是创建一个独立的文件,当读取这个连接文件时,它会把读取的行为转发到该文件所连接的文件上。
[root@linux-128 tmp]# ln -s /tmp/111/ /root/12 [root@linux-128 tmp]# ls -l /root 总用量 4 lrwxrwxrwx 1 root root 9 10月 27 01:12 12 -> /tmp/111/ -rw-------. 1 root root 1422 10月 17 03:51 anaconda-ks.cfg
比较源文件和软连接的大小,软链接的大小与源文件的长度有关
[root@linux-128 tmp]# du -sh /tmp/111/ /root/12 4.0K /tmp/111/ 0 /root/12
硬连接:当系统要读取一个文件时,会先读取inode信息,而后再根据inode的信息到块区域将数据取出来。而硬连接就是直接在创建一个inode连接到文件放置的块区域,即进行硬连接时,该文件的内容没有任何变化,只是增长了一个指向这个文件的inode,并不会额外占用磁盘空间。
[root@linux-128 tmp]# ln /tmp/123.txt /root/321.txt [root@linux-128 tmp]# ls -lih /tmp/123.txt 8389029 -rw-r--r-- 2 root root 17K 10月 27 01:31 /tmp/123.txt [root@linux-128 tmp]# ls -lih /root/321.txt 8389029 -rw-r--r-- 2 root root 17K 10月 27 01:31 /root/321.txt
注意:咱们建立的硬连接和源文件的inode同样,大小同样。
删除源文件,硬连接不受影响 [root@linux-128 tmp]# rm /tmp/123.txt rm:是否删除普通文件 "/tmp/123.txt"?y [root@linux-128 tmp]# ls -l /root/321.txt -rw-r--r-- 1 root root 16816 10月 27 01:31 /root/321.txt
硬连接不能连接目录 [root@linux-128 tmp]# ln /tmp/222/ /root/23 ln: "/tmp/222/": 不容许将硬连接指向目录