技术解析

应用程序在服务器上创建文件目录权限 0777,会有风险吗?
0
1975-02-24 15:21:54
idczone
应用程序 App (是 root )在服务器上创建了一个文件目录,权限设 0777, 会有风险吗?
(当然,前提是服务器一般不会配除 root 外的其他账户,也不会把这个文件目录直接开给 web server 的公开路径)
应用程序 app 用 root 启动就已经是最大的安全风险了。只要程序有漏洞。黑客就可以用 root 账号执行操作。目录 777 和 600 其实都没区别

注入之后不就直接拿到 root 权限了 安全的办法还是独立在普通帐号下跑好一点 权限多少没有什么区别

+1,必须跑非 root 权限,否则什么权限都一样。

不必要的权限就是风险。顺便没见过 Linux 上只有一个 root 用户的……(不能控制台登录的用户就不叫用户了吗,气!)

应用程序 App 都能给 root ?日常服务器的维护人员都没直接 root 权限





root 用密钥登陆,没那么危险吧


注入是不需要密钥的。。。。
你以为黑客和你一样也是直接用 ssh 登上你服务器的啊。。。。


运维没有 root 权限,那环境配置怎么搞啊?

防注入的流程有 DBA 检查着,我只负责文件处理的模块,别让文件路径访问权限出纰漏就行,真要是系统权限被攻下,这个责任我还不够资格格抗哪

应用程序 App 在服务器上创建了一个文件目录,权限设 0777, 完全没有风险
有风险的仅仅是 App 用 root 启动而已


正解,我们一直说的是用 root 启动。。。因为如果拿到了 root 权限相当于拿到了一切。

sudo 基本够用了

root 跑对外的服务本身就是最大的风险了啊。。。。。

上面 777 没问题的 程序员吧哈哈哈

不建议给任何东西大于 755 的权限,Socket 这种特殊物体除外

换用户名,配上 selinux role

root 权限仅限急救时使用。

都注入了你的密钥还有用???

能不用 root 用户尽量不要用 root,否则程序有漏洞话很容易被提权,整个服务就沦陷了,不安全

不建议应用给那么高的权限

密钥可以让你获得 root 权限。现在你 App 都已经获得 root 权限了,拿下 App 就可以随便搞了,还要密钥作甚。

意思是不是用 root 直接运行 service nginx start 或者 service php7.0-fpm start 这样的命令不安全?
那么重启后开机启动时这些服务是以什么用户运行的呢?

是的,就是这个问题。基础服务用什么用户启动呢?

nginx 如果需要 512 一下端口需要用 root 启动,但 nginx 可以配置运行用户。

风险太大

私钥登录那是 SSH 的事。
使用私钥登录和禁止密码登陆不是在 /etc/ssh/sshd_config 里面配置的么?

做个假设,你的服务以 HTTP(S)为协议,后端是 PHP
直接用 root 运行 php-fpm 的话,如果有个上传漏洞被用来挂了 shell

我可以想象骇客输入 whoami 后兴奋的表情,毕竟提权都免了

Apache Nginx 等都可以配置运行所使用的用户
用 root 用户通过 systemd/sysV 等启动 web 服务器 != 服务器以 root 用户运行

用包管理正常安装的话 Nginx 主进程 root,子进程是 nginx 所以没啥问题。

这个是启动服务的,具体用什么启动的,可以看 /etc/systemd/system/ /usr/lib/systemd/system/ 里面的配置脚本。

777 权限一般主要负责文件上传和日志写入,有些目录需要给 777 保证上传目录和日志能够正常写入,这些问题都不大

就拿 nginx 来说。它的架构是一个 manager 管很多 worker。你开一个 ubuntu 下的 nginx 看看,是不是只有一个是 root 的,其余都是 www-data。

秘钥登录与否与程序 root 运行的风险无关。你程序是 root 用户在跑 那么程序也就有 root 用户的权限。假设黑客通过你程序的漏洞黑进了 你的机器。他同样有 root 权限。秘钥登录是指通过 ssh 登录服务器。黑客不需要通过 ssh 登录你的服务器

app 执行用户和 777 不能乱开,我宁愿把 owner 设置成实际运行的用户,比如一个 php 的网站,只有储存用户上传文件的目录用的 owner 是 php-fpm 的运行用户。权限 755,其他目录 owner 都是 root,755. 并且在 nginx 或 Apache 里禁止上传目录解析 php 脚本。





感谢释疑,因为我有很多台 VPS 都是直接用 root 这么直接运行的 - - !


我也是这么干的,每个网站一个 owner, 那么若是给这个网站添加 FTP 用户怎么办呢? 我是都给个 SFTP 账号


ftp 就在 ftp 那边做权限控制吧。
在 Linux 里,目录的 x 权限不是执行,是“是否可以 cd 到这个目录”。
控制这些权限很重要,比如我拿了一个低权限用户的 webshell,然后如果你的网站是 777,那我就可以上传脚本,然后如果手头有 EXP 的话,就可以拿到 root 权限,为所欲为。当然这只是一个思路,实际上并不会那么简单,但是安全工作做好了至少可以过滤一大批别有居心的人。


奥,我一直用文件夹 755 和 文件 644。
问的原因是 PHP-fpm 默认运行用户是 www 或者 www-data,FTP 上传的文件用户属组是 ftpuser:ftpgroup,这样比如安装 WordPress 时就提示有权限问题,所以我现在都是这么干的 passwd www-data

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服