Linux文件和目录特殊权限位介绍及实践
在Linux中不管是超级用户root还是普通用户都可以使用命令“passwd”命令修改自己的密码,但是了解Linux的人都知道Linux密码是存放在/etc/passwd /etc/shadow 里面的
用ls -l /etc/passwd /etc/shadow 查看一下权限
[root@localhost ~]# ls -l /etc/passwd /etc/shadow -rw-r--r--. 1 root root 1497 3月 16 21:15 /etc/passwd ----------. 1 root root 984 3月 16 21:15 /etc/shadow
里面普通用户并没有写入权限怎么能修改密码呢
重点在于passwd这个命令里面 查看一下passwd命令的权限
[root@localhost ~]# which passwd /usr/bin/passwd [root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
里面有一个 s 说明这个命令有setuid权限
如果我们root执行
[root@localhost ~]# chmod 644 /usr/bin/passwd
然后切换到 su - admin 用户修改密码
[admin@localhost ~]$ passwd -bash: /usr/bin/passwd: 权限不够
再把setuid权限给分回来 属主 4
[root@localhost ~]# chmod 4755 /usr/bin/passwd
[admin@localhost ~]$ passwd 更改用户 admin 的密码 。 为 admin 更改 STRESS 密码。 (当前)UNIX 密码:
现在可以更改密码了
给组账户添加权限 2
[root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd [root@localhost ~]# chmod 2755 /usr/bin/passwd [root@localhost ~]# ls -l /usr/bin/passwd -rwxr-sr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
把权限去掉就是 0
[root@localhost ~]# chmod 0755 /usr/bin/passwd [root@localhost ~]# ls -l /usr/bin/passwd -rwxr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
本文出自 “棒棒不是糖” 博客,转载请与作者联系!
Linux文件和目录特殊权限位介绍及实践(setuid setgid)
原文地址:http://ctozhanghe.blog.51cto.com/9880217/1622291