管理员用户和普通用户都可以使用passwd命令来给用户设置密码
用户密码保存在/etc/shadow
suid 4
sgid 2
sticky bit 1
suid(只要是针对可执行文件进行设置。)
{当没有操作要求时,不可以擅自对shell,python脚本加上suid权限,会给系统造成极大的安全漏洞。}
suid权限会显示在九个权限位中属主权限位的最后一位。
suid权限的作用是当普通用户在使用这个命令期间会临时获取到这个文件的属主用户对这个文件的操作权限。(命令使用期间,,比如使用passwd命令去修改密码,但是修改密码的进程还没有结束。)
如上图所示,/etc/shadow文件,,任何用户都对该文件没有操作权限。
但是root用户和普通用户使用passwd命令修改用户密码时,却能成功修改文件中的内容,这是为什么呢?
当我们使用which命令去调查passwd命令时,就会发现passwd命令只不过是/usr/bin/passwd
当我们使用ls -l命令去检查看/usr/bin/passwd文件的详细信息时,就会发现在九个权限位的属主权限位的末尾出现的s字母,代表这个文件的属主用户对这个文件拥有suid权限。
当属主权限位的最后一位是s时,就表示原来这里的是x权限只不过被suid权限覆盖之后显示的是s权限。
如果当属主权限位的最后一位是S时,就代表原来九位权限数中属主权限的最后一位没有任何权限,
如上图所示,当使用chmod u-s /usr/bin/passwd 命令去除/urs/bin/passwd属主的suid权限时,再次切换用户到user01使用passwd 命令去修改自身用户的密码时,会发现修改密码不成功。
这时在使用ls -l命令去调查/etc/shadow的详细信息时,发现九位权限数都是---------
sgid{针对目录所设置的权限,只对后面新建的文件起作用。}
针对目录设置文件,当对目录设置sgid权限时,在该目录创建的文件会自动继承目录的属组。
如上图所示,sgid权限加到目录九位权限数中属组权限的最后一位,
在之后在该目录下创建的文件的属组都会继承目录的属组。
而在此之前创建的文件的属组却不受任何影响。
sticky bit{防止普通用户相互该目录下的删除文件}
只要体现在九位权限位中其他用户权限位的最后一位上。出现字母t
针对目录设置。
如上图所示,user B用户无法正常登录系统,经过使用命令grep "userB" /etc/passwd
可以看到用户的详细信息,发现用户userB的shell程序是/sbin/nologin,,,就代表user B用户是普通用户中的系统用户无法正常登录系统,
可以使用命令usermod -s /bin/bash userB
来修改用户user B的shell程序,经过使用grep "userB" /etc/passwd 之后,发现用户userB的shell程序被修改为了/bin/bash 此时就可以正常登录系统。
一旦对目录拥有 w 权限,就可以在目录下执行 touch、rm、cp、mv 等命令。 执行权限(x) 目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。 对目录来说,如果只赋予 r 权限,则此目录是无法使用的。 很简单,只有 r 权限的目录,用户只能查看目录结构,根本无法进入目录(需要用 x 权限),更不用说使用了。 因此,对于目录来说,常用来设定目录的权限其实只有 0(---)、5(r-x)、7(rwx)这 3 种。
也就是说,对于目录来说w权限要谨慎赋予,
如上图所示,使用命令chomd o+t /opt/bj/
为/opt/bj/ 增加权限sticky bit , 这就避免了普通用户互相删除这个目录下文件的情况。
如上图所示,当使用命令rm -rf /opt/bj/1 时,会提示没有权限删除文件。
只有三个用户可以删除拥有sticky bit权限目录下的文件,分别是root用户,文件的属主用户,以及该目录的属主用户。
如上图所示,当我们使用chmod命令去设置文件权限时,可以出现4位数字,其中最前面的数字代表的就是特殊权限,随后代表的是属主权限,然后代表的是属组权限,最后代表的是其他用户的权限。