Vsftpdの新しいFTPユーザーを作成しようとしたときに、この問題に遭遇しました。次のコマンドで新しいユーザーを作成し、FileZillaでログインしようとすると、「パスワードが正しくありません」というエラーが表示されます。
useradd f -p pass -d /home/f -s /bin/false
これを行った後、/ etc/shadowには
f:pass:1111:0:99:2:::
次のコマンドを実行して同じパスを提供したらpass
passwd f
/ etc/shadowには
f:$1$U1c5vVwg$x5TVDDDmhi0a7RWFer6Jn1:1111:0:99:2:::
passwdを実行すると暗号化が行われるようですが、-seraddを実行しないようです
重要なのは、これを行った後、まったく同じ資格情報でFTPにログインできることです。
CentOS 5.11、vsftpd for FTP、およびFileZilla for FTP Accessを使用しています。
/ var/log/secureには以下が含まれます:
Dec 17 useradd[644]: new group: name=f, GID=511
Dec 17 useradd[644]: new user: name=f, UID=511, GID=511, home=/home/f, Shell=/bin/false
-p pass
をuseraddに渡しても機能しないのはなぜですか?機能させるために何をする必要がありますか?
それは意図したとおりに機能しています。 useradd
コマンドを使用してパスワードを設定する場合は、ハッシュされたバージョンのパスワードをuseradd
に渡す必要があります。
文字列pass
は、/etc/shadow
のハッシュされたパスワードフィールドのフォーマット基準を満たしていますが、その文字列に対する実際のパスワードハッシュはありません。その結果、すべての意図および目的において、そのアカウントはパスワードを持つものとして動作しますが、アクセスするために使用しようとするパスワードは、正しいパスワードではないため拒否されます。
man useradd
または seraddのドキュメント を参照してください:
-p
、--password
[〜#〜]パスワード[〜#〜]crypt(3) によって返される暗号化されたパスワード。デフォルトでは、パスワードは無効になっています。
注:パスワード(または暗号化されたパスワード)は、プロセスをリストするユーザーに表示されるため、このオプションはお勧めしません。
パスワードがシステムのパスワードポリシーに従っていることを確認する必要があります。
man
seradd :
-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to
disable the password.
あなたはそれにハッシュされたパスワードを渡すことになっています。
プレーンテキストのパスワードではありません。
useradd
は、パスワード自体ではなく、パスワードのハッシュを渡すことを期待しています。コマンドで次のバリエーションを使用して、ハッシュされたパスワードをuseradd
コマンドに提供できます。
useradd f -p "$(mkpasswd --method=sha-512 'pass')" -d /home/f -s /bin/false
利用可能な方法を見つけるには、以下を使用します。
mkpasswd --method=help
コマンドラインでパスワードを渡さないようにするには、パスワードをファイルに入れ(エディターを使用し、echo
などは使用しない)、次のようにします。
useradd f -p "$(mkpasswd --method=sha-512 --password-fd=0 < filename)" -d /home/f -s /bin/false
これはコマンドラインでハッシュされたパスワードを渡しますが、平文のパスワードは渡しません。
mkpasswd
はexpect
パッケージに付属しています。