web-dev-qa-db-ja.com

Apache、グループ権限、およびユーザーのアップロード

「digitalgoods」という名前のフォルダがあり、所有権は次のとおりです。Apache:apacheはhtdocsフォルダの外部にあるため、一般にアクセスできません。ただし、ユーザーのセットグループ(Jack、John、James)がアクセスできるようにするには、同じフォルダーが必要です。これらをすべて「アップローダー」と呼びます。

「アップローダー」がファイルを「digitalgoods」フォルダーにできるだけ簡単にアップロードできるようにしたいのですが、そこでApacheは購入してサービスを提供するためにアクセスできます。

私の質問は、これを設定するための最良の方法は何ですか?私は現在SSHを使用してサーバーにアクセスしていますが、ユーザーがアクセスできるようにftpサーバーをインストールする方が理にかなっています。もしそうなら、アカウントと権限に関してそこから何をすべきですか?または、各ユーザーのホームディレクトリを「digitalgoods」に設定し、SSH経由でアクセスするためのアクセス許可を何らかの方法で適切に変更する必要がありますか?

私は、クライアントにとってファイルのアップロードをできるだけ簡単にするように努めています。この点での助けはありがたいです。

5
Ryan Prentiss

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に「chroot」され、アップロードされたファイルにはすべてApache:apacheに設定された権限があります。

2-vsftpd chrootを使用し、Apacheと同じユーザーIDとchrootされる同じホームディレクトリを持つ3人のユーザーを作成します(ええ、それは厄介ですが、機能します):

/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人のユーザーが同じ権限でchrootされた家にアップロードします)。 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
3
user34720