小编Xeo*_*oss的帖子

如何为 WWW 文件夹设置 linux 权限?

更新摘要

/var/www 目录归root:root其所有,这意味着没有人可以使用它并且完全没有用。既然我们都想要一个实际工作的 Web 服务器(并且没有人应该以“root”身份登录),那么我们需要解决这个问题。

只有两个实体需要访问。

  1. PHP/Perl/Ruby/Python都需要访问文件夹和文件,因为它们创建了许多文件夹和文件(即/uploads/)。这些脚本语言应该在 nginx 或 apache 下运行(或者甚至是像 FastCGI for PHP 这样的其他东西)。

  2. 开发商

他们如何获得访问权限?我知道有人在某个地方以前做过这件事。然而,有数十亿个网站,您会认为会有更多关于此主题的信息。


我知道 777 是所有者/组/其他的完全读/写/执行权限。因此,这似乎不需要正确,因为它为随机用户提供了完全权限。

需要使用哪些权限,/var/www以便:

  1. 像 git 或 svn 这样的源代码控制
  2. 像“网站”这样的组中的用户(甚至添加到“www-data”
  3. 像 apache 或 lighthttpd 这样的服务器
  4. 和 PHP/Perl/Ruby

所有人都可以在那里读取、创建和运行文件(和目录)吗?

如果我是对的,Ruby 和 PHP 脚本不会直接“执行”-而是传递给解释器。所以不需要对/var/www...中的文件执行权限?因此,似乎正确的许可chmod -R 1660将使

  1. 这四个实体可共享的所有文件
  2. 所有文件都不能被错误地执行
  3. 完全阻止目录中的其他人
  4. 将所有未来文件的权限模式设置为“粘性”

这样对吗?

更新 1:我刚刚意识到文件和目录可能需要不同的权限 - 我在上面谈论文件,所以我不确定目录权限需要是什么。

更新 2:文件夹结构/var/www发生了巨大变化,因为上述四个实体之一总是添加(有时删除)多个级别的文件夹和子文件夹。他们还创建和删除其他 3 个实体可能需要读/写访问权限的文件。因此,权限需要对文件和目录都做上述四件事。由于它们都不需要执行权限(请参阅上面有关 ruby​​/php 的问题),我认为rw-rw-r-- …

linux permissions chmod

72
推荐指数
4
解决办法
14万
查看次数

Postfix 和 Sendmail 一样吗?

我的服务器上有 Postfix 设置,以便我可以使用命令行发送外发邮件:

mail -s "Subject" address@example.com
Run Code Online (Sandbox Code Playgroud)
  1. 这是使用Sendmail还是Postfix
  2. Sendmail ”只是一个软件类别还是一个独特的程序?
  3. 如果某些东西是“ Sendmail-ready ”,这是否意味着它可以与 Postfix 一起使用?

我在网上阅读的所有内容似乎都可以互换使用这两个术语。

email-server postfix sendmail

69
推荐指数
3
解决办法
10万
查看次数

你如何在heredoc中转义字符?

我正在使用 bash 脚本,试图阻止它尝试替换我的 heredoc 中的变量。如何将heredoc设置为A)转义变量名称而不是解析它们或B)返回整个字符串不变?

cat > /etc/nginx/sites-available/default_php <<END
server {
    listen 80 default;
    server_name _;
    root /var/www/$host; <--- $host is a problem child
}
END
Run Code Online (Sandbox Code Playgroud)

照原样,当我完成将它注入文件时,我只剩下这个:

server {
    listen 80 default;
    server_name _;
    root /var/www/;
}
Run Code Online (Sandbox Code Playgroud)

linux bash heredoc

29
推荐指数
2
解决办法
2万
查看次数

用于基本 HTTP(s) 网络服务器的安全标准 iptables 规则集

我一直在尝试组合一个基本的服务器 iptables 脚本,该脚本适用于大多数使用 HTTP(S) 和 SSH(端口 80、443 和 22)运行基本网络服务器的站点。毕竟,大多数VPS只需要这些起始端口规则,以后可以根据需要添加邮件或游戏端口。

到目前为止,我有以下规则集,我想知道是否有人知道更好的脚本或可以添加的任何改进。

*filter

#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS …
Run Code Online (Sandbox Code Playgroud)

security linux firewall iptables best-practices

16
推荐指数
1
解决办法
3万
查看次数

你如何有条件地在 Nginx vhost 中包含文件?

在下面的行中,我可能有一个特定于站点的配置文件,其中包含该站点独有的其他fastcgi_params。如果这个文件存在,我想加载它。

