dgh*_*dgh 9 ubuntu permissions nginx ubuntu-12.04
我已经在本地机器上的 Ubuntu 12.04 上安装了 nginx 1.1.19,并保留了默认值,/etc/nginx/nginx.conf除了更改用户指令。
/etc/nginx/nginx.conf
user nginx www-data;
worker_processes 4;
pid /var/run/nginx.pid;
...
Run Code Online (Sandbox Code Playgroud)
我想在我的用户目录中使用 web 根目录创建一个简单的静态站点(假设我的用户名是“ubuntu”)。这是我的测试站点的配置。
/etc/nginx/sites-available/test-site
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /home;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
Run Code Online (Sandbox Code Playgroud)
现在显然将我的所有文件放在网络根目录中,因此我不会将其放在真正的服务器上,但这说明了我的观点。如果我在 /home/index.html(不在我的 ubuntu 用户文件夹中)创建一个简单的网页,我可以访问该页面http://localhost/
这很好用。现在我想简单地将 Web 根目录放在用户文件夹中。因此,在 /etc/nginx/sites-available/test-site 中,我将 root 指令更改为 `root /home/ubuntu;。我重新创建测试站点的符号链接,将 /home/index.html 移动到 /home/ubuntu/index.html 并停止并启动 nginx 服务器。现在我收到 403 Forbidden 错误。
我的第一个怀疑是这是一个权限问题。但是,当我跑步时,ls -al index.html我看到
-rw-r--r-- 1 nginx www-data 183 Aug 12 13:13 index.html
Run Code Online (Sandbox Code Playgroud)
哪个看起来对我?甚至运行 chmod 777 /home/ubuntu/index.html 以便权限是
-rwxrwxrwx 1 nginx www-data 183 Aug 12 13:13 index.html
Run Code Online (Sandbox Code Playgroud)
没有帮助。/etc/init.d/nginx configtest也不会产生任何错误,我确定符号链接/etc/
所以我已经在这里呆了几个小时,现在我想知道我的用户目录有什么特别之处,以至于我无法在其中提供任何内容?这些天Ubuntu加密主目录?这可能是问题吗?我在 EC2 Ubuntu 12.04 实例上也有这个问题(不知道用户目录是否在那里加密)
dgh*_*dgh 14
因此,Ubuntu 12.04 中用户主目录的默认权限似乎是 700。Nginx 需要对应该提供的文件具有读取权限,并且在从根到提供的文件的路径上的每个父目录中都具有执行权限。
您可以通过运行为您的用户目录授予这些权限
chmod 701 user_home
Run Code Online (Sandbox Code Playgroud)
您也可以使用 755,这是许多系统上主目录的默认权限设置。
只要 nginx 运行的用户/组(如 nginx.conf 中定义)对要提供的所有文件具有 READ 权限并且对所有 Web 根目录执行权限。
我只是将我的 web 根目录中的所有目录设置为由我的用户帐户拥有并具有 755 权限,并且我将所有从 web 根目录提供的文件都设置为具有 664 权限,因为这些是我机器上的默认设置。
Ex. drwxr-x--x becomes 751.
Run Code Online (Sandbox Code Playgroud)
忽略第一个字符(d 表示目录,- 表示文件等)。剩下的 9 个字符形成一个二进制三元组,其中任何非破折号字符都是 1,破折号是 0。
So drwxr-x--x becomes rwxr-x--x
becomes 111 101 001
which is converted to a decimal 751
Run Code Online (Sandbox Code Playgroud)
当我处理权限时,我需要复习一下。
| 归档时间: |
|
| 查看次数: |
39006 次 |
| 最近记录: |