一つある設定値ファイルのビット。
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
あるいは、同じプログラムsu
はmount
実際の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
、プログラム自体に組み込まれたロジックで、呼び出し元の実際のアイデンティティを確認します。