web-dev-qa-db-ja.com

Linux-パスワードなしでユーザーを作成(パスワードなしでログインプロンプト)

passwd -dを使用した後、ユーザーがパスワードを持っていないことに言及している記事をたくさん見つけました。一部のシステムでは実際に機能しますが(パスワードを指定せずに非特権アカウントからそれらのアカウントにsuできます)、一部のシステムでは機能しません。 *とemptyの両方を試しましたが、どれも機能しませんでした。

lapsio@pi-car1:~ $ Sudo useradd potato -p '*'
lapsio@pi-car1:~ $ su potato
Password: 
su: Authentication failure
lapsio@pi-car1:~ $ Sudo passwd -d potato
passwd: password expiry information changed.
lapsio@pi-car1:~ $ su potato
Password: 
su: Authentication failure
lapsio@pi-car1:~ $

私はnotemptyパスワード(空の文字列ハッシュで設定できます)について話していることに注意してください。私はnotアカウントのロックについても話している。 sugettyPassword:プロンプトがまったく表示されない状況を予想しています私は可能ですそのアカウントに即座にログインしますパスワードを求められることなくまったく。古いシステムで動作するようです。この動作を制御するシステムレベルの構成はありますか?

それを非常に明確にするために、私は次の動作を期待しています:

lapsio@pi-car1:~ $ su potato
potato@pi-car1:~ $ #I'm potato user here, without being asked for password

ルートからsuする場合と同じように機能しますが、非特権アカウントからもsuできるようにしたい場合を除きます。そして、たとえばArch liveCDのrootアカウントにログインするときと同じように、パスワードプロンプトを表示せずにgettyからログインします。

はい私はそれがひどいセキュリティ慣行であることを知っていますそして私はそのような慣行の結果を知っていますが、それでもそれを行う方法を知りたいです。

1
Lapsio

suのPAM構成は通常/etc/pam.d/suにあり、@includeディレクティブを使用して同じディレクトリ内の他のファイルを参照する場合があります。ある時点で、authで始まり、pam_unix.soに言及する行があります。古いディストリビューションでは、空のパスワードを許可するnullokオプションが含まれている場合があります。最近のディストリビューションは通常nullok_secureを使用します。これは、/etc/securettyにリストされているTTYデバイスの1つを使用して「認証」が行われている場合にのみ空のパスワードを許可します。また、nullokオプションの実装は異なる場合があります。

suがパスワードプロンプトなしで特定のアカウントへのアクセスを確実に許可できるようにするには、次のような行を追加します。

auth sufficient pam_succeed_if.so quiet_fail user = potato

注:user=、およびpotatoの間のスペースは重要です!)

pam_unix.soの前で、suコマンドのみを使用して有効にするには、行を/etc/pam.d/subefore任意の@includeディレクティブに配置する必要があります。またはauthで始まる他の行。

ただし、このようにsuのPAM構成を使用してショートカットを作成することは、PAM構成がyourでどのように機能するかを最初に理解しないと少し危険です。 )不特定のLinuxディストリビューション。使用前に注意深くテストしてください。

1
telcoM