私はLinuxシステムコールを使ってユーザーパスワードを変更するためのCプログラムを書こうとしています。 /etc/passwd
と/etc/shadow
ファイルを使用しようとしましたが、パスワードが暗号化されているため問題があります。これを解決する手助けができますか?Linuxのシステムコールを使用してCでユーザパスワードを変更するにはどうすればよいですか?
無効メイン(int型のargc、char型** ARGV){
uid_t uid;
struct passwd *pw;
uid = getuid();
if (argc > 1)
pw = getpwnam(argv[1]);
else
pw = getpwuid(uid);
//system("passwd");
//printf("%i",execl("/usr/bin/passwd","passwd",pw->pw_name)); //here I tried to use execl but it returns error
}
は、私が( "passwdの")システムを使用するが、私は私の先生がそれを受け入れるだろうとは思いません。残りの部分では、私はちょうどgetpwを理解しようとしていた...もの、それは重要ではない。
何を試しましたか?あなたのコードは何ですか?これを行うための標準的なシステムコールはありません。ロジックは 'passwd'プログラムと1つまたは2つの他のプログラムにカプセル化されています。 (あなたが必要とするシステムコールは、 'passwd'プログラムを実行する' system() 'ステートメントです)。 –
" passwd "は十分です。完全な理解なしにこれらのファイルを扱うのは危険です。そうしないと、セキュリティが損なわれる可能性があります。また、私は自分の "passwd"コマンドのユースケースを見ません。 –