centos lamp多用户管理实践
小樊
47
2025-11-01 19:29:14
CentOS LAMP多用户管理实践指南
一、基础用户与组管理
1. 用户账户管理
创建用户 :使用useradd命令创建用户,常用选项包括-g(指定主组)、-G(指定附加组)、-m(创建家目录)。例如,创建用户webdev并加入webgroup组:
sudo useradd -m -g webgroup -G developers webdev
设置密码 :使用passwd命令为用户设置密码,强制用户首次登录修改密码可添加--expire选项:
sudo passwd --expire webdev
修改用户属性 :使用usermod调整用户信息,如修改主组-g、附加组-G、用户名-l。例如,将webdev的用户名改为webadmin:
sudo usermod -l webadmin webdev
删除用户 :使用userdel彻底删除用户及家目录,-r选项用于清理关联文件:
sudo userdel -r webadmin
2. 用户组管理
创建组 :使用groupadd命令创建组,例如创建webgroup组:
sudo groupadd webgroup
添加/移除用户 :使用gpasswd将用户加入或移出组,-a(添加)、-d(移除)。例如,将webadmin加入webgroup:
sudo gpasswd -a webadmin webgroup
修改组信息 :使用groupmod修改组名(-n)或GID(-g),例如将webgroup更名为webdevs:
sudo groupmod -n webdevs webgroup
二、权限精细化控制
1. 文件与目录权限
基本权限设置 :使用chmod设置文件/目录权限,遵循“最小权限”原则:
文件:普通文件用644(所有者可读写,组和其他人只读),脚本/程序用755(所有者可读写执行,其他人可读执行);
目录:用755(允许所有人遍历,但只有所有者可写入)。例如:
sudo chmod 644 /var/www/html/index.php
sudo chmod 755 /var/www/html/uploads
所有权管理 :使用chown修改文件所有者,chgrp修改所属组。例如,将/var/www/html目录所有者设为apache,组设为webgroup:
sudo chown -R apache:webgroup /var/www/html
特殊权限 :
ACL(访问控制列表):使用setfacl实现更细粒度权限,例如允许用户dev1对/var/www/html/project有读写权限:
sudo setfacl -m u:dev1:rw /var/www/html/project
SUID/SGID:谨慎使用,SUID(4755)允许用户以文件所有者身份执行,SGID(2755)允许组内用户继承目录权限
2. Apache与MySQL权限配置
Apache用户设置 :编辑Apache配置文件(/etc/httpd/conf/httpd.conf),设置APACHE_RUN_USER和APACHE_RUN_GROUP为非特权用户(如apache),确保Apache以低权限运行:
APACHE_RUN_USER=apache
APACHE_RUN_GROUP=apache
MySQL用户管理 :
创建用户:使用CREATE USER语句,指定用户名和主机(如localhost);
授权:使用GRANT语句遵循最小权限,例如允许webuser从localhost访问webdb数据库的SELECT、INSERT权限:
GRANT SELECT, INSERT ON webdb.* TO 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword';
撤销权限:使用REVOKE语句,例如撤销webuser的DELETE权限:
REVOKE DELETE ON webdb.* FROM 'webuser'@'localhost';
刷新权限:执行FLUSH PRIVILEGES;使更改生效
三、安全增强措施
1. SELinux管理
检查状态 :使用sestatus查看SELinux是否启用(Enforcing为启用状态);
临时设置 :使用setenforce 0临时关闭SELinux(重启后恢复),setenforce 1重新启用;
永久设置 :编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELinux=permissive(记录警告但不阻止)或disabled(完全关闭);
调整策略 :针对Apache/Web目录设置SELinux上下文,例如允许Apache访问/var/www/html:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html
2. 日志与审计
日志配置 :确保Apache(/var/log/httpd/)和MySQL(/var/log/mariadb/)开启详细日志(access_log和error_log),记录用户访问和错误信息;
日志审计 :定期使用grep、awk等工具分析日志,例如查找403 Forbidden错误:
sudo grep "403" /var/log/httpd/access_log;
安全工具 :
使用fail2ban防止暴力破解,配置jail.local文件监控Apache登录失败次数;
使用lynis进行系统安全扫描,检测未授权文件、弱密码等问题:
sudo lynis audit system
四、自动化与维护
1. sudo权限配置
编辑sudoers :使用visudo命令安全编辑/etc/sudoers文件,避免语法错误;
配置规则 :
允许用户admin执行所有命令(需谨慎):admin ALL=(ALL) ALL;
限制用户deploy仅能重启Apache服务:deploy ALL=(ALL) /usr/bin/systemctl restart httpd;
允许webgroup组用户无需密码执行/usr/bin/git pull:%webgroup ALL=(ALL) NOPASSWD: /usr/bin/git pull
2. 定期维护
备份数据 :定期备份用户数据(如/var/www/html)、数据库(使用mysqldump),存储到异地或云存储;
更新系统 :使用yum update定期更新CentOS、Apache、MySQL、PHP等组件,修复安全漏洞;
监控资源 :使用top、htop监控系统资源使用情况,避免用户进程占用过多CPU/内存