我客户的 WordPress 网站托管在 Digital Ocean。我已在此设置了他们建议的权限页,但在使用 SSH 访问服务器上的 example.com 目录时遇到了权限问题。当我尝试使用 访问目录时cd example.com
,显示以下消息:-bash: cd: example.com: Permission denied
。
我已经stat
在 example.com 目录上运行了该命令,并且输出如下所示。
File: example.com
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fc01h/64513d Inode: 258961 Links: 5
Access: (0750/drwxr-x---) Uid: ( 33/www-data) Gid: ( 33/www-data)
我也无法使用设置 Droplet 时创建的 SSH 用户通过 SFTP 进行连接。我的 MacBook Pro 上的 Transmit 显示以下消息:请确保您有修改此文件的权限。
如果我将目录权限更改为sudo chown -R example:example /var/www/example.com
SFTP 连接,但 WordPress 安装无法正常工作。
为了让 WordPress、SSH 和 SFTP 以适当的权限正常工作,我需要进行哪些更改?
答案1
网站文件的通用权限:
chown apache:apache -R * # change to the user and owner set for apache
find . -type d -exec chmod 755 {} \; # directory permissions: rwxr-xr-x
find . -type f -exec chmod 644 {} \; # file permissions: rw-r--r--
WP 硬化页状态:
所有文件都应归您的用户帐户所有,并且应可由您写入。任何需要 WordPress 写入权限的文件都应可由 Web 服务器写入,如果您的托管设置需要,则可能意味着这些文件需要由 Web 服务器进程使用的用户帐户集体拥有。
/
WordPress 根目录:所有文件只能由您的用户帐户写入,但如果您希望 WordPress 自动为您生成重写规则,则 .htaccess 除外。/wp-admin/
WordPress 管理区域:所有文件只能由您的用户帐户写入。/wp-includes/
WordPress 应用程序逻辑的大部分:所有文件都应该只能由您的用户帐户写入。/wp-content/
用户提供的内容:旨在由您的用户帐户和 Web 服务器进程写入。
你会/wp-content/
发现:
/wp-content/themes/
主题文件。如果您要使用内置主题编辑器,则所有文件都需要可由 Web 服务器进程写入。如果您不想使用内置主题编辑器,则所有文件只能由您的用户帐户写入。/wp-content/plugins/
插件文件:所有文件只能由您的用户帐户写入。可能存在的其他目录应由
/wp-content/
需要它们的插件或主题记录。权限可能有所不同。
进入cd
Wordpress 目录并执行:
chown $USER:$USER -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let apache be owner of wp-content
- 最后一个是主观的,因为这取决于你想如何使用它。
现在,您可以使用您的用户名直接通过 ssh 和 ftp 更新所有 WP 文件。
这可能会有用(我使用了我的云实例,但我没有 WP)
我个人的看法:
切勿直接更新网络服务器文件,而是间接更新,让系统本身进行更新。如果您将文件上传到特定目录,则可以以用户身份上传所有文件,而无需查看权限
例如将您的网站复制到
/home/$USER/website/
使用这些文件来编辑
然后创建一个脚本,进行备份并将这些文件复制到您的实际网站 - 而不更改权限。
执行此操作的 2 个命令如下所示(根据您的情况进行调整;我使用了广泛的选择(即整个网站)):
tar cvfz /u/backups/"$(date +"%Y_%m_%d_%I_%M_%p").tar.gz" /var/www/ sudo cp -rp /home/$USER/website/ /var/www/