标签: permissions

如何为 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万
查看次数

更改 MySQL 用户的主机权限

我对用户/数据库有以下授权

mysql> SHOW GRANTS FOR 'username'@'localhost';
+---------------------------------------------------------------------------+
| Grants for username@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'xxx' |
| GRANT ALL PRIVILEGES ON `userdb`.* TO 'username'@'localhost'              |
+---------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

要启用对数据库的外部访问,我需要将 localhost 更改为%. 一种方法是REVOKE所有权限并重新设置。问题是,有一个我不知道的密码集,所以如果我撤销该权限,我就无法将其设置回来。

有没有办法在不撤销权限本身的情况下将主机名更改localhost%(并再次返回)?

mysql permissions database-administration

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

如何将服务的启动/停止/重启权限授予非域成员服务器上的任意用户或组?

我们在我们的服务器上运行了一套 Windows 服务,它们彼此独立地执行一系列自动化任务,除了一个服务负责其他服务。

如果其中一项服务未能响应或挂起,该服务将尝试重新启动该服务,如果在尝试期间抛出异常,则改为向支持团队发送电子邮件,以便他们可以自行重新启动该服务。

做了一些研究后,我遇到了一些“解决方案”,从KB907460 中提到的解决方法到提供服务运行管理员权限的帐户。

我对这两种方法都不满意 - 我不明白 Microsoft 知识库文章中概述的第一种方法的后果,但我绝对不想授予管理员访问服务运行的帐户的权限.

我快速浏览了本地安全策略,除了定义帐户是否可以作为服务登录的策略之外,我看不到任何其他看起来像是指服务的内容。

我们在 Server 2003 和 Server 2008 上运行它,所以任何想法或指示都会被慷慨地接收!


澄清:我不想授予给定用户或组启动/停止/重新启动所有服务的能力 - 我希望能够仅向给定用户或组授予对特定服务执行此操作的权限。


进一步说明:我需要授予这些权限的服务器不属于一个域——它们是两个面向 Internet 的服务器,它们接收文件、处理它们并将它们发送给第三方,以及为几个网站提供服务,所以Active Directory 组策略是不可能的。抱歉,我没有说得更清楚。

security windows permissions windows-service group-policy

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

Apache SSL 目录、证书和密钥的权限应该是什么?

我的文件夹中有我的cert.pemcert.key文件/etc/apache2/ssl

什么是最安全的权限和所有权:

  1. /etc/apache2/ssl 目录

  2. /etc/apache2/ssl/cert.pem 文件

  3. /etc/apache2/ssl/cert.key 文件

(确保https://访问当然有效:)。

谢谢,

J.P

security ssl permissions file-permissions apache-2.2

59
推荐指数
1
解决办法
8万
查看次数

如何更改挂载点的所有者

我们已经将 mysql 数据目录移动到另一个磁盘,所以现在/var/lib/mysql只是另一个分区的挂载点。我们将/var/lib/mysql目录的所有者设置为mysql.mysql.

但是每次我们挂载分区时,所有权都会更改为root.root. 因此,我们无法创建额外的 MySQL 数据库。

我们的 fstab 条目:

/dev/mapper/db-db   /var/lib/mysql    ext3    relatime        0       2
Run Code Online (Sandbox Code Playgroud)

如何将挂载点的所有者更改为root以外的用户?

unix permissions mount fstab

57
推荐指数
4
解决办法
19万
查看次数

在 /var/run 中写入 PID 文件需要什么权限?

在 Ubuntu 上:

touch: cannot touch `/var/run/test.pid': Permission denied
Run Code Online (Sandbox Code Playgroud)

我正在启动 start-stop-daemon 并且喜欢将 PID 文件写入 /var/run start-stop-daemon is run as my-program-user

/var/run setting is drwxr-xr-x  9 root  root
Run Code Online (Sandbox Code Playgroud)

我喜欢避免将 my-program-user 放在根组中。

ubuntu permissions root pid

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

如何更改 NGINX 用户?

我有一个 PHP 脚本,它创建一个目录并将图像输出到该目录。这在 Apache 下运行得很好,但我们最近决定切换到 NGINX 以更多地利用我们有限的 RAM。我正在使用 PHP mkdir() 命令来创建目录:

mkdir(dirname($path['image']['server']), 0755, true);
Run Code Online (Sandbox Code Playgroud)

切换到 NGINX 后,我收到以下警告:

Warning: mkdir(): Permission denied in ...
Run Code Online (Sandbox Code Playgroud)

我已经检查了父目录的所有权限,所以我确定我可能需要更改 NGINX 或 PHP-FPM 'user' 但我不知道该怎么做(我从来没有指定用户APACHE 的权限)。我似乎找不到这方面的太多信息。任何帮助都会很棒!

(注意:除了这个小问题,切换到 NGINX 的过程非常顺畅;我是第一次使用它,实际上只用了 10 分钟就可以启动并运行 NGINX。现在我只是在熨烫解决问题。)

permissions nginx

52
推荐指数
3
解决办法
26万
查看次数

nginx:无权限绑定端口 8090 但它绑定到 80 和 8080

我正在努力解决一些与权限相关的奇怪行为:当我配置 nginx 以侦听端口 8080 时,一切都按预期工作,但是当我使用任何其他端口时,我会得到类似的结果

2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)
Run Code Online (Sandbox Code Playgroud)

/var/log/nginx/error.log

我不知道从哪里看,所以我真的不知道配置的哪些部分可能很有趣。

在 nginx.conf 中,nginx 被配置为作为 nginx 运行:

user  nginx;
Run Code Online (Sandbox Code Playgroud)

用户 nginx 也在另一个组“git”中

在站点配置中,我试着这样听:

server {
    listen 8090; #does not work
    #listen 8080; #works
    #listen 9090; #does not work
    #listen 9090 default; #does not work neighter
    #listen 80; #works!
    server_name <some IP>;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我只有一个监听端口 443。

当我启动一些其他服务时,例如SimpleHTTPServer端口 8090 等,作为非 root 一切正常:

$ python -m SimpleHTTPServer 8090
Serving HTTP on 0.0.0.0 port …
Run Code Online (Sandbox Code Playgroud)

permissions nginx fedora port

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

linux/setfacl - 使用指定的所有者/组将父目录中的所有当前/未来文件/目录设置为 775

我有一个名为“成员”的目录,在它下面有文件夹/文件。如何递归地将所有当前文件夹/文件以及在那里创建的任何未来文件夹/文件默认设置为具有 775 权限并分别属于所有者/组 nobody/admin?我启用了 ACL,已挂载,但似乎无法让 setfacl 命令正确执行此操作。知道如何做到这一点吗?

linux permissions access-control-list setfacl

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

@ 符号在文件的权限设置中是什么意思?

我在 MacOSX 上,我做ln -s了一个目录,结果如下:

-rwxrwxr-x@ 1 shiki  admin   970332 Mar  6 16:38 apc.so
-rwxrwxr-x@ 1 shiki  admin   653884 Mar  6 16:38 eaccelerator.so
-rw-rw-r--@ 1 shiki  admin    60064 Mar  6 16:38 gettext.a
-rwxrwxr-x@ 1 shiki  admin    80320 Mar  6 16:38 gettext.so
-rw-rw-r--@ 1 shiki  admin   514784 Mar  6 16:38 imap.a
-rwxrwxr-x@ 1 shiki  admin  3886132 Mar  6 16:38 imap.so
Run Code Online (Sandbox Code Playgroud)

这些@符号是什么意思?

permissions console mac-osx chmod

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