EC2 FileZillalogin确定但不能写入或删除访问

我是一个完全的Apache noob,经过大量的拔毛和咬牙切齿,终于使SFTP以被动模式访问新的EC2实例。 只能以“ec2-user”或“root”身份login,无需密码,但不能使用myusername和/或password …我已经在/ home / admin,/ home / ec2-user创build了一个.htaccess文件,和/ home / myusername目录…我已经调整了/etc/httpd/conf/httpd.conf,/etc/vsftpd/vsftpd.conf以及根据这些调整更改了AWS安全组设置和端口/协议,并为每个上述用户目录创build.ssh / authorized_keys文件。 我不能通过FTP客户端(Filezilla)从本地机器拖放到EC2实例,显然,虽然我可以以ec2用户身份login,但我没有写入权限。 怀疑我需要chown …什么东西?

我正在使用这里推荐的vsftpd设置

任何想法,我需要改变,以便1)通过Filezilla作为“myusername”而不是“ec2-user”或“root”login?

PS:我已经安装了大多数相关的AWS命令行工具并且function正常

你已经提到(也可能混淆了)一些不同的东西 – 所以你的目标不太清楚,不幸的是。

  1. SFTP – 没有被动的SFTP之类的东西 – SFTP协议与FTP完全不同,由/ usr / libexec / openssh / sftp-server(在/ etc / ssh / sshd_config中设置)而不是vsFTPd
  2. Apache .htaccess文件与FTP无关 – 它们定义了你的Web服务器如何传递内容的规则(即对你的网站的访问者)。
  3. 你想使用FTP到SFTP?
  4. 您是否尝试从/ home / admin,/ home / ec2-user等网站提供服务? 在Amazon的Linux上,Apache的默认Web根目录是/ var / www / html。 通常,您将在那里添加您的内容,或者您​​必须更改httpd.conf中的DocumentRoot。

vsFTPd可以设置为使用本地用户。 要做到这一点:

  • 设置local_enable = YES和chroot_local_user = YES(vsftpd.conf)
  • 创build你的系统用户(useradd)(用/ sbin / nologin作为shell) – 用户将被限制在他们的主目录(上面的chroot指令)
  • 设置密码(passwd)
  • 重新启动vsftpd以使configuration更改生效
  • 通过FTPlogin(不是SFTP)

对于SFTP(不使用vsftpd!):

  • 将/ usr / libexec / openssh / sftp-server追加到/ etc / shells
  • 使用shell / usr / libexec / openssh / sftp-server创build一个新用户
  • 为新用户设置密码
  • 通过SFTPlogin。 您不会被限制在您的主目录中,但将无法写入您的用户没有权限的位置

现在针对您所面临的权限问题:

  • 首先,不要因为无法写入目录而去改变文件的权限或所有权。 大多数目录由root拥有,只能由所有者写入。
  • 对于Web服务器,请保持您的权限限制 – 644(rw-r – r–)或更less – (组和其他应该不需要写入权限;在大多数情况下,没有人需要执行权限)
  • 将您的文件所有权设置为与您的Web服务器运行的用户相同,就像使用dynamic文件(例如PHP)一样。

因此您的select是:

  • 从用户的主目录(而不是/ var / www / html)中提取文件 – 保持用户chroot,并将httpd.conf中的DocumentRoot设置为指向正确的path。 这是一个很好的(安全的)方法,但是做的典型的改变是将用户的主目录设置为/ var / www / html下的path(例如,对于拥有自己站点的多个人,/ var / www / html / USERNAME – 相应地设置DocumentRoot)
  • 给你的Apache用户FTP / SFTP访问 – 这听起来是合理的,但特别是使用FTP是不安全的。
  • 使用SCP并将您的用户切换到root用户(sudo) – 它有它的用途,但不能将文件保存到Web服务器目录 – 所有创build的文件都由root

我的build议是使用证书的SFTP和/ var / www / html下的主目录


在Amazon的Linux上添加SFTP用户的特定命令:

免责声明:使用证书比使用密码更安全 – 并且应该禁用PasswordAuthentication。

#Add the shell echo /usr/libexec/openssh/sftp-server >> /etc/shells #Create a user with the shell, I have not setup a home folder useradd -M -s /usr/libexec/openssh/sftp-server USERNAME #Set the password passwd USERNAME Edit /etc/ssh/sshd_config: Change: PasswordAuthentication no to PasswordAuthentication yes (line 69), save and quit #Restart SSH service sshd restart 

限制你的用户到一个目录(即chroot):

由于sftp服务器不在你的chrootpath中,我们需要改变它:改变(在sshd_config中):

 Subsystem sftp /usr/libexec/openssh/sftp-server 

至:

 Subsystem sftp internal-sftp 

将以下内容添加到sshd_config的末尾(将pathreplace为/ var / www):

 Match User USERNAME ChrootDirectory /path/to/restrict/to AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp Match 

重新启动SSH:

 service sshd restart