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アカウントのロックについても話している。 su
とgetty
にPassword:
プロンプトがまったく表示されない状況を予想しています私は可能ですそのアカウントに即座にログインしますパスワードを求められることなくまったく。古いシステムで動作するようです。この動作を制御するシステムレベルの構成はありますか?
それを非常に明確にするために、私は次の動作を期待しています:
lapsio@pi-car1:~ $ su potato
potato@pi-car1:~ $ #I'm potato user here, without being asked for password
ルートからsu
する場合と同じように機能しますが、非特権アカウントからもsu
できるようにしたい場合を除きます。そして、たとえばArch liveCDのrootアカウントにログインするときと同じように、パスワードプロンプトを表示せずにgetty
からログインします。
はい私はそれがひどいセキュリティ慣行であることを知っていますそして私はそのような慣行の結果を知っていますが、それでもそれを行う方法を知りたいです。
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/su
before任意の@include
ディレクティブに配置する必要があります。またはauth
で始まる他の行。
ただし、このようにsu
のPAM構成を使用してショートカットを作成することは、PAM構成がyourでどのように機能するかを最初に理解しないと少し危険です。 )不特定のLinuxディストリビューション。使用前に注意深くテストしてください。