这是一个关于 Linux Web 服务器上文件权限的规范问题。
我有一个运行 Apache2 的 Linux Web 服务器,该服务器托管多个网站。每个网站在 /var/www/ 中都有自己的文件夹。
/var/www/contoso.com/
/var/www/contoso.net/
/var/www/fabrikam.com/
Run Code Online (Sandbox Code Playgroud)
基本目录 /var/www/ 归 root:root 所有。Apache 以 www-data:www-data 运行。Fabrikam 网站由两位开发人员 Alice 和 Bob 维护。两个 Contoso 网站均由一位开发人员 Eve 维护。所有网站都允许用户上传图片。如果网站遭到入侵,其影响应尽可能地有限。
我想知道设置权限的最佳方法,以便 Apache 可以提供内容,网站不受攻击,并且开发人员仍然可以进行更改。其中一个网站的结构如下:
/var/www/fabrikam.com
/cache
/modules
/styles
/uploads
/index.php
Run Code Online (Sandbox Code Playgroud)
应该如何对这些目录和文件设置权限?我在某处读到你永远不应该在网站上使用 777 权限,但我不明白这会导致什么问题。在繁忙时期,网站会自动缓存一些页面并将结果存储在缓存文件夹中。网站访问者提交的所有内容都保存在上传文件夹中。
假设我的 umask 是 0077。
我有一个目录,foo我想对其应用特殊权限。我在其中创建的所有文件foo都应该是全局可读的,并且所有目录都应该是全局可读和可执行的。
目前,如果我创建一个文件,它将是 0600,目录将是 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)
我希望文件是 0644,目录是 0755,不管我的 umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在设置一个 Ubuntu 服务器,它将有 3 或 4 个 VirtualHosts,我希望用户能够在其中工作(添加新文件、编辑旧文件等)。我目前计划将网站存储在其中,/var/www但不反对移动它。
我知道如何添加新用户,我知道如何添加新组。我不确定处理只能编辑某些网站的用户的最佳方式。我阅读了这个问题中的答案,所以我想我可以设置一个组并将用户添加到该组中,但是他们都具有本质上相同的权限。我是否只需要为每个用户分配特定的权限?或者有更好的处理方法吗?
补充:我还应该注意,我将让每个用户通过 SSH/sFTP 登录。用户永远不需要在服务器上做任何其他事情。
我正在尝试将所有用户的默认 umask 设置为 002,包括我的 CentOS 机器上的 root。
根据这个和其他答案,这可以通过编辑/etc/profile. 然而,该文件顶部的评论说:
除非您知道自己在做什么,否则更改此文件不是一个好主意。最好在 /etc/profile.d/ 中创建 custom.sh shell 脚本以对您的环境进行自定义更改,因为这将防止在将来的更新中需要合并。
所以我继续创建以下文件:
/etc/profile.d/myapp.sh
与单行:
umask 002
Run Code Online (Sandbox Code Playgroud)
现在,当我以 root 身份创建一个文件时,该文件天生就有 664 权限,正如我所希望的那样。但是由我的 Apache mod_wsgi 应用程序创建的文件,或使用 sudo 创建的文件,仍然默认为 644 权限......
$ touch newfile(作为根):
结果 = 664(作品)
$ sudo touch newfile:
结果 = 644(不起作用)
Apache mod_wsgi 应用程序创建的文件:
结果 = 644(不起作用)
Python 的 RotatingFileHandler 创建的文件:
结果 = 644(不起作用)
为什么会发生这种情况,以及如何确保系统范围内的 664 文件权限,无论创建文件的内容是什么?
在托管一个网站的专用服务器上,运行没有控制面板的 Linux,我试图授予多个用户编辑公共 HTML 文件夹 (/var/www/html/) 的权限。
我想确保以最佳方式执行此操作,我想如果我通过 CHMOD 宽松地设置权限,它将允许任何可以通过 FTP 访问该文件夹的人更改它。解决方案是设置wheel组,将目标用户添加到wheel组,然后为wheel组设置权限吗?
目前,只有一名用户可以编辑公共 HTML。
在 Apache 网络服务器中,我有用户www-data,并且其中的所有文件/var/www都归www-data. 不是为了安全吗?有时我需要通过 FTP 将文件上传到/var/www/*,但是对于我自己的用户,我没有写入权限。
假设我使用 WordPress,它推荐644文件和755文件夹的权限。安全地执行此操作的最佳方法是什么?我仍然需要能够通过 FTP 上传文件。
伙计们,我有一个 linux 专用服务器。
有多个用户管理服务器上的特定目录。
但是如果用户上传了一些东西,例如一个插件/库。当它被执行时,它会创建该插件/lubrary 所需的子目录。用户没有该目录的权限。
如何自动为所有目录设置 775 权限?
permissions ×5
linux ×4
umask ×2
apache-2.2 ×1
apache-2.4 ×1
centos ×1
fedora ×1
ftp ×1
security ×1
ubuntu ×1
ubuntu-16.04 ×1
web-server ×1