我正在运行 proftp,但不确定如何正确配置用户和组。
在我的 proftpd.conf 中,我配置了:
# Set the user and group that the server runs as
User proftp
Group proftp
这将影响系统用户,proftpd 服务正在运行。
在mod_sql中有相同设置的选项,这对我来说似乎加倍:
# The SQLDefaultGID directive configures the default GID for users.
# This value must be greater than any configured SQLMinUserGID. Default: 65533
SQLDefaultGID xxxx
# The SQLDefaultUID directive configures the default UID for users.
# This value must be greater than any configured SQLMinUserUID. Default: 65533
SQLDefaultUID xxxx
还有一些 proftpd 服务可以运行这个用户,因为我可以使用top。
有没有最佳实践,如何设置这些值以获得最佳安全性?
这些设置没有直接关系,除了两者都可能导致以该用户身份运行的 proftpd 进程出现。
第一个控制主进程在使用完全 root 权限初始化后切换到哪个用户 ID,以便能够获得它需要的所有权限。
其他 (SQL) 设置是默认值,只有在用户使用 mod_sql 进行身份验证并且用于此的查询不返回该信息时才会发挥作用。因此,它们是否被使用取决于您的 SQL 设置。如果它们适用于此类经过 SQL 身份验证的用户,则为用户处理会话的进程将使用该 UID/GID 运行 - 并被操作系统用于执行文件系统权限检查并作为新创建文件的默认所有者/组和文件夹。
您希望如何设置任何非系统身份验证(如 SQL)取决于您的需要。
如果数据库中的所有用户都被 chroot 到某个不同的目录并且不是 shell 用户等,那么如果他们共享所有一个用户 ID/组 ID 可能会很方便,您可能还会将其定义为操作系统用户/ -group 让文件和进程在 shell 中以一些已知的名称列出。同样可以申请分配给用户的一些共享的只写、只读甚至读写目录,其中可以或希望所有用户都具有相同的权限。
如果您想在用户之间共享一些数据,或者他们或他们中的一些人应该通过 FTP 也从 shell 等访问他们有权访问的文件。您可能希望拥有唯一的用户 ID 和一些用户单独或一般的组分配给。但在这种情况下,您要么需要另外创建用户作为系统用户,要么指示系统也使用 SQL User-DB,或者您必须处理在操作系统级别分配的不同数字 ID。也可以将 UID 用作某种主要组,因此具有相似或相同权限的用户共享一个 UID。
最后,它实际上只取决于您想要成为什么结果 - 以及用户(除了 root 之外)如何访问系统。以及你是否已经有一些你想要采用的默认设置,而不是在没有真正需要的情况下一直让它变得不同。