关于有限FTP / sFTP用户的基本说明

我想澄清一下如何创build有限的用户作为WEBSERVER与Nginx来访问我的VPS用户的正确方法。

我习惯于不安装FTP,只能通过SFTP访问。 每个设置都可以吗?

这是我通常从创build一个名为“admin”的受限用户,应该能够通过SFTP访问具有网站数据的文件夹

mkdir -p /var/www/mysite.com/ adduser admin adduser admin www-data chown -R root:root /var/www chmod -R 755 /var/www chmod -R 755 /var/www/mysite.com chown -R admin:www-data /var/www/mysite.com/ 

这似乎不是正确的方式,我总是有权限上传一些文件时(例如一般的Wordpress)。 我想创build一个完全按照“提供”在客户购买托pipe服务(即FTP,我更喜欢SFTP访问)时所提供的用户工作的用户。 这是个人用户,但我认为有限的用户是通过SFTP使用“根”更安全。

您可以使用sftp,只需设置目录/var/www/mysite.com像这样:

chmod 2775 /var/www/mysite.com

这将使目录组可写,并将组www-data粘贴到该目录下面创build的每个文件。 如果在目录中已有文件,则可以使用以下命令传播目录权限:

find /var/www/mysite.com -type d -exec chmod 2775 {} \;

希望这个帮助你有你正在寻找的“托pipe感觉”。 ;)

设置这个的最好方法是使用通过软件如ProFTPD或Pure-FTPDbuild立的虚拟用户,它们既支持ldap,mysql或其他数据库中的虚拟用户,也支持同一个包中的FTP和SFTP。 使用虚拟用户,您可以将其locking在FTP目录中,还可以设置此用户将用于存储和访问文件的UID和GID。 请参阅有关如何正确实施的相关文档。

看起来你遇到的问题与chroot jailing要求用户设置的标准有关。 人们遇到的两个最大的问题是,用户的主目录及其上的所有目录只能由root用户写入,并且必须由root用户拥有。 由于这个规定,创build一个监狱设置的最好方法(在我看来)是:

 mkdir -p /var/www/vhosts/mysite.com/public_html useradd -d /var/www/vhosts/mysite.com mynewuser chown -R root:root /var/www/vhosts/mysite.com chmod 755 /var/www/vhosts/mysite.com chown mynewuser:www-data /var/www/vhosts/mysite.com/public_html 

或者,如果您需要Apache具有写入权限,请将其更改为775以获取所需的目录。

我以这种方式设置,以便当用户login他们有权访问的唯一目录是“public_html”,并且不知道系统上的任何其他虚拟主机。 这将给出一个完全隔离的实例的外观,就像你从任何提供者那里得到的一样。