标签: permissions

我的网站文件/文件夹在 Linux 网络服务器上应该有什么权限?

这是一个关于 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 权限,但我不明白这会导致什么问题。在繁忙时期,网站会自动缓存一些页面并将结果存储在缓存文件夹中。网站访问者提交的所有内容都保存在上传文件夹中。

security linux permissions web-server apache-2.2

344
推荐指数
3
解决办法
49万
查看次数

为什么“chmod -R 777 /”具有破坏性?

这是一个关于文件权限的规范问题,以及为什么777 是“破坏性的”。

我不是在问如何解决这个问题,因为服务器故障(重新安装操作系统)上已经有大量的参考资料。为什么它会做任何破坏性的事情?

如果你曾经运行过这个命令,你几乎会立即破坏你的操作系统。我不清楚为什么取消限制会对现有流程产生任何影响。例如,如果我没有对某些内容的读取访问权限,并且在终端中快速输入错误后,我现在突然可以正常访问...为什么这会导致 Linux 崩溃?

linux permissions chmod

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

如何在一台机器上与多个用户共享 Git 存储库?

我在登台服务器上有一个 Git 存储库,多个开发人员需要能够拉取到该存储库。git-init似乎有一个与我正在寻找的标志非常接近的标志:--shared,除了我也希望多个人拉到该存储库。的git-clone--shared标志做完全不同的事情。

更改现有存储库权限的最简单方法是什么?

permissions users git share

231
推荐指数
7
解决办法
28万
查看次数

使用 S3 的 Amazon Cloudfront。拒绝访问

我们正在尝试通过 Cloudfront 分发 S3 存储桶,但由于某种原因,唯一的响应是一个 AccessDenied XML 文档,如下所示:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>89F25EB47DDA64D5</RequestId>
    <HostId>Z2xAduhEswbdBqTB/cgCggm/jVG24dPZjy1GScs9ak0w95rF4I0SnDnJrUKHHQC</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

这是我们正在使用的设置:

分发设置 原点设置

这是存储桶的策略

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity *********"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::x***-logos/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

permissions amazon-s3 amazon-cloudfront amazon-web-services

126
推荐指数
4
解决办法
11万
查看次数

对 postgresql 中的所有表进行 GRANT SELECT

是否有一个班轮,授予SELECT权限新用户的PostgreSQL?

将实现以下伪代码的东西:

GRANT SELECT ON TABLE * TO my_new_user;
Run Code Online (Sandbox Code Playgroud)

postgresql permissions sql user-management

122
推荐指数
5
解决办法
27万
查看次数

Apache 的“要求所有授予”真的做什么?

我刚刚将我的 Apache 服务器更新为在 Ubuntu 13.04 下运行的 Apache/2.4.6。我曾经有一个 vhost 文件,其中包含以下内容:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,我得到了一个“禁止。你无权访问 /”

在做了一点谷歌搜索后,我发现要让我的网站再次工作,我需要添加以下行“要求全部授予”,以便我的虚拟主机看起来像这样:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

我想知道这是否“安全”并且不会带来任何安全问题。我在 Apache 的页面上读到,这“模仿了以前由“全部允许”和“全部拒绝”指令提供的功能。此提供程序可以采用“授予”或“拒绝”的两个参数之一。以下示例将授予或拒绝访问所有请求。”

但它没有说明这是否是某种安全问题,或者为什么我们现在必须这样做,而过去您不必这样做。

permissions access-control-list apache-2.2 apache-2.4

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

为什么 sudo 命令需要很长时间才能执行?

在过去的几个月里,我一直在使用 Linux(Fedora 10,然后是 11)(并且非常享受它——就像重新发现计算机一样,有很多东西要学习)。

我已将我的用户添加到/etc/sudoers文件的最后一行,如下所示,以便在执行sudo命令时不会要求我输入密码:

MyUserName ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)

现在,每次我使用 执行命令时sudo,它都会在实际执行任务之前暂停一段明显的时间(约 10 秒)。为什么会这样,我该如何解决这个问题?我在 Fedora 11 x86 64 上运行 Sudo 1.7.1 版。

linux permissions sudo

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

如何在 MySQL 中显示用户的权限?

我知道我可以通过以下简单的方式设置用户的权限:

grant all on [database name].[table name] to [user name]@[host name];
Run Code Online (Sandbox Code Playgroud)

但是我怎么能看到现有的特权呢?

我需要查看与授权中使用的数据类似的数据。换句话说,我想知道给定的用户可以从给定的主机访问给定数据库的给定表。

我怎么才能得到它?

mysql permissions users

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

Postgresql:GRANT ALL PRIVILEGES ON DATABASE 有什么作用?

我试图将给定数据库的所有表的所有权限授予新的 postgres 用户(不是所有者)。似乎GRANT ALL PRIVILEGES ON DATABASE my_db TO new_user;没有这样做。成功运行上述命令后(作为 postgres 用户),我以 new_user 的身份得到以下信息:

$ psql -d my_db
my_db => SELECT * FROM a_table_in_my_db;
ERROR:  permission denied for relation a_table_in_my_db
Run Code Online (Sandbox Code Playgroud)

两个问题:

1) 如果没有授予 my_db 上所有表的所有权限,那么上面的命令会做什么?

2)将所有表的所有权限授予用户的正确方法是什么?(包括将来创建的所有表)

postgresql permissions sql

88
推荐指数
3
解决办法
21万
查看次数

总是 root 有什么问题?

我有一种感觉,这是一个愚蠢的问题,但这是我一直想知道的问题。

我有一个 VPS,这是我的第一个大型 Linux 企业。我是唯一可以访问它的人。我的问题是,仅以 root 身份登录而不是创建帐户并授予他们 sudo 访问权限有什么问题?如果 sudoer 可以做 root 可以做的一切,那么有什么区别?如果黑客可以破解我的标准非 root 帐户的密码,那么他也可以执行 sudo 命令,那么破解我的 root 帐户的黑客有什么关系呢?

linux permissions ssh

85
推荐指数
5
解决办法
8896
查看次数