關於 PHP, Linux, Open Source 及個人生活記載的網誌。
RSS icon
  • PHP 修改 Linux 系統密碼

    Posted on February 7th, 2007 Sam Tang No comments

    在前幾篇文章介紹過 PHP 透過 Sudo 執行 root 指令,對於單行的指令沒有問題,但如果要執行 passwd 修改系統密碼的話便不行了。

    要解決可以安裝 super 或 expert,而另一個方法是用非互動的方法修改密碼,但如果主機上有其他用戶可以放置他們的網頁,則不建議使用。以下是具體步驟:

    1. 用 root 執行 visudo,加入以下一行:

    apache ALL=NOPASSWD:/usr/bin/passwd [A-z]*, !/usr/bin/passwd root

    以上後面的部份是禁止透過 sudo 修改 root 的密碼,而基於安全理由,最好將其他較重要的用戶也禁止,例如 root 群組的用戶。

    2. 以下是 PHP 的部份,會修改 user 的密碼,而密碼設成 pass:

    PHP:
    1. <?php
    2. shell_exec("/bin/echo 'pass' | /usr/bin/sudo /usr/bin/passwd --stdin user");
    3. ?>


    Leave a reply

    *
    To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
    Click to hear an audio file of the anti-spam word