2014-10-08 26 views
2

我正在寫一些讀取/ etc/{passwd,group}的程序。在讀取/ etc/passwd時,我的程序應該鎖定/etc/.pwd.lock嗎?

我瞭解到,在編寫上述文件之前,任何程序都應該通過調用lckpwdf()來鎖定/etc/.pwd.lock,以避免寫入衝突。

我想讀操作也需要這個鎖,以便程序不會讀出不一致的數據。

但是我發現讀的/ etc/passwd作爲非root用戶的時候,我不能做的鎖,因爲/etc/.pwd.lock的所有者是root:根,具有模式0600

上午我錯誤?不讀書需要這個鎖嗎?

回答

2

在Linux上,lckpwdf()<shadow.h>中聲明,應在訪問影子密碼數據庫(/etc/shadow)時使用。閱讀/etc/passwd/etc/group時無需調用。

由於它是非標準函數,所以在其他UNIX上不一定是這種情況。

相關問題