linux下普通用户更改密码原理(S权限)
首先,我们来看 /etc/passwd 和 /etc/shadow 文件的权限:
可以看到passwd文件,所有者有读写权限,其他用户只能读
而shadow文件什么权限都没有开通
那么普通用户整么修改自己的密码呢?
passwd文件参考:http://blog.csdn.net/lyhdream/article/details/9046347
shadow文件参考 :http://blog.csdn.net/lyhdream/article/details/9046335
下面我们来看看passwd 命令的详细信息:
我们看到在passwd命令可执行位那是个s,那么s是什么权限呢?
s权限(也可以叫做SetUID):当一个可执行(只有可执行程序设置SetUID才有意义)程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。(在linux里,默认的命令的所有者都是root用户)。
给命令设置SetUID权限的方法:
一、 chmod u+s
二、chmod 4755 (Linux中缺省命令的权限都是755,而SetUID标准的权限数字位是4,查看缺省权限的数字位命令:umask)
去掉SetUID权限:
一、chmod u-s
二、chmod 755
SetGID=2
当一个可执行程序具有SetGID时候,用户执行程序的时候,将会以所属组的方式执行。
chmod g+s
chmod 2755
chmod 6755 (同时设置SetUID和SetGID )
linux下还有一个特殊权限:粘着位: