运维 - 一台 Web 用途 Python 的Linux 服务器的目录结构、用户分组应该是怎样的?
高洛峰
高洛峰 2017-04-17 11:47:48
[Linux讨论组]

R.T.
一台运行编译安装配置 CentOS 系统、用于处理 Web 请求的服务器应该怎样处理一下关系:

  • 目录结构
  • 多个磁盘的挂载点
  • 多个用户(系统管理员用户、ftp 用户、代码管理用户、普通用户)之间的用户组、权限关系
  • 各个主要目录(如 wwwroot 等)的权限设置
  • SELinux 的文件权限
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
PHP中文网

分享一下我的组织方法吧,感觉应用场景和题主的差不多。

目录结构和多个磁盘挂载点

在根目录建一个 /data,将某个单独的磁盘挂载在这里。

这个目录里面包含诸多子目录。

/data
  |-- app/   # 网站程序
  |-- log/   # 各种日志
  |-- ftp/   # ftp 的根
  |-- db/  # 数据库的数据文件
  |-- op/    # op 专用的目录,放一些运维相关的脚本文档什么的
  |-- ...    # 更多的分类,根据需求添加

如果有多块磁盘也不要建立多个根,而是用软链将 /data 下某个目录链接到新的磁盘里。比如上面的 ftp/ 可以是一个软链指向其他磁盘,这样就不占用 /data 的空间了~至于其他磁盘挂在哪,这就无所谓了,你可以就放在 /mnt 里面,好找就行。

系统程序我会把它正常的装在 /usr/local/* 里面,配置放在系统常见的 /etc/ 里面,一些运行时的临时文件放在 /var/run/* 里面,但是程序 log 一定要管理起来,我会放在 /data/log/* 里。

比如 mysql,binary 放在 /usr/local/bin/mysql*,配置在 /etc/mysql/*,数据在 /data/db/mysql/3306/*,日志放在 /data/log/mysql/3306/mysql_err.log。其中 binlog 属于数据的一部分,所以放在 /data/db 里。

多用户管理

我一般为了安全会禁止系统默认账号登录,CentOSroot,同时禁用密码登录,全部只能用 key 登录,启用 UsePAM yes。具体你可以看看 /etc/ssh/sshd_config,里面有很详细的注释,不清楚的话可以上网查找。

可登录的用户越少越好,我一般就只有两个,一个普通用户,一个可以 sudo 的超级用户,这两个放在不同的 group 里面。用 PAM 策略只允许这两个 group 的用户登录,/etc/sudoers 里也是对 group 授权,这样以后万一临时要添加个帐号也方便,只需要放到对应的组里面就好。

启用应用一般就用 www-data,这是一个不允许登录的用户,shell 设置成了 /sbin/nologin

像 mysql 喜欢用 mysql 这个用户,安装的时候就会自动创建,于是也就随它去吧。

ftp 比较特别,一般用户名就叫 ftp,home 就设在 ftp 的根,不放在 /home。如果需要有多个 ftp 帐号,可以考虑用 proftpd 的虚拟帐号,免得创建很多个可以登录的帐号有安全问题。不过我自己并没有实际遇到过这种需求,所以并不清楚虚拟账号会有其他什么问题。

目录权限

目录权限我觉得不用太纠结,毕竟不是在做一个很多人用 VPS,所以只要保证 owner/group 正确,并且尽量给正常的权限就好。

比如放 web 代码的目录的 owner 是 www-data,组就是它的组,目录权限 0755。里面的目录根据情况授权,一般就是 0644,需要可执行的给改成 07540755 都可以。一些需要对普通用户保密的内容(密码配置啊什么的)设成 0600 就好了。

/data/op 这个目录特别点,因为运维脚本一般都很敏感,我倾向于设置成 owner 为 root 并且权限为 0700。不过记得不要把 /data/op 里面的目录也设置成这样的权限,没必要而且难以管理,正常即可。

SELinux

禁用掉,很烦人,不想用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号