setuidをマウントで使用できないのはなぜですか?

setuidをマウントで使用できないのはなぜですか?

一つある設定値ファイルのビット。

user@host:~$ ls -l /bin/mount
-rwsr-xr-x 1 root root 40152 May 26 19:31 /bin/mount

オペレーティングシステムで「マウント」を実行するには、なぜルートアクセスが必要なのですか?

user@host:~$ /bin/mount /dev/sdb1 /mnt
mount: only root can do that
user@host:~$ sudo /bin/mount /dev/sdb1 /mnt
user@host:~$ lsblk  | grep sdb

sdb      8:16   0  102M  0 disk
└─sdb1   8:17   0  101M  0 part /mnt

私のもの/etc/fstab

# / was on /dev/sda1 during installation
UUID=026bb2d9-1c0c-4163-85a1-f83b2221eb34 /               ext4    errors=remount-ro 0       1

# swap was on /dev/sda5 during installation
UUID=aec6b039-13b1-4568-abb1-2be1f3429325 none            swap    sw              0       0

答え1

Unixには概念がある本物そして効果的なUID(およびその問題のGID)。

setuidプログラムを実行すると、効果的なプロセスのIDはファイル所有者に設定されます。

mountしたがって、この場合効果的なID番号root。でもまだ一つ残ってる本物ID user

passwdあるいは、同じプログラムsumount実際のIDをチェックして誰が実行しているかを確認し、それに応じて他のアクションを取ることができます。passwdこれは、ユーザーがパスワードを知らなくてもroot他のユーザーのパスワードを変更できるためです。su

mountユーザーが自分のファイルシステムをマウントできるようにするためもし彼らはに定義されています/etc/fstab そしてuserそれらに関連する属性があります

たとえば、私のDebianにはfstab次のものがあります。

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

これは、root以外のユーザーがCD / DVDを実行しmount /dev/sr0たりマウントしたりできることを意味します。mount /media/cdrom0

これはmount、プログラム自体に組み込まれたロジックで、呼び出し元の実際のアイデンティティを確認します。

関連情報