/var/www 目录归root:root其所有,这意味着没有人可以使用它并且完全没有用。既然我们都想要一个实际工作的 Web 服务器(并且没有人应该以“root”身份登录),那么我们需要解决这个问题。
只有两个实体需要访问。
PHP/Perl/Ruby/Python都需要访问文件夹和文件,因为它们创建了许多文件夹和文件(即/uploads/)。这些脚本语言应该在 nginx 或 apache 下运行(或者甚至是像 FastCGI for PHP 这样的其他东西)。
开发商
他们如何获得访问权限?我知道有人在某个地方以前做过这件事。然而,有数十亿个网站,您会认为会有更多关于此主题的信息。
我知道 777 是所有者/组/其他的完全读/写/执行权限。因此,这似乎不需要正确,因为它为随机用户提供了完全权限。
需要使用哪些权限,/var/www以便:
所有人都可以在那里读取、创建和运行文件(和目录)吗?
如果我是对的,Ruby 和 PHP 脚本不会直接“执行”-而是传递给解释器。所以不需要对/var/www...中的文件执行权限?因此,似乎正确的许可chmod -R 1660将使
这样对吗?
更新 1:我刚刚意识到文件和目录可能需要不同的权限 - 我在上面谈论文件,所以我不确定目录权限需要是什么。
更新 2:文件夹结构/var/www发生了巨大变化,因为上述四个实体之一总是添加(有时删除)多个级别的文件夹和子文件夹。他们还创建和删除其他 3 个实体可能需要读/写访问权限的文件。因此,权限需要对文件和目录都做上述四件事。由于它们都不需要执行权限(请参阅上面有关 ruby/php 的问题),我认为rw-rw-r-- …
我对用户/数据库有以下授权
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为%(并再次返回)?
我们在我们的服务器上运行了一套 Windows 服务,它们彼此独立地执行一系列自动化任务,除了一个服务负责其他服务。
如果其中一项服务未能响应或挂起,该服务将尝试重新启动该服务,如果在尝试期间抛出异常,则改为向支持团队发送电子邮件,以便他们可以自行重新启动该服务。
做了一些研究后,我遇到了一些“解决方案”,从KB907460 中提到的解决方法到提供服务运行管理员权限的帐户。
我对这两种方法都不满意 - 我不明白 Microsoft 知识库文章中概述的第一种方法的后果,但我绝对不想授予管理员访问服务运行的帐户的权限.
我快速浏览了本地安全策略,除了定义帐户是否可以作为服务登录的策略之外,我看不到任何其他看起来像是指服务的内容。
我们在 Server 2003 和 Server 2008 上运行它,所以任何想法或指示都会被慷慨地接收!
澄清:我不想授予给定用户或组启动/停止/重新启动所有服务的能力 - 我希望能够仅向给定用户或组授予对特定服务执行此操作的权限。
进一步说明:我需要授予这些权限的服务器不属于一个域——它们是两个面向 Internet 的服务器,它们接收文件、处理它们并将它们发送给第三方,以及为几个网站提供服务,所以Active Directory 组策略是不可能的。抱歉,我没有说得更清楚。
我的文件夹中有我的cert.pem和cert.key文件/etc/apache2/ssl。
什么是最安全的权限和所有权:
/etc/apache2/ssl 目录
/etc/apache2/ssl/cert.pem 文件
/etc/apache2/ssl/cert.key 文件
(确保https://访问当然有效:)。
谢谢,
J.P
我们已经将 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以外的用户?
在 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 放在根组中。
我有一个 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。现在我只是在熨烫解决问题。)
我正在努力解决一些与权限相关的奇怪行为:当我配置 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) 我有一个名为“成员”的目录,在它下面有文件夹/文件。如何递归地将所有当前文件夹/文件以及在那里创建的任何未来文件夹/文件默认设置为具有 775 权限并分别属于所有者/组 nobody/admin?我启用了 ACL,已挂载,但似乎无法让 setfacl 命令正确执行此操作。知道如何做到这一点吗?
我在 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)
这些@符号是什么意思?