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

我正在将老化的共享托管系统迁移到更现代的技术.现在,普通的旧不安全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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户