2

我正在编写一些读取 /etc/{passwd,group} 的程序。

我了解到任何程序都应该在编写上述文件之前通过调用 lckpwdf() 来锁定 /etc/.pwd.lock,以避免写入冲突。

我猜读操作也需要这个锁,这样程序就不会读出不一致的数据。

但是我发现当以非 root 身份读取 /etc/passwd 时我无法执行锁定,因为 /etc/.pwd.lock 归 root:root 所有,并且模式为 0600。

我错了吗?阅读不需要这个锁吗?

4

1 回答 1

2

在 Linux 上,在访问影子密码数据库 ( )时lckpwdf()声明<shadow.h>并使用。/etc/shadow读取时不需要调用/etc/passwd/etc/group

由于它是一个非标准函数,因此在其他 UNIX 上不一定是这种情况。

于 2014-10-08T23:25:45.193 回答