web-dev-qa-db-ja.com

useraddが/ etc / shadowのパスワードを暗号化しない

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に渡しても機能しないのはなぜですか?機能させるために何をする必要がありますか?

20
BadToTheBone

それは意図したとおりに機能しています。 useraddコマンドを使用してパスワードを設定する場合は、ハッシュされたバージョンのパスワードをuseraddに渡す必要があります。

文字列passは、/etc/shadowのハッシュされたパスワードフィールドのフォーマット基準を満たしていますが、その文字列に対する実際のパスワードハッシュはありません。その結果、すべての意図および目的において、そのアカウントはパスワードを持つものとして動作しますが、アクセスするために使用しようとするパスワードは、正しいパスワードではないため拒否されます。

man useraddまたは seraddのドキュメント を参照してください:

-p--password[〜#〜]パスワード[〜#〜]

crypt(3) によって返される暗号化されたパスワード。デフォルトでは、パスワードは無効になっています。

注:パスワード(または暗号化されたパスワード)は、プロセスをリストするユーザーに表示されるため、このオプションはお勧めしません。

パスワードがシステムのパスワードポリシーに従っていることを確認する必要があります。

43
kasperd

manseradd

   -p, --password PASSWORD
       The encrypted password, as returned by crypt(3). The default is to
       disable the password.

あなたはそれにハッシュされたパスワードを渡すことになっています。
プレーンテキストのパスワードではありません。

32
faker

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

これはコマンドラインでハッシュされたパスワードを渡しますが、平文のパスワードは渡しません。

mkpasswdexpectパッケージに付属しています。