ネットワーク用のほぼ完全なイディオスリムなコンフィギュレータと、Linux上で動作する組み込み機器用のものがあります。アプリケーションはrootで実行すると問題なく/ etc/network/interfacesに保存されますが、標準ユーザーが実行すると "segmentation fault"が返されます。 straceのが返さ:ルート以外のアプリケーションで/ etc内の読み取り専用ファイルを変更できるようにする
オープン( "の/ etc /ネットワーク/インタフェース"、O_WRONLY | O_CREAT | O_TRUNC、0666)= -1 EACCES(許可拒否) --- SIGSEGV {si_signo = SIGSEGV、si_codeに= SEGV_MAPERR、 si_addr = 0} ---
どのようにすれば誰でも起動でき、/ etc/network/interfacesに書き込むことができますか?ファイルに保存するための
コード:
FILE *saveFile;
saveFile = fopen("/etc/network/interfaces","w");
// loopback
fprintf(saveFile, "auto lo \niface lo inet loopback\n\n");
// eth0
fprintf(saveFile, "auto eth0\niface eth0 inet static\n\taddress %s\n\tnetmask %s\n\tgateway %s\n",
address,netmask,gateway);
fclose(saveFile);
:なぜドン;あなたは 'はfopen()'最初の成功のためのチェックをt? –
'chmod a + w/etc/network/interfaces'またはプログラムsuid rootを –
にするだけでrootアクセスが必要です。 root以外のユーザーには、インターフェース情報の変更を許可してはいけません。 – Downvoter