linux実行可能ファイルのt権限
3265 ワード
ファイルの最も基礎的な属性の時rwx、読み書きに対応して、実行することができます.
そして、test.cのファイル属性は以下の通りである.
root以外のユーザでプログラムを実行すると、ファイルを開くことができず、rootユーザはスムーズに開くことができる.次に、コンパイルされたa.outに対して、-chown root:root a.out-chmod 4775 a.out
このように、a.outには、a.outを実行するすべてのユーザにa.outが属するユーザの権限(有効な権限)を持たせるs権限がある.誰がa.outを実行するユーザーでも正常に実行できる.しかし、これは危険であり、あなたのプログラムが脆弱性からハッカーに侵入されてroot権限を取得する可能性があるため、setuid(getuid()を使用してプロセスの実際のユーザーIDと有効なユーザーIDを復元する必要があります.
#include
#include
#include
#include
#include
#include
extern int errno;
int main()
{
int fd;
printf("uid study:
");
printf("Process's uid = %d,euid = %d
",getuid(),geteuid());
//strerror
if((fd = open("test.c",O_RDWR)) == -1) {
printf("Open failure,errno is %d :%s
",errno,strerror(errno));
exit(1);
} else {
printf("Open successfully!
");
}
setuid(getuid());
printf("Process's uid = %d,euid = %d
",getuid(),geteuid());
close(fd);
exit(0);
}
そして、test.cのファイル属性は以下の通りである.
-rw-r--r-- 1 root root 0 7 25 10:52 test.c
root以外のユーザでプログラムを実行すると、ファイルを開くことができず、rootユーザはスムーズに開くことができる.次に、コンパイルされたa.outに対して、-chown root:root a.out-chmod 4775 a.out
-rwsrwxr-x 1 root root 9008 7 25 22:17 a.out
このように、a.outには、a.outを実行するすべてのユーザにa.outが属するユーザの権限(有効な権限)を持たせるs権限がある.誰がa.outを実行するユーザーでも正常に実行できる.しかし、これは危険であり、あなたのプログラムが脆弱性からハッカーに侵入されてroot権限を取得する可能性があるため、setuid(getuid()を使用してプロセスの実際のユーザーIDと有効なユーザーIDを復元する必要があります.