ユーザーのアカウントが無効になっているかどうかを教えてくれる非rootシェルコマンドはありますか?
LOCKINGとDISABLEDには細かい違いがあることに注意してください。
!
または*
または!!
を追加する場所です。パスワードをシャドウするLinuxシステムでは、このマーカーフラグは/ etc/passwdではなく/ etc/shadowに配置される場合があります。パスワードのロックは、ユーザー名のアカウントをロックするためにpassword -l username
(rootとして)を介して(シェルプロンプトで)実行でき、オプション-u
を使用するとロックが解除されます。chage -E 0 username
を使用して実行できます。 -1に設定すると、有効期限の使用が無効になります。ログインプロセスが提供されたパスワードを使用して保存されたハッシュに対して正しくハッシュするのを防ぐためのロックの効果(接頭辞付きのマーカー文字がハッシュの有効な出力文字ではないため、したがって、可能な入力を使用して、それに一致するハッシュを生成することはできません)。無効にすると、アカウントの有効期限がすでに過ぎているため、プロセスがアカウントを使用できなくなります。
私の状況では、ユーザーがまだログインできる可能性があるため、ロックの使用は十分ではありません。 ssh認証トークンを使用すると、そのユーザーの下のプロセスは引き続き他のプロセスを生成できます。したがって、ロックされているだけでなく、有効または無効になっているアカウントがあります。アカウントを無効または有効にする方法はすでにわかっています。上記のように、ルートアクセスとchage
の使用が必要です。
私の質問を繰り返すと、特定のユーザーのこのアカウントの有効期限情報のステータスを出力できるroot権限なしで実行できるシェルコマンドはありますか?
それが役立つ場合、これはRed Hat Enterprise5.4システムでの使用を目的としています。出力はJavaプロセスに返され、必要に応じて出力を解析したり、戻りコードを利用したりできます。
いいえ、ありません。非特権ユーザーとして、そのようなユーザーに/ etc/shadowへのアクセスを許可することも潜在的なセキュリティリスクになります。最新のすべてのLinuxディストリビューションでは、セキュリティホールを排除するために、パスワードハッシュと追加のアカウント情報が/ etc/passwdから/ etc/shadowに移動されたと思います。システムがシャドウパスワードを使用している場合は、「!」パスワードハッシュの先頭には、/ etc/shadowにのみ表示および存在するため、通常の非特権ユーザーはアクセスできません。
/etc/sudoers
に以下を追加できます。
%admin ALL = NOPASSWD: /usr/bin/chage -l *
これにより、admin
グループの誰もが、パスワードの入力を求められることなく、次のようなコマンドを実行できるようになります。
Sudo chage -l username
Cronジョブなどからこれを実行する場合は、/etc/sudoers
に以下を追加する必要があります。
Defaults:%admin !requiretty
(/etc/sudoers
を直接編集しないでください。代わりに、Sudo visudo
を実行してください)