次の所有権を持つ「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