• 締切済み
  • 困ってます

パスワード変更

お世話になります。 OS:solaris9 パスワード管理上、定期的にユーザのパスワードの変更を実施しようと思うのですが、passwdコマンドで数十件のユーザを毎月変更するのは手間なので、shで修正できれば と考えています。 しかしshで修正するとnew-passwordとre-passwordのプロンプトが出力される為、そこで処理がとまります。 何とかsh内部でプロンプトへ自動入力できる様にならないのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数772
  • ありがとう数19

みんなの回答

  • 回答No.5
  • noino
  • ベストアンサー率0% (0/1)

#1に補足します。 似たような環境に同じアカウント/パスワードを設定する場合、passwd/shadowの情報部分をコピーしてます。 このように同じパスワードであれば直接書き換えられると思いますが、異なる場合は難しいでしょうね。いくつかパタンが決まっているならそれぞれのデータを用意し、書き換えられるかも知れませんが。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。ちょっと出張でしばらくネットの確認ができなくて、お礼が遅くなりすみませんでした。 結局、開発機でC言語でスクリプトを組み、passwdファイルを直接書き換えshにてftpする仕組みで対応するようにしました。 色々ご指導していただき感謝しています。ありがとうございました。

関連するQ&A

  • linuxのパスワード変更について

    LINUXがNISクライアントの場合ですが、通常NISパスワード変更はyppasswdで行いますすが、passwdコマンドでNISのパスワードの変更を行わせることは可能なのでしょうか。SOLARISでは、うまくいったのですが。。誰か試みた方がおられましたら教えていただけないでしょうか。

  • perl CGIでUNIXパスワード変更

    お世話になっています。 perlCGIを使用して、Linuxのパスワード変更をすることは可能でしょうか? どう書いたら良いかご存じの方いらっしゃいましたら教えてくださいm(_ _)m Linuxのコマンドラインから操作する場合は、 $ passwd $ (current)UNIX password:現在のパスワード $ NEW password:新パスワード $ Retype new password:新パスワード (↑の現在のパスワード、新パスワードはWEBから入力です。) の操作なので、system関数を使用して出来ないものかと思ったのですが…。 どうしたものでしょう…。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • NISのパスワード変更について

    NISのパスワードを変更する際に yppasswd ではなく passwd コマンドにて NIS に登録されているユーザのパスワードを変更することは可能なのでしょうか。 /etc/nsswitch.conf ファイル等を変更することでこのようなことは実現できるのでしょうか。 ご存知の方いましたら教えて頂けないでしょうか。

  • 回答No.4
  • gaktank
  • ベストアンサー率65% (23/35)

#3です。 本番機なのでインストール不可なんですね。 実際問題として、シェルのみでpasswdコマンドの介入待ちを自動入力する方法はありません。 ツールのインストール不可ということは、自動化しようとしているパスワード変更シェルスクリプトもインストール不可と察しますので、おそらく資材持込みとして作業(FDやCD-Rにスクリプトを入れておいて、そこから実行)するのでしょうね。 なので、その資材にスクリプトとexpect をまるごと入れるのはどうでしょうか。 また、十数台のマシンのパスワードを変更する場合、私も#1さんの方法でやっています。1台目のユーザをパスワード変更して、他のサーバに/etc/shadowの該当する行をコピーします。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。ちょっと出張でしばらくネットの確認ができなくて、お礼が遅くなりすみませんでした。 結局、開発機でC言語でスクリプトを組み、passwdファイルを直接書き換えshにてftpする仕組みで対応するようにしました。 色々ご指導していただき感謝しています。ありがとうございました。

  • 回答No.3
  • gaktank
  • ベストアンサー率65% (23/35)

expect を使えば可能です(やり方は参考URLに)。 ただし、Solarisにはデフォルトで入っていなかったと思いますので、下記サイトあたりから入手してインストールする必要があります。 http://sunsite.tus.ac.jp/sun/solbin/

参考URL:
http://www.math.kobe-u.ac.jp/~kodama/tips-expect.html

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • Tacosan
  • ベストアンサー率23% (3656/15482)

