在Ubuntu上配置LNMP(Linux, Nginx, MySQL/MariaDB, PHP)時,權限管理是一個重要的環節,以確保系統的安全性和穩定性。以下是一些基本的權限管理方法:
創建專用用戶:為Nginx、MySQL/MariaDB和PHP-FPM創建專用的系統用戶。
sudo adduser nginx
sudo adduser mysql
sudo adduser www-data # PHP-FPM默認用戶
設置正確的權限:確保這些用戶只能訪問他們需要的文件和目錄。
sudo chown -R nginx:nginx /var/www/html
sudo chown -R mysql:mysql /var/lib/mysql
sudo chown -R www-data:www-data /run/php/php7.x-fpm.sock # 根據PHP版本調整
配置文件權限:確保Nginx配置文件的權限設置正確。
sudo chmod 644 /etc/nginx/nginx.conf
sudo chmod 644 /etc/nginx/sites-available/*
靜態文件權限:確保靜態文件的權限允許Nginx讀取。
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo find /var/www/html -type d -exec chmod 755 {} \;
創建數據庫和用戶:使用mysql
命令行工具或phpMyAdmin創建數據庫和用戶,并分配適當的權限。
CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
限制遠程訪問:如果不需要遠程訪問,確保MySQL/MariaDB只允許本地連接。
UPDATE mysql.user SET Host='localhost' WHERE User='myuser';
FLUSH PRIVILEGES;
配置文件權限:確保PHP-FPM配置文件的權限設置正確。
sudo chmod 644 /etc/php/7.x/fpm/pool.d/www.conf
日志文件權限:確保PHP-FPM日志文件的權限允許PHP-FPM進程寫入。
sudo chown www-data:www-data /var/log/php7.x-fpm.log
SELinux:如果系統啟用了SELinux,確保相關的策略配置正確。
sudo setenforce 0 # 臨時禁用SELinux進行測試
sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx
sudo semodule -i my-nginx.pp
AppArmor:如果系統啟用了AppArmor,確保相關的配置文件正確。
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
定期審計:定期檢查文件和目錄的權限,確保沒有不必要的權限開放。
sudo find / -type d -perm 777 -exec chmod 755 {} \;
sudo find / -type f -perm 666 -exec chmod 644 {} \;
更新系統和軟件:定期更新系統和軟件,以修補安全漏洞。
sudo apt update && sudo apt upgrade
通過以上步驟,可以有效地管理LNMP環境中的權限,確保系統的安全性和穩定性。