温馨提示×

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_USERAPACHE_RUN_GROUP为非特权用户(如apache),确保Apache以低权限运行:
    APACHE_RUN_USER=apache
    APACHE_RUN_GROUP=apache
  • MySQL用户管理
    • 创建用户:使用CREATE USER语句,指定用户名和主机(如localhost);
    • 授权:使用GRANT语句遵循最小权限,例如允许webuserlocalhost访问webdb数据库的SELECTINSERT权限:
      GRANT SELECT, INSERT ON webdb.* TO 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword';
    • 撤销权限:使用REVOKE语句,例如撤销webuserDELETE权限:
      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_logerror_log),记录用户访问和错误信息;
  • 日志审计:定期使用grepawk等工具分析日志,例如查找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等组件,修复安全漏洞;
  • 监控资源:使用tophtop监控系统资源使用情况,避免用户进程占用过多CPU/内存

0