应用程序在服务器上创建文件目录权限 0777,会有风险吗?

2018-01-24 15:12:06 +08:00
 liudaqi
应用程序 App (是 root )在服务器上创建了一个文件目录,权限设 0777, 会有风险吗?
(当然,前提是服务器一般不会配除 root 外的其他账户,也不会把这个文件目录直接开给 web server 的公开路径)
5638 次点击
所在节点    Linux
36 条回复
lemonda
2018-01-25 05:53:08 +08:00
意思是不是用 root 直接运行 service nginx start 或者 service php7.0-fpm start 这样的命令不安全?
那么重启后开机启动时这些服务是以什么用户运行的呢?
liudaqi
2018-01-25 06:51:14 +08:00
@lemonda 是的,就是这个问题。基础服务用什么用户启动呢?
liuzuo
2018-01-25 07:02:26 +08:00
@lemonda nginx 如果需要 512 一下端口需要用 root 启动,但 nginx 可以配置运行用户。
hugee
2018-01-25 07:50:41 +08:00
风险太大
Hardrain
2018-01-25 08:39:52 +08:00
@liudaqi 私钥登录那是 SSH 的事。
使用私钥登录和禁止密码登陆不是在 /etc/ssh/sshd_config 里面配置的么?
Hardrain
2018-01-25 08:41:49 +08:00
做个假设,你的服务以 HTTP(S)为协议,后端是 PHP
直接用 root 运行 php-fpm 的话,如果有个上传漏洞被用来挂了 shell


我可以想象骇客输入 whoami 后兴奋的表情,毕竟提权都免了
Hardrain
2018-01-25 08:43:10 +08:00
@lemonda Apache Nginx 等都可以配置运行所使用的用户
用 root 用户通过 systemd/sysV 等启动 web 服务器 != 服务器以 root 用户运行
LokiSharp
2018-01-25 08:45:12 +08:00
用包管理正常安装的话 Nginx 主进程 root,子进程是 nginx 所以没啥问题。
LokiSharp
2018-01-25 08:49:06 +08:00
@lemonda #21 这个是启动服务的,具体用什么启动的,可以看 /etc/systemd/system/ /usr/lib/systemd/system/ 里面的配置脚本。
MeteorCat
2018-01-25 08:54:30 +08:00
777 权限一般主要负责文件上传和日志写入,有些目录需要给 777 保证上传目录和日志能够正常写入,这些问题都不大
JamesMackerel
2018-01-25 09:32:43 +08:00
@lemonda 就拿 nginx 来说。它的架构是一个 manager 管很多 worker。你开一个 ubuntu 下的 nginx 看看,是不是只有一个是 root 的,其余都是 www-data。
smileawei
2018-01-25 10:05:54 +08:00
@liudaqi 秘钥登录与否与程序 root 运行的风险无关。你程序是 root 用户在跑 那么程序也就有 root 用户的权限。假设黑客通过你程序的漏洞黑进了 你的机器。他同样有 root 权限。秘钥登录是指通过 ssh 登录服务器。黑客不需要通过 ssh 登录你的服务器
falcon05
2018-01-25 10:06:15 +08:00
app 执行用户和 777 不能乱开,我宁愿把 owner 设置成实际运行的用户,比如一个 php 的网站,只有储存用户上传文件的目录用的 owner 是 php-fpm 的运行用户。权限 755,其他目录 owner 都是 root,755. 并且在 nginx 或 Apache 里禁止上传目录解析 php 脚本。
lemonda
2018-01-27 16:07:09 +08:00
@liuzuo
@Hardrain
@LokiSharp
@JamesMackerel
感谢释疑,因为我有很多台 VPS 都是直接用 root 这么直接运行的 - - !


@falcon05
我也是这么干的,每个网站一个 owner, 那么若是给这个网站添加 FTP 用户怎么办呢? 我是都给个 SFTP 账号
JamesMackerel
2018-01-27 16:17:55 +08:00
@lemonda #34
ftp 就在 ftp 那边做权限控制吧。

在 Linux 里,目录的 x 权限不是执行,是“是否可以 cd 到这个目录”。
控制这些权限很重要,比如我拿了一个低权限用户的 webshell,然后如果你的网站是 777,那我就可以上传脚本,然后如果手头有 EXP 的话,就可以拿到 root 权限,为所欲为。当然这只是一个思路,实际上并不会那么简单,但是安全工作做好了至少可以过滤一大批别有居心的人。
lemonda
2018-01-27 17:54:56 +08:00
@JamesMackerel
奥,我一直用文件夹 755 和 文件 644。
问的原因是 PHP-fpm 默认运行用户是 www 或者 www-data,FTP 上传的文件用户属组是 ftpuser:ftpgroup,这样比如安装 WordPress 时就提示有权限问题,所以我现在都是这么干的 passwd www-data

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/425560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX