Apache, 그룹 권한 및 사용자 업로드

Apache, 그룹 권한 및 사용자 업로드

다음과 같은 소유권을 가진 "digitalgoods"라는 폴더가 있습니다. apache:apache는 htdocs 폴더 외부에 있으므로 공개적으로 액세스할 수 없습니다. 그러나 동일한 폴더에 액세스하려면 사용자 그룹(Jack, John, James)이 필요합니다. 이들을 모두 "업로더"라고 부르겠습니다.

나는 "업로더"가 가능한 한 쉽게 "digitalgoods" 폴더에 파일을 업로드할 수 있기를 원하며, 그런 다음 구입을 통해 Apache에서 액세스할 수 있습니다.

내 질문은 이것을 설정하는 가장 좋은 방법은 무엇입니까? 현재 SSH를 사용하여 서버에 액세스하고 있지만 사용자가 액세스할 수 있도록 FTP 서버를 설치하는 것이 더 합리적일까요? 그렇다면 계정과 권한은 어떻게 해야 할까요? 아니면 각 사용자의 홈 디렉터리를 "digitalgoods"로 설정하고 SSH를 통해 액세스할 수 있도록 권한을 적절하게 수정해야 합니까?

나는 클라이언트가 파일을 업로드하는 것을 최대한 쉽게 만들려고 노력합니다. 이에 대한 도움을 주셔서 감사합니다.

답변1

2개의 서로 다른 FTP 서버를 사용하는 2가지 솔루션이 있습니다.

1 - VirtualServer 기능 및 로컬 사용자 적용과 함께 proftpd를 사용하십시오. 내 구성 파일의 일부:

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를 사용하도록 합니다. 해당 파일은 "루트 변경"되며 /var/www/digitalgoods업로드된 모든 파일에는 다음으로 설정된 권한이 있습니다.apache:apache

2 - vsftpd chroot를 사용하고 apache와 동일한 사용자 ID를 가진 3명의 사용자를 생성하면 홈 디렉터리가 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를 사용합니다. (다시 말하지만 이것은 패치워크이지만 최소한 chroot된 홈페이지에 업로드할 수 있는 동일한 권한을 가진 2명의 사용자가 있어야 합니다.) 이를 사용하면 check_shell=NO이러한 사용자에게 유효한 쉘을 제공할 필요가 없습니다.

[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

관련 정보