Ubuntu LAMP(Linux+Apache+MySQL+PHP)環境的多用戶管理需覆蓋操作系統用戶、數據庫用戶、Web應用用戶三個核心層面,同時結合權限控制、安全配置及審計機制,確保系統安全與穩定。
操作系統用戶是LAMP環境的基礎,需遵循“最小權限原則”分配權限。
adduser
命令創建系統用戶(交互式設置密碼及個人信息),或useradd
命令(非交互式,需手動指定參數):sudo adduser username # 交互式創建,設置密碼及用戶信息
sudo useradd -m -s /bin/bash username # 非交互式創建(-m創建家目錄,-s指定shell)
passwd
命令為用戶設置強密碼(包含大小寫字母、數字及特殊字符):sudo passwd username
usermod
調整用戶所屬組、家目錄等屬性(如將用戶加入www-data
組以訪問Web目錄):sudo usermod -aG www-data username # 將用戶添加到www-data組(-aG避免移除原有組)
sudo usermod -d /new/home username # 修改用戶家目錄
deluser
命令徹底刪除用戶(--remove-home
選項清理家目錄):sudo deluser --remove-home username
合理的權限設置是防止未授權訪問的關鍵,需區分文件與目錄的權限類型:
644
(所有者可讀寫,組及其他用戶可讀),敏感文件(如配置文件)可限制為600
:sudo chmod 644 /var/www/html/*.php # 設置PHP文件的通用權限
sudo chmod 600 /etc/apache2/sites-available/000-default.conf # 敏感配置文件限制為所有者可訪問
755
(所有者可讀寫執行,組及其他用戶可讀執行),Web目錄(如/var/www/html
)可放寬至775
(允許組內用戶寫入):sudo chmod 755 /var/www/html # Web目錄通用權限
sudo chmod 775 /var/www/html/uploads # 允許組內用戶上傳文件的目錄
chown
命令將文件/目錄所有者設置為對應用戶及組(如將Web目錄所有者設為www-data
):sudo chown -R username:www-data /var/www/html/project1 # 遞歸修改項目目錄的所有者及組
組管理可實現多用戶共享權限,避免逐個分配的繁瑣:
groupadd
命令創建新組(如webdev
組用于Web開發人員):sudo groupadd webdev
gpasswd
或usermod
將用戶添加到組(如將user1
、user2
加入webdev
組):sudo gpasswd -a user1 webdev # 將user1添加到webdev組
sudo usermod -aG webdev user2 # 將user2添加到webdev組
chmod
的g
選項賦予組讀寫權限(如允許webdev
組修改項目文件):sudo chmod -R g+rw /var/www/html/project1 # 賦予webdev組成員讀寫權限
Apache需以非特權用戶運行,降低安全風險:
/etc/apache2/envvars
文件,設置APACHE_RUN_USER
和APACHE_RUN_GROUP
為www-data
(Ubuntu默認):sudo nano /etc/apache2/envvars
# 修改以下兩行
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
sudo systemctl restart apache2
Require
指令控制客戶端訪問(如僅允許本地IP訪問管理后臺):<Directory /var/www/html/admin>
Require ip 192.168.1.100 # 僅允許指定IP訪問
</Directory>
數據庫用戶權限需嚴格遵循“最小權限原則”,避免過度授權:
mysql -u root -p
db_user
)并設置密碼:CREATE USER 'db_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
SELECT
、INSERT
),避免使用ALL PRIVILEGES
:GRANT SELECT, INSERT ON project1_db.* TO 'db_user'@'localhost';
FLUSH PRIVILEGES; # 刷新權限使變更生效
DROP USER 'db_user'@'localhost';
PHP配置需限制危險功能,防止惡意代碼執行:
/etc/php/8.1/apache2/php.ini
(根據PHP版本調整路徑),設置上傳文件大小限制:upload_max_filesize = 10M # 單個文件最大10MB
post_max_size = 10M # POST數據最大10MB
exec
、system
等可執行系統命令的函數:disable_functions = exec,passthru,shell_exec,system
display_errors = Off # 生產環境關閉錯誤顯示
log_errors = On # 開啟錯誤日志
error_log = /var/log/php_errors.log # 指定錯誤日志路徑
sudo aa-status # 檢查AppArmor狀態
sudo nano /etc/apparmor.d/usr.sbin.apache2 # 編輯Apache的AppArmor配置
/var/log/apache2/access.log
、/var/log/apache2/error.log
)和MySQL(/var/log/mysql/error.log
)日志,發現異常訪問(如大量404請求、未授權登錄嘗試)。sudo apt install fail2ban # 安裝fail2ban
sudo systemctl enable fail2ban # 開機自啟
sudo nano /etc/fail2ban/jail.local # 自定義防護規則(如針對Apache的防護)
lynis
工具掃描系統漏洞,生成安全報告:sudo apt install lynis # 安裝lynis
sudo lynis audit system # 執行系統審計
根據應用需求創建應用層用戶(如WordPress、Drupal),并遵循以下原則:
sudo apt install certbot python3-certbot-apache # 安裝Certbot
sudo certbot --apache # 自動獲取并配置SSL證書
通過以上方案,可實現Ubuntu LAMP環境下多用戶的精細化權限管理,兼顧系統安全性與易用性。