之前用过passwd 查看它的位置 然后查看它的权限,发现它是一个红色的文件,九位权限位里 出现了一个新的权限字符s 。
s=set_uid 这个权限的作用就是临时赋予普通用户root用户的权限。
linux系统很安全,要改密码就要改一个密码的文件。
密码的文件是etc/shadow 查看它,发现权限全是0.
root是超级用户,拥有最高权限,即使全是0 也可以改动,可以授权一个修改的权限。普通用户不行,什么权限就是什么权限。
为了让普通用户可以改密码,就发明了一个特殊权限set_uid.
除了让所有者之外的用户,去执行带set_uid 的文件一瞬间,可以临时拥有root用户的权限。(这就是set_uid的作用。)
给一个文件设置set_uid 前提是一个二进制文件,而且是一个可执行文件。(ls passwd 都是二进制文件)
这样的权限并不多,在系统中只在/usr/bin/passwd有这个权限。
做个实验:给一个文件授权一个set_uid的权限。
首先切换到一个普通用户,然后ls root 会发现权限不够。
现在个ls设置一个set_uid的权限。
再次执行发现可以查看了。
权限还是没有变的,是因为给了ls临时的特殊权限。
改回来授予的权限, 减去权限即可。
也可以这样写 chmod u=rws /usr/bin/ls,但是查看后发现权限位是一个s (也有s权限,但是没有x权限,所以变成s,)想变成s 就加一个x
实际上就算是s 也不受影响。 root用户也能执行。
目录也可以加set_uid 但是没什么用,没意义。
set_gid 权限位作用在所属组上,同样是一个s。
做个实验:设置一个set_gid,背景变成了×××,所属组多了一个s 这个set_gid 和uid 功能很相似, 只是所有者变成了所属组。
set_gid还可以作用在目录上。
做个实验:修改一下234文件的所属组权限,变成了s
为了更好对比,更改一下234的所属组,chown :user11 234
再创建一个234下面的子文件 yingxinlinux,查看发现子文件的所属组也是user11
创建一个子目录 也是属于user11
把特殊权限取消,发现所属组的权限又是root了。
作用在目录上的时候,创建子目录或者子文件的时候 所创建的子目录或子文件的所属组会和目录一致。
t=stick_bit tmp是有这个权限的。这个叫 防删除位。这个t也包含x 文件权限位是777 表示所有用户可读可写。
但是不可以删除,谁的文件谁做主。
做个实验:在tmp下创建一个yingxin2 它的所有者 所属组都是yingxin
然后vi yingxin2 随便写一些东西。
改一下权限,改为777
切换一下, 然后换到tmp目录下, 使用vi去编写发现可以,但是去删除却不行,这就是防删除位。
只有有权限的人可以删,只有root可以删,其他没办法删除。
作用:防止别人删除自己的文件,root除外。
知识点
实验:在tmp下创建一个user11的目录 把权限改为777 (就是把用户user11创建的目录user11的权限改为777)
然后切换到user11下,去创建文件和目录 都可以创建。
这个创建的文件和目录可以删除么? 文件显示普通用户只有只读的,没有写的权限的。
但是普通用户没有写的权限,为什么可以删除,是因为你所删除的文件和目录 所在的目录是有权限的。(比如你删除1.txt,看的不是1.txt的权限,而是看它所在的目录,也就是user11的权限)
但是如果加上了 防删除位 就不能删除了、
软链接类似windows的快捷方式。
bin 就是属于软链接。它实际是在usr/bin/下的,使用bin/ls和使用usr/bin/ls是一样的
软链接就是在文件本身存了另外一个文件或者目录的路径,路径越长,文件就越大。
在lib64下面的软链接最多。
软链接的作用是节省储存空间。(比如cp一份一模一样的文件,再cp一份就多占了好多空间,但是做个软链接就几kb)
ln-s 可以做软链接。ln -s +要做软连接的文件 +要成为的软链接。
做个实验: 把tmp/yum.log /root/111/yum.log
软链接也可以链接目录。
也有特殊的情况,实验:在tmp下创建一个软链接。
这个做的是相对路径,这个仅仅是在当前目录下,这样做有弊端。 假如你在相对路径里创建了一个软链接,然后把原文件拷贝到了其他机器上,或者目录改了名字,软链接就会失效。 做软链接尽量做绝对路径。
做个实验:把111/yingyinlinux.log 挪到123/下, 去查看,发现是一个红色的提示, 说明这个文件不存在,(这就是用了相对路径)
因为123下没有yum.log,文件不存在 创建一个就可以,就正常了。
老师工作中的小栗子
假设工作中有一个情况,每天都要写一个日志,但是时间久了 磁盘快写满了。(写满了会出现很糟糕的情况,)可以cp一份 把文件cp到大的分区里(比如/目录下),然后把文件删除,紧接着做一个软链接,把文件软链接到cp的文件去。 这样就解决了文件占磁盘的问题。
软链接可以是文件 ,目录 也可以跨分区。
硬链接不支持对目录做,只支持对文件做。指令是ln
做个实验,
硬链接相互为硬链接,软链接删除了源 就不能用了,硬链接删不删源没关系, 硬链接相当于多了一个文件,相当于多了一张皮。真正的文件在inode号里。而且硬链接不会占双份空间,因为inode号只有一个。做多少个硬链接都无所谓。
硬链接不能做目录,
做个实验:
文件可以做硬链接,但是不能跨分区。
做个实验:把boot目录下的文件做硬链接到tmp下,显示无法创建。因为这两个分区存在相同inode文件的。 分区之间都有inode体系,创建分区的时候都已经划分好了。
硬链接可以做文件,不能做目录 不能跨分区。 硬链接相当于一张皮,可以创建多个,等于多个皮,但是不能全部删除完。