加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 为一个帐户创建多个SFTP用户

发布时间:2020-12-14 02:54:17 所属栏目:Linux 来源:网络整理
导读:我正在将老化的共享托管系统迁移到更现代的技术.现在,普通的旧不安全FTP是客户访问其文件的唯一途径. 我计划用SFTP替换它,但是我需要一种方法来创建对应于一个UNIX帐户的多个SFTP用户.客户在机器(例如客户)上有一个帐户,其主目录如/ home / customer /. 我们
我正在将老化的共享托管系统迁移到更现代的技术.现在,普通的旧不安全FTP是客户访问其文件的唯一途径.

我计划用SFTP替换它,但是我需要一种方法来创建对应于一个UNIX帐户的多个SFTP用户.客户在机器(例如客户)上有一个帐户,其主目录如/ home / customer /.

我们的客户习惯于为他们的域创建任意数量的FTP帐户(向不同的人提供).我们需要与SFTP相同的功能.

我的第一个想法是使用SSH密钥,只是将每个新的“用户”添加到authorized_keys,但这对我们的客户来说很困惑,他们中的许多人不是技术倾向,而是更愿意坚持使用密码.

SSH不是问题,只有SFTP可用.我们如何创建多个SFTP帐户(customer,customer_developer1,customer_developer2等),这些帐户都是等效的并且不会干扰文件权限(理想情况下,所有文件都应该将客户保留为其所有者)?

我最初的想法是某种PAM模块,但我不清楚如何在我们的约束内完成这个.如果OpenSSH不适合我们的情况,我们愿意使用备用SSH守护进程;再次,它只需要支持SFTP而不支持SSH.

目前我们的SSH配置附加了它,以便在自己的目录中监禁用户:

# all customers have group 'customer'
Match group customer
    ChrootDirectory /home/%u    # jail in home directories
    AllowTcpForwarding no
    X11Forwarding no
    ForceCommand internal-sftp  # force SFTP
    PasswordAuthentication yes  # for non-customer accounts we use keys instead

我们的服务器运行Ubuntu 12.04 LTS.

解决方法

我们的解决方案是为每个客户创建一个主用户帐户,例如flowershop.每个客户都可以使用自己的密码创建任意数量的副帐户,例如flowershop_developer,flowershop_tester,flowershop_dba等.这样他们就可以在不共享主帐户密码的情况下分发帐户,这有很多原因(对于例如,如果他们需要删除他们的DBA帐户,他们可以轻松地执行此操作而无需更改自己的密码).

这些帐户中的每一个都在flowershop组中,其中包含/ home / flowershop /的主文件夹. SSH使用它作为chroot目录(/ home /%u,如问题中的配置所示).

然后,我们使用ACL来启用组flowershop中的每个用户来修改所有文件.创建新客户帐户时,我们按如下方式设置ACL:

setfacl -Rm 
d:group:admin:rwx,d:user:www-data:r-x,d:user:$USERNAME:rwx,d:group:$USERNAME:rwx,
  group:admin:rwx,user:www-data:r-x,user:$USERNAME:rwx,group:$USERNAME:rwx 
/home/$USERNAME/

这样做如下:

>给组管理员(对我们来说,托管服务提供商)rwx
>为文件提供用户www-data(Apache)r-x *
>为文件提供用户$USERNAME rwx
>为文件提供组$USERNAME rwx

此设置似乎对我们有效,但我们愿意接受任何更好的建议.

*我们使用suexec作为客户帐户运行的CGI / PHP

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读