首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

使用 PHP 腳本修改 Linux/Unix 系統用戶密碼完整教程

     編輯:PHP 相關知識

前置需求

  • 可修改密碼的 Shell 腳本(基於 expect)
  • Sudo 權限(允許 Web 使用者以 root 身份執行腳本)
  • Apache 或 Lighttpd Web 伺服器
  • PHP 環境

步驟 1:建立修改密碼 Shell 腳本

腳本內容(儲存為 chpasswd,賦予執行權限):

#!/bin/sh
# exec expect -f "$0" ${1+"$@"}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof

將腳本複製到 Web 目錄(如 /var/www/ 或 /home/lighttpd/),確保 Web 使用者可讀執行。

步驟 2:配置 Sudo 權限

編輯 /etc/sudoers(使用 visudo),允許 Web 使用者免密執行腳本:

# Apache (www-data)
www-data ALL=NOPASSWD: /var/www/chpasswd

# Lighttpd (lighttpd)
lighttpd ALL=NOPASSWD: /home/lighttpd/chpasswd

步驟 3:編寫 PHP 介面腳本

建立 changepassword.php,設定正確的腳本路徑:

<?php
$shellscript = "sudo /var/www/chpasswd"; // 根據實際路徑修改
// 此處省略表單處理與驗證邏輯,請參考原文下載完整源碼
?>

步驟 4:測試與安全加固

  • 透過 HTTPS 訪問介面,輸入用戶名與新密碼。
  • 務必使用 HTTPS,避免明文傳輸密碼。
  • 將腳本置於受密碼保護的目錄(如 Basic Auth)。
  • 嚴格驗證、過濾用戶輸入,防止命令注入。
警告: 生產環境中請採用更完善的認證與授權機制,本文僅示範基本原理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved