linux 的普通用户为什么能修改/etc/passwd文件

来源:互联网 发布:网络咨询医生聊天技巧 编辑:程序博客网 时间:2024/05/02 02:24

Unix 的口令文件 /etc/passwd 记录着所有用户和对应的登录密码等信息。/etc/passwd文件的所有者是root而且只有root用户有权限对该文件进行写操作。但是Unix系统其实是允许所有的用户修改自己的登录口令的(即修改/etc/passwd或/etc/shadow 文件)其实现原理如下。

首先要说明的是,与每个进程相关联的ID有6个或更多,如图1所示

其中进程的有效用户ID以及附加组ID决定了问们的文件访问权限。一般的情况下,有效用户ID等于实际用户ID,有效组ID等于实际组ID

对于每个文件来说,文件的详细属性保存在 struct stat  结构中  


其中可以在文件模式字(st_mode)中设置一个特殊标志,该标志的含义是“当执行此文件是,将进程的有效用户ID设置为文件所有者的用户ID(st_uid)” ,与此类似的,st_mode中还可以设置另一位,使得将执行此文件的进程的有效组ID设置成文件的组所有者ID(st_gid)。  在文件模式字中这两位被称为设置用户ID和设置组ID

 

       若文件的所有者是root,而且设置了该文件的设置用户ID位,然后当该文件由另一个进程执行时,该进程有了root 的权限。 如/bin/passwd   ,该程序是一个设置用户ID程序,普通用户使用passwd 命令更改登录口令时,shell会调用/bin/passwd  ,此时shell具有root权限,所以可以修改  /etc/passwd 文件来更改用户登录口令


原创粉丝点击