passwd は標準入力から読むわけではないので, sh だけでは passwd に入力を与えることはできないはず. OpenSSL とか入ってれば openssl passwd を使えば暗号化したパスワードが得られるので, これを使って /etc/shadow を変更すればいい... のかなぁ?

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • noino
  • ベストアンサー率0% (0/1)

パスワードを自動で変更する位なら普段使わないアカウントはロックし、必要なアカウントのみパスワード期限を区切ってはいかがでしょうか。 スクリプトでパスワード変更するのなら、パスワードを管理しているファイルを直に書き換える方法があります。多くのマシンに同じアカウントを作成する場合に使ってます。このファイルですが、パーミッションを間違えるとセキュリティ上の問題が発生しますのでご注意を。

共感・感謝の気持ちを伝えよう!

質問者からの補足

返信ありがとうございます。 パスワード管理しているファイルとの事ですが、shadowファイルの事でしょうか? 確かに新規のユーザを作る場合は、passwdファイルとshadowファイルに追加し、パスワードは個人で設定しても らう事は可能ですが、今回は既存のユーザに対し、パスワードは、 こちらで作成したものに強制的に変更したいと考えています。 その場合は、やはりスクリプト内で、passwdコマンドを実行し プロンプトに対し、値を挿入してやるしかないのかな?と思うのですが、 挿入する方法がわかりません。 ツールを使えば可能な事は知っているのですが、本番機なので ツールのインストールができない状況で、shコマンドでなんとか ならないのかな?と考えています。

