OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ファイルの書き換え

  • すぐに回答を!
  • 質問No.199899
  • 閲覧数83
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 75% (3/4)

c言語でunixにおけるパスワード変更のプログラムを作っています。
etc/shadowのパスワードの部分を書き換えたいのですがいまいちファイルの取り扱いがよくわかりません。

ファイルの中のユーザを検索して、ファイルの一部分を書き換えるのには
どうしたらよいのでしょうか?

よろしくおねがいします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

演習問題としてですか?

もし実用的にそれをしたいというなら、ファイルのロックの問題とかもありま
すし、どんなセキュリティホールを作ってしまうかわからないので、独自に作
るのはやめた方が無難だと思います。それよりは、passwd や chpass を外部
プログラムとして呼び出すように設計する方がいいでしょう。

演習問題としてなら、UNIXでは、ファイルのある部分(10byte程度)だけ変更
するというのは、基本的には困難です(というより無理です)。全体をメモリ
に読み込んで、必要な部分を変更して、全体を書き出すということになるでしょ
う。

メモリに読み込む際には、1行ずつ読み、(動的に確保した)別々の配列に入
れ、先頭が該当するユーザ名なら、パスワード部を適当に変更します。変更す
るには、パスワードの暗号化アルゴリズムとして、何を使うかを決めた上で、
暗号化関数を呼びます。通常は crypt でいけるでしょう。

ただし、異常な長さの行があるときとか、異常な行数とか、最後の行に改行が
ないとか、フォーマットが変とか、そういうのに完全に対応するには、ちょっ
とした経験がいると思います。
お礼コメント
yoyomi

お礼率 75% (3/4)

ありがとうございます。

演習問題としてやります。
後半でおっしゃっていただいているのを
試してみたいと思います。

で、できたら前半のも・・・(無理かも・・・)

なにぶん経験が浅いものですから・・・(^-^;

がんばってみようとおもいます。
本当にへんとうありがとうございました。
投稿日時 - 2002-01-17 20:46:46
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル10

ベストアンサー率 66% (103/155)

UNIX処理系によってはPAMという枠組みが用意されていて 「pam_」で始まる名前の関数で統一的に扱えるようになっているものがあります。 (最近の、linux、Solaris、FreeBSDなどで使えるようです。) PAMがない場合は、前の方がおっしゃっている通りだと思います。 ...続きを読む
UNIX処理系によってはPAMという枠組みが用意されていて
「pam_」で始まる名前の関数で統一的に扱えるようになっているものがあります。
(最近の、linux、Solaris、FreeBSDなどで使えるようです。)

PAMがない場合は、前の方がおっしゃっている通りだと思います。
お礼コメント
yoyomi

お礼率 75% (3/4)

PAMですか・・・
初めて聞きました。
調べないとだめですね。調べてみます。

ありがとうございました。
投稿日時 - 2002-01-17 20:47:59


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