我正在编写一些读取/ etc / {passwd,group}的程序。
我了解到任何程序都应该在写入上述文件之前通过调用lckpwdf()锁定/etc/.pwd.lock,以避免写入冲突。
我猜阅读操作也需要这个锁,以便程序不会读出不一致的数据。
但我发现在将/ etc / passwd作为非root用户进行读取时我无法执行锁定,因为/etc/.pwd.lock由root拥有:root并且模式为0600。
我错了吗?没有阅读需要这个锁吗?
答案 0 :(得分:2)
在Linux上,lckpwdf()
在<shadow.h>
中声明,并且应在访问影子密码数据库(/etc/shadow
)时使用。阅读/etc/passwd
或/etc/group
时无需调用。
由于它是非标准函数,因此在其他UNIX上不一定如此。