Apache、组权限和用户上传

Apache、组权限和用户上传

我有一个名为“digitalgoods”的文件夹,其所有权如下: apa​​che:apache 位于 htdocs 文件夹之外,因此公众无法访问。然而,我需要一组用户(Jack、John、James)可以访问同一个文件夹——我们将他们全部称为“上传者”。

我希望“上传者”能够尽可能轻松地将文件上传到“digitalgoods”文件夹,然后 apache 可以通过购买访问该文件夹。

我的问题是设置这个的最佳方法是什么?我目前正在使用 SSH 访问服务器,但是安装 ftp 服务器以便用户获得访问权限是否更有意义?如果是这样,我应该在帐户和权限方面做什么?或者我应该将每个用户的主目录设置为“digitalgoods”并以某种方式适当修改权限以通过 SSH 进行访问?

我试图让客户尽可能轻松地上传文件。感谢这方面的任何帮助。

答案1

有 2 种解决方案使用 2 个不同的 ftp 服务器

1 - 将 proftpd 与 VirtualServer 功能和本地用户强制结合使用。我的配置文件的片段:

ServerType standalone
DefaultServer on
AccessGrantMsg "User %u logged in."
DeferWelcome off

# Use pam to authenticate (default) and be authoritative
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c


<VirtualHost xxx.xxx.xxx.xxx>
ServerAdmin [email protected]
ServerName  "FTP"
TransferLog /var/log/proftpd/transfer.log
ExtendedLog /var/log/proftpd/full.log ALL
DefaultRoot /var/www/digitalgoods
User                    apache
Group                   apache
AllowOverwrite          yes
MaxLoginAttempts        3
RequireValidShell       no
</VirtualHost>

创建3个用户,并让他们使用ftp。它们将被“chroot”,/var/www/digitalgoods并且上传的任何文件都将具有设置为的权限apache:apache

2 - 使用 vsftpd chroot,并创建 3 个用户,其用户 ID 与 apache 相同,并且主目录将被 chroot(是的,这是一个拼凑,但它应该可以工作):

内容/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
check_shell=NO
syslog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
idle_session_timeout=3600
ftpd_banner=FTP XXX
chroot_local_user=YES
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=NO
userlist_deny=NO
tcp_wrappers=YES

由于我们使用的是最小权限,因此我们必须声明将访问此 ftp 的登录名:/etc/vsftpd/user_list

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
#
devel
manuals

创建 2 个用户 ( /etc/passwd) 并使用 apache 用户的相同用户 ID(同样,这是一个该死的拼凑,但至少你将有 2 个用户以相同的权限上传到他们的 chrooted 主页)。有了它,check_shell=NO您不需要为这些用户提供有效的 shell

[root@]# grep 'apache\|desenv\|man\|' /etc/passwd
apache:x:48:48:Apache:/var/www:/sbin/nologin
devel:x:48:48::/var/www/digitalgoods:/sbin/nologin
manuals:x:48:48::/var/www/digitalgoods:/sbin/nologin

相关内容