関連するQ&A

  • パスワードの変更

    RedHat7.2Jを利用しております。 あるユーザ(rootではありません)のパスワードをpasswdコマンドで変更しようとしたのですが、新パスワードを入力すると it is based on a dictionary word と出てきてしまい受け付けてくれません。 何度かトライすると最後は passwd:Authentication toke manipulation error となって終了してしまいます。 新パスワードはある固有名詞なので一般的な名詞ではないですし、以前使っていたものでもないはずなのですが、いずれにせよ強制的に新パスワードを受け付けさせる方法は無いものでしょうか?

  • AIX/HP-UXでパスワード変更シェルを作成したい

    AIX/HP-UXで一括でパスワード変更を実行するシェルを 作成したいと考えております。 (最終的には複数サーバの複数ユーザのパスワードを  一括変更したい) そこで、AIXで以下の様なシェルを作成したのですが、 パスワード変更することができませんでした。 -------------------------------------- PASS=$1   "新パスワード USER=$2   "パス変するアカウント名 passwd $USER sleep 5 $PASS sleep 5 $PASS -------------------------------------- passwdコマンド自体は実行されるのですが、 その後の新パスワードが入力されておらず、 passwdコマンドタイムアウト後に新パスワードが 実行され、"新パスワードの文字列"が見つかりません。 となってしまいます。 インターネット等で検索した結果、linuxであれば expectコマンドを使用して、passwdコマンドを実行した 際に出力される「新パスワード:」を待ってから 入力すればよいということがわかったのですが、 linuxでexpectコマンドに相当するものを、AIXでは 見つけることができませんでした。 AIX/HP-UXにおいて、シェルスクリプトにてパスワード 変更を実現する方法をご存知の方がいましたら、 教えてください。 よろしくお願いします。

  • rootパスワードの変更

    どうも、izumoです。 えーっと、turbolinux6.1を使用しております。 質問なんですが、rootのパスワードを変更しようと思い passwd root としたところ、古いパスワードでも、新しいパスワードでもログインできてしまいます。 コマンドの使用方法を間違えたのかと思い、もう一台の方で passwd としてみても、同じなんです。 パスワードを一つにする方法があれば、教えてください。 再インストールは、ほぼ不可能なんです。 よろしくお願いします

  • Sambaのパスワード同期

    sambaとunixのパスワードを同期させようと思い本で調べました。そのなかで理解できない所があったので教えてください。 [global] passwd program=/usr/bin/passwd %u    ←(1) passwd chat=*new*password* %n/n *new*password* %n/u *successfully* ←(2) 右側の値の文法の意味がわかりません。教えてください。(1)では、%uの意味がわからなく(2)では全体的にわかりません。 よろしくお願いします。

  • UNIXのpasswd

    UNIXユーザのパスワードを変更するAPIを知りませんか?passwdコマンドはTTY入力が必要なのでNGです。 アプリケーションの中からパスワード変更したいのですが該当するAPIをご存じの方、教えてください。 OSはSolarisです。

  • パスワード変更時について

    ユーザーIDとパスワードの情報を入力したのものがDBにあります。 ------------------- テーブル:accounts name ユーザーID password パスワード ------------------- ■やりたいこと 1)ユーザーにパスワードを変更させるときに、[ユーザーID]、[変更前のパスワード][変更後のパスワード]を入力させます。 2)入力された[変更前のパスワード]とDBのパスワードが一致すれば[ユーザーID]の列のパスワードを[変更後のパスワード]に変更する。

    • ベストアンサー
    • PHP
  • postgresのパスワードの変更?

    PHP+PostgreSQLで開発しているのですが、PostgreSQLのパスワードがわかりません。 まず、PostgreSQLのユーザー(postgres)を作成して、パスワードも設定しinitdbでデータベースを初期化しDBを作っていました。 そしてそのDBを作っていた人が突然夜逃げしてしまったのでpostgresのパスワードがわからなくなってしまい、そこでroot権限でパスワードをpasswdコマンドで変更したのですがDBにpostgresでアクセスできません。 [admin admin]$ su - postgres Password: [postgres pgsql]$ psql -d test Password:←ここでは新たに変更したパスワードを入力しました psql: FATAL 1: Password authentication failed for user "postgres" となります。initdb後にpostgresのパスワードを変更した場合は前に設定されていたパスワードを入力しなければならないのでしょうか? またパスワードを調べる手立てはないでしょうか? List of databases Name | Owner | Encoding -----------+----------+----------- test | postgres | SQL_ASCII template0 | postgres | SQL_ASCII template1 | postgres | SQL_ASCII DBの中はこのようになっています。 宜しくお願いします。

  • ユーザアカウントのパスワードをリモートで変更したい

    お世話になります。 サーバの管理者をしていますが、セキュリティの観点から 定期的にサーバユーザアカウントのパスワードを変更するように指示されています。 NT4.0サーバなのですが、離れた施設に行って実施するのも面倒なので、 DOSコマンドで、リモート処理にて、パスワードを変更したいと思っています。 具体的な例文(例えば、Server01のUserNo01のパスワードを変更したい) をまじえて変更方法を教えて下さい。 また、DOSコマンドでは無理ですという回答や、他の簡易な方法も参考に教え てください。 どうぞよろしくお願いいたします。

  • PerlでUNIXのコマンドとパスワード入力

    ブラウザでユーザー名とパスワードを入力して passwdコマンドでパスワードを変更するプログラムを作っています。 プログラム中で $result=system("passwd $user"); と実行すると、マシンは New UNIX password: の状態になって、パスワードの入力を待っていると思うのですが、 この状態でどうやってパスワード$passをマシンに送ったらいいのか わかりません。キーボードから読み取るのではなく、 プログラムですぐにパスワードを送りたいのです。 標準入力にフラッシュする?というのでしょうか。 system($pass); としてもうまくいきません。 OSはFedoraCoreで、スクリプトはルート権限で動いています。 どうかご教示ください。

  • qmail-vidaでパスワード変更出来なくって困ってます。

    qmail-vidaでパスワード変更出来なくって困ってます。 現在の状況は以下の通りです。 1.実ユーザabcがバーチャルドメインabc.comを所有している 2.abc.comの仮想ユーザxxx@abc.comのパスワードは   abc% /var/qmail/bin/vida-passwd -c -u xxx   で変更出来る。 3.バーチャルドメインを所有していない実ユーザbcdのパスワードは   bcd% /var/qmail/bin/vida-passwd -c   で変更出来る。 4.実ユーザabcのパスワードが   abc% /var/qmail/bin/vida-passwd -c   で変更出来ない。 4番目で困ってます。 どのようにしたらいいでしょうか?