GNU/Linux >> Linux の 問題 >  >> Linux

Linux Setuidが機能しませんか?

私はlinuxsuidを学んでいるので、それをテストするために次のコンテンツを含む小さなcプログラムを作成しました

#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 test

test.txt ルートによってのみ変更できるファイルです

-rw-r----- 1 root root 

ユーザーアカウントでテストプログラムを実行すると、100が追加されます。 空のファイルに。
しかし、それは出てきます:

sh:test.txt:Permission denied

なぜですか?

承認された回答:

問題は、関数system()を呼び出すことです。 、シェルを呼び出します/bin/sh 。そしてシェル/bin/sh suidビットが設定されていません。そのため、Permission deniedが出力されます メッセージ。

パーツは純粋なcコードで記述する必要があります:

int main() {
  FILE *fd = fopen("test.txt", "a");
  fprintf(fd, "%s", "100");
  fclose(fd);
  return 0;
}

Linux
  1. Linux での ZFS は動作しますか?

  2. Linux でデバッガーはどのように機能しますか?

  3. root パスワードを変更しても sudo パスワードは変更されない

  1. Linux でスタック割り当てはどのように機能しますか?

  2. Acer Aspire でタッチパッドが機能しない

  3. 自動リピートが機能しない

  1. 「kill-9」が機能しない場合はどうなりますか?

  2. Linux – Arch Linux:Chrooting時にPacmanが機能しませんか?

  3. BashスクリプトのRmコマンドは変数では機能しませんか?