私は主にメールサーバーとして使われるマシンを持っています。
$ uname -a Linux myhost.com 2.6.32-279.19.1.el6.x86_64#1 SMP 12月水曜日 19 07:05:20 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux
そして私は実際にはマシンにログインしていない(しかし認証とメールの取得のためにそれを使っている)ユーザーが自分のパスワードを変更できるようにしたいと思います。 / usr / bin / passwdを/ etc / shellsに入れて(したがってpasswdコマンドは有効なシェルになります)、次のようにユーザーのシェルエントリを変更します。
someuser:x:557:557:Some User:/home/someuser:/usr/bin/passwd
それから、もし彼らがホストにSSH接続すれば、彼らはこのような何かを得るでしょう:
$ ssh myhost.com
someuser@myhost.comのパスワード:< 現在のパスワードを入力してください >
最終ログイン:2013年9月25日水曜日16:07:35投稿者some-ip
ユーザーsomeuserのパスワードを変更します。
誰かのパスワードを変更する。
(現在の)UNIXパスワード:< 現在のパスワードをもう一度入力してください >
新しいパスワード:< 新しいパスワードを入力してください >
新しいパスワードを再入力してください:< 新しいパスワードをもう一度入力してください >
-passwd:すべての認証トークンが正常に更新されました。
myhost.comへの接続が閉じられました。
それは素晴らしい仕事をします...しかし、それは安全ですか?それを悪用して本物のシェルに侵入する方法はありますか?
ありがとう。
P.S私の環境では、ユーザーがすでにsshを持っていると仮定するのが合理的です - しかし、パスワード変更のための代替手段が単に「より良い」のであれば、私はそれを聞きたいです:)
passwd: bad argument -c: unknown option
。言い換えれば、それは動作しません。