次の内容の「ルートファイル」があります。
$ cat root-file
#!/bin/bash
echo $EUID
id
このファイルのアクセス許可は次のとおりです。
$ ls -l root-file
-rwsr-sr-x 1 root root 15 Nov 18 02:20 root-file
このファイルには set-user-id ビットが設定されているため、このファイルを実行すると、root 以外のユーザーが実行した場合でも有効な uid が 0 として表示されることが予想されます (set-user-id ビットにより、ファイルの所有者 (この場合は root) の実効ユーザー ID で実行されるプロセス)。ただし、代わりに、非ルート シェルから「root-file」を実行すると、次の出力が得られます。
$ ./root-file
1000
uid=1000(chanakya) gid=1000(chanakya) groups=1000(chanakya),4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare)
このファイル/スクリプトは有効なユーザー ID 0 で実行されていません。なぜですか?