曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3416|回复: 0
打印 上一主题 下一主题

gpasswd -- 设定组密码 | newgrp -- 临时获取其他组的组权限

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-12-25 15:37:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
gpasswd 命令用来设定用户组密码。只有 root 或管理员才能运行命令对此设定,并且设定后的组密码在 /etc/group 的组密码域里是加密的,所用的散列加密算法由 /etc/default/passwd 文件中的 GROUP_CRYPT 项指定,如果不设定该项,那么由 CRYPT 这项指定。如果上述两项都没指定,那默认就使用 DES 算法来加密。

gpasswd 的使用很简单,比如下面打算给 tape 这个组加上一个密码:
linux-xh53:~ # gpasswd tape
Changing the password for group tape.
New Password:
Re-enter new password:
$6$
Password changed.
设置完后可以查看 /etc/group 文件一下:
tape:$6$bNBvTFttlkf2$C7F0fLLDmS/qVMgyTTn8tg6tfpYU5V5LRFRJD.DgNhYQcBNT44dkHoZbuhVOkV9cWfUfWMzNznR.cNNhmgYNQ.:101:

如果要清除掉组密码,那么用 gpasswd 的 -r 选项,如:
linux-xh53:~ # gpasswd -r tape
Password removed.

newgrp 命令用来改变有效组 ID,换句话来说就是临时获得其他组的权限(在子 shell 里,类似于你运行了一下 su 命令),如果改组已经加入了组密码,那么就通过 newgrp 来输入组密码从而达到访问文件的目的。

例如我这里有一个 getpid 的程序,它的权限如下:
ls -al getgid
-rwxr-xr-x 1 beyes users 9805 Dec 24 20:59 getgid
它的拥有者是 beyes,所属用户组是 users (gid 值为 100),运行该程序,主要是用来打印出运行程序的用户的真实组ID和有效组ID,以及尝试打开一个和该文件同样权限的 temp.txt 文件(这里,我已经给 temp.txt 去掉了其他组的读权限)。此外,我已经用上面的 gpasswd 给 users 组添加了密码。那么我现在想用一个名为 groad ,其属组为 tape(gid 值为 101) 的用户运行该文件:
./getgid
Process's gid = 101, egid = 101
Open failure, errno is 13:Permission denied
由此可见,并没有权限打开 temp.txt 这个文件,原因是 groad 既不是 temp.txt 的拥有者,也不是 users 组成员,并且 temp.txt 的其他组也没有读权限。

下面,我用 newgrp 命令为 groad 这个用户临时获取 users 的权限:
newgrp users
Password:         #在这里输入组密码
在输入组密码后,再次打开该文件:
./getgid
Process's gid = 100, egid = 100
Open successfully!
已经成功打开了。

关于 getpid 程序的代码可参考:http://www.groad.net/bbs/read.php?tid-5716.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 03:58 , Processed in 0.078822 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表