这是一个关于文件权限的规范问题,以及为什么777 是“破坏性的”。
我不是在问如何解决这个问题,因为服务器故障(重新安装操作系统)上已经有大量的参考资料。为什么它会做任何破坏性的事情?
如果你曾经运行过这个命令,你几乎会立即破坏你的操作系统。我不清楚为什么取消限制会对现有流程产生任何影响。例如,如果我没有对某些内容的读取访问权限,并且在终端中快速输入错误后,我现在突然可以正常访问...为什么这会导致 Linux 崩溃?
/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-- …
我在 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)
这些@符号是什么意思?
我正在为 nginx 的 SSL 配置中的ssl_dhparam指令生成 Diffie-Hellman 参数。
该文件dhparam.pem是使用命令创建的openssl dhparam 2048 -check -out dhparam.pem。
我应该为这个文件设置哪些权限?在 git 存储库中共享是否安全还是应该将其保密?
我正在为我的Symfony应用程序构建 Docker 映像,我需要授予 apache 服务器写入缓存和日志文件夹的权限
#Dockerfile
FROM php:7-apache
RUN apt-get update \
&& apt-get install -y libicu-dev freetds-common freetds-bin unixodbc \
&& docker-php-ext-install intl mbstring \
&& a2enmod rewrite
COPY app/php.ini /usr/local/etc/php/
COPY app/apache2.conf /etc/apache2/apache2.conf
COPY ./ /var/www/html
RUN find /var/www/html/ -type d -exec chmod 755 {} \;
RUN find /var/www/html/ -type f -exec chmod 644 {} \;
RUN chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs
Run Code Online (Sandbox Code Playgroud)
当我docker build -t myname/symfony_apps:latest .使用docker run -p 8080:80 myname/symfony_apps:latest. Apache …
我在设置一些 WordPress 主题时正在调整权限,并运行chmod 664 -R theme-dir/*它在目录根目录中的文件上运行良好,但是当我执行以下操作时,子目录中的所有文件现在都这样读取ls -l:
?--------- ? ? ? ? ? core_functions.php
?--------- ? ? ? ? ? css
?--------- ? ? ? ? ? custom_functions.php
?--------- ? ? ? ? ? images
?--------- ? ? ? ? ? import_settings.php
?--------- ? ? ? ? ? js
?--------- ? ? ? ? ? options_trim.php
?--------- ? ? ? ? ? page_templates
?--------- ? ? ? ? ? post_thumbnails_trim.php
?---------+ ? ? ? ? ? …Run Code Online (Sandbox Code Playgroud) 我想使用 Rsync 将大量文件/文件夹从 Windows 传输到 Linux。在 linux 服务器(目标)上,我希望文件权限设置为 644,文件夹权限设置为 755。如果可能,我希望所有文件/文件夹的所有权设置为 root.root。我试过 -p 选项,但它不起作用。感谢您的任何帮助。
我有一台运行Ubuntu 12.10 x64的服务器,以及最新版本的 vsFTPd。
我的用户example.com有其主文件夹设置上/var/www/example.com,
我在里面创建了一个 public_html 文件夹并赋予777它权限,并删除了家庭用户文件夹的写入权限。一切正常,但是:
我通过 FTP(使用 SmartFTP)上传的每个文件的 chmod 都为 0。
我vsftpd.conf只有一行相关:
local_umask=022.
Run Code Online (Sandbox Code Playgroud)
我尝试更改为:
file_open_mode=777
local_umask=002
Run Code Online (Sandbox Code Playgroud)
所以我的文件会775在上传后立即得到。
但只有我上传的文件夹才能获得775权限。
我上传的文件得到 1411 permissions
有人可以帮我解决这个问题吗?
我一直在尝试清理几个盒子的权限,并且一直在搜索 chmod 人以及我处理的所有互联网文档,但没有任何运气 - 所以我们开始了。
基本上,我有一个包含许多子目录和文件的目录——我想设置以下权限:
对于目录:770(u+rwx、g+rwx、o-rwx)
对于文件:660(U+rw、g+rw、ax、o-rw)
如果可能,我想尝试使用单个递归 chmod 来执行此操作 - 以避免递归遍历每个目录并设置逐个文件的权限。
我想必须有一种方法可以在不编写自己的 shell 脚本的情况下做到这一点——但我找不到任何东西。
我感谢您的帮助!
大多数 unix 派生类可以通过以下方式将 ACL 从一个文件复制到另一个文件:
getfacl filename1 | setfacl -f - filename2
Run Code Online (Sandbox Code Playgroud)
不幸的是,Mac OS X 没有 getfacl 和 setfacl 命令,因为它们已将 ACL 处理卷入 chmod。chmod -E 接受标准输入上的 ACL 列表,但我还没有找到可以在标准输出上以合适格式吐出 ACL 的命令。我想出的最好的是:
ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2
Run Code Online (Sandbox Code Playgroud)
有没有更强大的解决方案?
额外的问题:有没有一种很好的方法可以在 Python 中做到这一点,而不使用任何未随 10.6 一起提供的模块?