我的程序在读取/ etc / passwd时应该锁定/etc/.pwd.lock吗?

时间:2014-10-08 23:20:20

标签: linux passwd shadow-database

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

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

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

但我发现在将/ etc / passwd作为非root用户进行读取时我无法执行锁定,因为/etc/.pwd.lock由root拥有:root并且模式为0600。

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

1 个答案:

答案 0 :(得分:2)

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

由于它是非标准函数,因此在其他UNIX上不一定如此。