linux実行可能ファイルのt権限


ファイルの最も基礎的な属性の時rwx、読み書きに対応して、実行することができます.
#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を復元する必要があります.