Wikipedia setuid 例: 4700

Wikipedia setuid 例: 4700

私が読んでいる内容はWikipediaのsetuid例の一つ次のように:

4700

「root」が所有する実行ファイルのSUID

「tails」というユーザーがファイルを実行しようとしました。ファイルの所有者は「root」で、所有者の権限は実行可能なので、ファイルはrootとして実行されます。

SUIDがないと、グループまたは他のユーザーがファイルに対する権限を付与できないため、ユーザー「tails」はファイルを実行できません。基本的な使い方はバイナリで見ることができます/usr/bin/passwd

私は理解できません。ユーザーがファイルやグループの所有者ではなく他の権限を使用できないため、どのようにファイルを「tails」実行しますか?

私はこのシナリオを再現しようとしましたが、実際には次のようになります。

$ su -c 'install -m 4700 /dev/null suidtest'
$ ls -l suidtest
-rws------ 1 root root 0 21 dec 07:48 suidtest*
$ ./suidtest
bash: ./suidtest: Permission denied

権限がある場合にのみこの機能を使用できます4755。また、ウィキペディアの例で言及されているデフォルトの使用()には/usr/bin/passwd実際に4755権限があります。

この例は正しいですか?私が逃した部分はありますか?それともバグですか?

ベストアンサー1

あなたは正しいです。 Wikipediaの記事は間違っていました。以下の例をご覧ください。

$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd
$ sudo cp /usr/bin/passwd /tmp/
$ cd /tmp
$ ls -l passwd
-rwxr-xr-x 1 root root 30768 Dec 21 07:43 passwd
$ sudo chmod 4700 passwd
$ ls -l passwd
-rws------ 1 root root 30768 Dec 21 07:43 passwd
$ ./passwd
bash: ./passwd: Permission denied
$ sudo chmod 4701 passwd
$ ./passwd 
Changing password for user vagrant.
Changing password for vagrant.
(current) UNIX password: 
$ 

おすすめ記事