server {
        listen 80 default;
        server_name _;
        root /path/www/$host;

        # Pass PHP scripts to php-fastcgi listening on port 9000
        location ~ \.php {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;


                if (-f /path/www/$host/nginx.conf) {
                        include /path/www/$host/nginx.conf;
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我得到的错误是:

nginx: [emerg] "include" 指令在这里是不允许的......

更新

我认为与其单独检查,不如让include 来检查我。

server {
        listen 80 default;
        server_name _;
        root /path/www/$host;

        # Pass PHP scripts to php-fastcgi listening on port 9000
        location ~ \.php {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000; …
Run Code Online (Sandbox Code Playgroud)

configuration nginx fastcgi

16
推荐指数
4
解决办法
3万
查看次数

Nginx - nodelay 选项在限制请求时有什么作用?

使用 nginx HttpLimitReq模块可以通过 IP 限制请求。但是,我不明白“nodelay”选项的作用。

如果不需要限制突发延迟内的超额请求,则应使用 nodelay

limit_req   zone=one  burst=5  nodelay;
Run Code Online (Sandbox Code Playgroud)

nginx rate-limiting

12
推荐指数
3
解决办法
1万
查看次数

基于主机名的动态nginx域根路径?

我正在尝试使用基本的 master/catch-all vhost 配置来设置我的开发 nginx/PHP 服务器,以便我可以根据需要创建无限的___.framework.loc

server {
        listen 80;
        index index.html index.htm index.php;

        # Test 1
        server_name ~^(.+)\.frameworks\.loc$;
        set $file_path $1;
        root    /var/www/frameworks/$file_path/public;

        include /etc/nginx/php.conf;
}
Run Code Online (Sandbox Code Playgroud)

但是,对于此设置,nginx 会响应 404 错误。我知道 nginx 和 PHP 正在工作并且有权限,因为localhost我使用的配置工作正常。

server {
        listen 80 default;
        server_name localhost;
        root /var/www/localhost;
        index index.html index.htm index.php;

        include /etc/nginx/php.conf;
}
Run Code Online (Sandbox Code Playgroud)

我应该检查什么才能找到问题?这是他们正在加载的 php.conf 的副本。

location / {
        try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {

        try_files $uri =404;

        include fastcgi_params;
        fastcgi_index index.php;

        # …
Run Code Online (Sandbox Code Playgroud)

php nginx virtualhost

12
推荐指数
2
解决办法
2万
查看次数

linux中web服务器根目录应该放在哪里?

我看到 Apache 和 Nginx 都使用 var/www 作为它们的 Web 根目录 - 但该目录未包含在Filesystem Hierarchy Standard 中。我还在目录中看到了一些带有 web 根/home/username/www目录的服务器。那么网络根在哪里呢?或者更确切地说,对于公共 Web 服务器来说它大部分时间应该去哪里?

web-server

10
推荐指数
2
解决办法
5万
查看次数

你如何在 Nginx 中设置特定于服务器的 ENV 值?

我正在启动一个项目,该项目使用环境变量来设置数据库连接和其他一些事情。(他们不想使用配置文件,因为人们粗心大意并覆盖了它们)。

无论如何,我正在使用 nginx,虽然它支持 env - 它似乎并没有很好支持它。您不能在每个服务器块的基础上设置 env 值。换句话说,这行不通:

server {
    listen 80;
    server_name domain;
    env FOO = "bar";
}
Run Code Online (Sandbox Code Playgroud)

你必须这样做:

env FOO = "bar";

http {
    server {
        listen 80;
        server_name domain;
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着我不能拥有特定于 vhost 的值。所以我必须为每个站点创建一个完整的 vhost 配置,并且只激活我目前想要的一个,以便正确设置值。

有没有办法解决这个问题?

nginx web-server environment-variables virtualhost

9
推荐指数
1
解决办法
3万
查看次数

从 Debian 5 中删除 Apache

我在我的 VPS 上安装了 Debian 5,但我发现它已经启动并运行了 apache2。我试过

apt-get remove apache2
Run Code Online (Sandbox Code Playgroud)

但它说 apache2 没有运行。我检查了顶部,是的,它就在那里。然后我把它关掉了。

/etc/init.d/apache2 stop
Run Code Online (Sandbox Code Playgroud)

工作正常并关闭守护程序。但是,我仍然无法删除它。我试过了,aptitude remove但它说它没有安装。

到底是怎么回事?

vps debian apache-2.2

7
推荐指数
1
解决办法
9913
查看次数