我在 Ubuntu 上有 Laravel 项目。项目位于/var/www/html/myproj
。我在 Windows 上有本地项目,经过一些更改后,我想将 MyController.php 上传到 Ubuntu。我从 Filezilla 收到消息:File couldn't be transferred
在 Ubuntu 上,文件位于:
user1@bpl:/var/www/html/myproj/app/Http/Controllers/Admin$ ls -al
total 76
drwxr-xr-x 2 www-data www-data 4096 Mar 13 12:26 .
drwxrwxr-x 4 www-data www-data 4096 Mar 14 21:21 ..
-rw-r--r-- 1 www-data www-data 1170 Mar 13 12:26 AuthController.php
为了上传 I 用户ftpuser1
,该用户被添加到 www-data 组:
user1@bpl:/var/www/html/myproj$ getent group www-data
www-data:x:33:user1,ftpuser1
的主目录ftpuser1
是:
user1@bpl:/var/www/html/myproj$ eval echo ~ftpuser1
/var/www/html/
vsftpd 可以工作,ftp 守护进程没有问题,因为通常我可以通过上传文件,但是我在将文件上传到项目目录中Filezilla
时遇到了问题Laravel
Admin
user1@bpl:/var/www/html/myproj$ systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
Active: active (running) since Thu 2021-03-11 18:23:37 UTC; 3 days ago
Main PID: 1073 (vsftpd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/vsftpd.service
└─1073 /usr/sbin/vsftpd /etc/vsftpd.conf
这是来自服务器的 Filezilla 的响应:
Command: PASV
Response: 227 Entering Passive Mode (185,163,47,161,39,70).
Command: STOR AuthController.php
Response: 553 Could not create file.
Error: Critical file transfer error
Status: Retrieving directory listing of "/myproj/app/Http/Controllers/Admin"...
在此网站上,我找到了有关应设置 Laravel 文件权限的文章:Ubuntu 上的 Laravel 文件权限
并且描述文件权限应该是 644,与我的相同:
然后将所有目录设置为 755,将文件设置为 644...设置文件权限
sudo find /path/to/your/laravel/root/directory -type f -exec chmod 644 {} \;
设置目录权限
sudo find /path/to/your/laravel/root/directory -type d -exec chmod 755 {} \;
但此配置不允许使用 Filezilla 和 vsftpd 上传文件
答案1
更改上传目录的权限
chmod 664 /var/www/myproject
答案2
我检查了一下,发现我的 ftp 主目录的递归目录属于 root 所有者,所以只需更改权限即可。
$sudo chown -R ftp1:ftp1 /home/ftp1
$sudo chmod -R 777 /home/ftp1