• 締切済み

UNIXのpasswd

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

みんなの回答

  • hohihohi
  • ベストアンサー率34% (23/66)
回答No.4

一番単純に考えるなら getpwent() で /etc/passwd を読んで、crypt() などを使って 作ったパスワード文字列で適当に編集したあと putpwent() する、という流れかと思います。man で調べるといろいろわかるとおもいます。

回答No.3

xpasswd が最も便利です。 http://www.bento.ad.jp/~fumiya/ ・・・といいたいのですが Not found になってしまってます(;;) ・・・9月3日にはあったのに(-_-) 最新版ではないかとおもいますが、必要であれば、参考URLからDLしてください。 標準入力を用いて、パスワードの設定ができます。

参考URL:
http://www.daiba.cx/xpasswd/
mimura
質問者

補足

ありがとうございます。 早速DLしてみます。

  • nekomilk
  • ベストアンサー率24% (20/83)
回答No.2

poppassdというのが、あります。 ソケットで、パスワードを変更できます。

mimura
質問者

補足

ありがとうございます。 やってみます。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

弱気な回答で申し訳ありませんが、 passwdコマンドのソースコードを眺めてみるのはいかがですか? FreeBSDやLinuxのものでも、参考にはなると思います。 popen()関数でpasswdコマンドを実行してあげれば、入出力は FILE *を経由してデータの受け渡しができるはずです。 P.S. アプリケーションってSolaris上のモノですよね??? WindowsアプリからSolaris上のパスワードを変更するのではないですよね?

mimura
質問者

補足

早速の回答ありがとうございます。 アプリケーションはSolaris上です。 popen()ですか、やってみます。

関連するQ&A

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

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

  • vipw 起動中でも passwd コマンドは正常終了する。何故?

    vipw 起動中でも passwd コマンドは正常終了する。何故? OS:CentOS5.4 # vipw をrootが実行中でも、他ユーザが passwd コマンドを発行すると何事もなくパスワード変更ができてしまいます。 別プロセスで # vipw や # useradd foo などはロックされて拒否されますが、passwd コマンドはOK。これは正常な仕様ですか?

  • UNIX

    UNIXのコマンドの勉強をしようと思うのですが、無料のOSでどれがいいか教えてください。FreeBSDかSolarisにしようかと思うのですが、できればCUIが良いです。よろしくお願いします。

  • パスワード変更

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

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

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

    • ベストアンサー
    • CGI
  • リストファイルのフォーマット変換

    お世話になります。 Linuxのコマンドを使って以下のようなリスト一覧を作成したいと考えています。 <作成したいリスト> -------------------------------------------------------------------- PASSWD="パスワード" <コマンド> <ユーザ名> PASSWD="パスワード" <コマンド> <ユーザ名>  PASSWD="パスワード" <コマンド> <ユーザ名> PASSWD="パスワード" <コマンド> <ユーザ名> -------------------------------------------------------------------- 以下ユーザ名とパスワードの書かれた一覧を目的のフォーマットに変更する事は可能でしょうか。Linuxのコマンドを組み合わせて行いたいと考えていますが、難航しています。 <リスト一覧> -------------------------------------------------------------------- testuser1,passwd1 testuser2,passwd2 testuser3,passwd3 testuser4,passwd4 -------------------------------------------------------------------- どうぞ宜しくお願い致します。

  • passwdにリダイレクトする方法

    会社で使用しているプログラムで20項目ほどを入力するとCFに状態監視用の制御OSとしてlinuxを書き出してくれるものがあります。 その20項目を打ち込むのが大変なのでリダイレクトでテキストファイルから入力したいと思っています。 半ばうまくいったのですが、パスワード入力の部分のみうまくいきません。passwdを呼び出しているようですがうまく流れません。 実際、passwdに直接テキストからリダイレクトしてもやはり同じ症状でした。 ご存知の方いらっしゃったら教えていただけますでしょうか。 よろしくお願いいたします。

  • Windows、UNIXのユーザー一覧取得

    WindowsやUnixのサーバーデスクトップへログオンせずに、ユーザー一覧を取得したいのですが、やり方を教えて下さい。 もちろん、administratorやrootのID、パスワードは知っているという前提です。 net userコマンドやetc/passwdの参照では、どうしてもデスクトップからログオンしなくてはならず、操作ミスなどでサーバーになんらかの影響を与える可能性があるため、直接ログオンせずに取得したいです。 ログオン中のユーザー一覧ではなく、全てのユーザー一覧です。

  • Passwdファイルのパーミッションが

    Red-Hat Linux7.3のサーバなんですが、 一般ユーザーで他のユーザーのパスワードを変えるなど、ユーザー情報を変更しようとしたら、 普通は「権限が無いので変更できませんでした」といった旨のエラーメッセージが返ってくるだけだと思うのですが、 /etc/passwdファイルのパーミッションが644から600に変わってしまいました。 chmodで644に再度設定しても、一般ユーザーで他のユーザー情報を変えようとすると、600に戻ってしまいます。 もちろん、一般ユーザーで他のユーザー情報を変える事が誤った動作で、 できない事だと言うのは分かっているのですが、たまたま誤ってやってしまったら、 このような現象が発生してしまいました。 passwdファイルは重要なファイルなので、パーミッションが自動的に変わってしまうのが気になります。 正常な動作なのでしょうか。 それとも何が原因なのでしょうか。

  • 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において、シェルスクリプトにてパスワード 変更を実現する方法をご存知の方がいましたら、 教えてください。 よろしくお願いします。