2012-02-07 41 views
2

我已經知道我可以讀取密碼結構(getpwnam等),但是如何更改特定的密碼。我是否必須鎖定master.passwd並直接修改它,或者更好地從master.passwd複製副本並修改此文件並在正確修改後移動文件?UNIX(不是Linux)密碼更改爲C

最後,我不想製作一個系統(usermod ...),因爲它調用了shell並且應該是最後一個解決方案!

在此先感謝

+0

感謝提示!我的解決方案現在非常接近OpenBSD的local_passwd.c中的解決方案,它使用函數pw_lock(),pw_init()和pw_mkdb()。如果您使用舊密碼或spwd.db,這些功能還可以進行一些修改。 – user1194264 2012-02-08 12:47:50

回答

2

在C爲類似Unix的Solaris或AIX,您可以:

你會看到here a complete sample program使用putpwent &的getpwent用C來改變pasword用於UNIX。 AIX文檔seems to confirm它也應該在其操作系統上工作。

+0

如果密碼存儲在'passwd'文件中而不是影子或等效文件,爲什麼還要設置密碼?它所做的只是讓它能夠以3小時的時間登錄成爲任何你想要的人...... ;-) – 2012-02-07 16:16:00