/etc/selinux/config を開きます
selinux=enforcing または permissive を無効に変更します。
忘れずにサーバーを再起動してください。
もちろん、次の質問についても判断する必要があります。
1. ユーザーは vsftpd によってログインを制限されていますか? たとえば、ユーザー名が /etc/ftpusers にあり、ログインがブロックされています。
2. vsftpd.conf で pam 認証オプションがオンになっていますか (自分でコンパイルしてインストールするときによく間違えます) (vsftpd.conf に pam_service_name=ftp または vsftpd があるかどうかを確認してください。どちらであるかによって異なります)
PAM モジュールのサービス ファイル /etc/pam.d の下にあるのは誰ですか? 私の場合は ftp で、その構成は次のとおりです。
#%PAM-1.0
認証が必要です /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
認証が必要です /lib/security/pam_unix.so シャドウ nullok
認証が必要です /lib/security/pam_shells.so
アカウントが必要です /lib/security/pam_unix.so
セッションが必要です /lib/security/pam_unix.so
/etc/ftpusers 内の一部のユーザーが拒否される場合
3. 該当フォルダの権限は正しいですか?
「一部のローカルユーザーはvsftpdにログインできないが、一部のユーザーはログインできる」問題について、
システム内の既存のローカル アカウントはどれもログインできません。 /etc/vsftpd/vsftpd.conf ファイルの構成は次のとおりです。
local_enable=YES
write_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd
/etc/pam.d/vsftpd は存在しており、正常です。
ログイン時のエラー メッセージは次のとおりです。
500 OOPS: ディレクトリを変更できません:/home/xxxx
ログインに失敗しました。
421 サービスが利用できません。リモート サーバーが接続を閉じました。
彼らのホーム ディレクトリはすべて /home/xxxx です。 /home と /home/xxxx の権限は両方とも 755 です。
上記のアカウントはいずれも FTP 経由でログインできません。これらは一般的に使用されており、シェルを使用してログインできます。
新しい usr1 アカウントを作成しました
# useradd -G test -d /tmp/usr1 usr1
FTP 経由でログインでき、ホームは / パーティション上の /tmp/usr1 です。 /home を /dev/hda9 にマウントしました。
#マウント
/dev/hdb1 on/type ext3 (rw)
/home の /dev/hda9 タイプ ext2 (rw)
つまり、/home パーティションが原因で、「ホーム ディレクトリが /home パーティションにあるアカウント」がログインできないのではないかと思います。
上記の仮説を検証するために、別のアカウントを作成してみました
useradd -G test -d /home/usr3 usr3
/home と /home/usr3 の権限はすべて 755 です。
usr3 の FTP ログインに失敗しました。
500 OOPS: ディレクトリを変更できません:/home/usr3
ログインに失敗しました。
421 サービスが利用できません。リモート サーバーが接続を閉じました。
この時点で、「/home パーティションにホームディレクトリがあるアカウント」がログインできないのは、/home パーティションが原因であることは間違いないと思います。
参考記事:
Fedora Core 4 への 2 回目のアップグレードを完了しました。もちろん、ビルドに関してはまだすべてが解決されているわけではありませんが、以前から知っていた RedHat に多くのことが起こったことは確かです。
すべての変更点について言わなければなりませんが、私にとって最も素晴らしい追加は、新しい SELinux 拡張機能です。SELinux の理由と理論に関する詳細な背景については、「失敗の必然性: 最新のコンピューティング環境におけるセキュリティの欠陥のある想定」を参照してください。
SELinux を使用すればするほど、SELinux について知る必要があることがわかり、SELinux がユーザー、ディレクトリ、アクセスに関連する事柄を正確にどのように変更するのかを学び始めています。私は物事を大変なことをやっています:)
これまでのところ、Red Hat の SELinux の主な違いは、ftp が依然として優れたサーバーであることです。ただし、xinet.d 経由で呼び出すのではなく、デーモンとして実行するように設計されているようです。 vsftpd の xinet.d ファイルの作業コピーを取得すると、xinet.d ラッパー経由で呼び出すことができます。私はこの方法で最初のサーバーのアップグレードを実行しましたが、デーモンとして試しているものは確かにいくつか不足していると思います。 xinet.d ラッパーがもたらす機能の一部であり、今後もそれに戻る可能性があります。
私が見た中で最も注目に値する問題は、通常の /home/xxx vsftpd の外側にある chroot ディレクトリを有効にしたい場合です。これらはエラーで失敗します。
500 OOPS: ディレクトリを変更できません: /mnt/xxxxx
/home にディレクトリがあるアカウントでログインした場合は FTP を使用できましたが、/home の外にあるホーム ドライブ (この場合はマウントされたセカンダリ ディスク上) を持つようにユーザー アカウントを設定すると、vsftpd barfs は上記のようになります。
NSA で、FTP デーモンの SELinux 保護を無効にできることを示す情報を見つけました。
setsebool -P ftpd_disable_trans 1
これは少し思い切った方法のように思えますが、現時点では確かに機能します。
最終的には、問題はポリシーにあると思いますが、SELinux ポリシーは私にとって初めてのことなので、すべてが解決されるまでには時間がかかります。Fedora Core 4 の新しい SELinux 拡張機能について時間を費やしながら、私の考えを随時更新していきます。そして設定のレッスン。
解決:
# setsebool ftpd_disable_trans 1
# サービス vsftpd の再起動
私はFC4を使用しており、前回の投稿の方法を試したところ、すぐに解決しました。したがって、原因はSELinuxにあると判断できます。