![如何通过 SFTP 从 ubuntu 用户访问 /var/www/html 文件夹](https://linux22.com/image/1164241/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20SFTP%20%E4%BB%8E%20ubuntu%20%E7%94%A8%E6%88%B7%E8%AE%BF%E9%97%AE%20%2Fvar%2Fwww%2Fhtml%20%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我通过 putty 运行一些随机命令,搞乱了一些权限级别/var/www/
和文件夹。/var/www/html/
最初我想添加或编辑一些文件,/var/www/html/
并且我执行了一些命令,这些命令授予我通过 SFTP 添加或编辑文件的权限。但这导致问题,我无法通过 webserver 更新或创建任何文件apache
。
此后,我执行了一些随机命令,可以apache
查看和编辑下面的文件/var/www/html/
,但我无法从 SFTP 查看文件。
我附上了一些文件夹权限的截图
我的配置
OS: Ubuntu 18.04
Provider: AWS
FTP Username: ubuntu
我通过 PPK 文件登录 SFTP
现在我想通过 SFTP 访问/var/www/html/
答案1
您需要以具有 sudo 权限的用户身份或 root 身份登录。如果用户没有 root 权限,则必须尊重文件夹所有者
由于所有者是 apache,因此某些非 sudo 用户当然无法访问它
答案2
我以这种方式处理类似的情况:
groupadd web
groupmems -g web -a myuser
chown -R .web /var/www/html/
chmod -R g+w /var/www/html/
mkdir ~myuser/web
mount --bind /var/www/html/ ~myuser/web
解释:为 myuser(及其他人)创建组,并在他的模式目录中创建挂载点。然后是mount --bind
apache 目录。
您必须添加mount
到启动脚本。
现在您就可以从家里访问 apache 目录了。
答案3
两年后,我终于有机会回答我自己的问题了。所以如果有人遇到同样的问题,他们可以关注这个答案
可能有两种最简单的方法:
将所有文件和文件夹的所有权分配给 Web 服务器。大多数情况下,前提
www-data
是安装了 apache/nginx。如果没有,请先找到 Web 服务器用户#参考。sudo chown -R www-data:www-data /var/www/html/
这会将所有文件和文件夹的所有权分配给www-data
用户和www-data
用户组。检查chown
命令参考
并将 FTP/SFTP 用户名添加到 webserver 组。
sudo usermod -a -G www-data ubuntu
这会将ubuntu
用户添加到 webserver 组www-data
。检查 usermod 命令参考`
为所有文件和文件夹添加权限
sudo chmod -R 775 /var/www
/var/www/
这将按如下方式向所有文件/文件夹添加权限
R = 4 (Octal Value for read permission)
W = 2 (Octal value for Write Permission)
X = 1 (Octal value for execute permission)
Owner: 4+2+1 = 7 (Read/Write/Execute)
Group: 4+2+1 = 7 (Read/Write/Execute)
Others: 4+1 = 5 (Read/Execute)
通过这种方式,所有者和组具有读取、写入和执行权限。从 ftp/sftp 登录的用户已在第二步添加到 web 服务器组中。因此 Web 服务器和 FTP 用户都能够添加/编辑文件。