Il y a un bit setuid sur le file.
user@host:~$ ls -l /bin/mount -rwsr-xr-x 1 root root 40152 May 26 19:31 /bin/mount
Pourquoi le operating system nécessite-t-il un access root pour exécuter le «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
Mon /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
Unix a le concept d'UID réels et efficaces (et GID d'ailleurs).
Lorsque vous exécutez un programme setuid, l'ID effectif du process est défini sur le propriétaire du file.
Donc, dans le cas de mount
vous avez un ID de root
effectif . Mais vous avez toujours un vrai identifiant d' user
.
Les programmes tels que passwd
ou su
ou mount
peuvent vérifier l'identité réelle pour voir qui l'exécute et agir différemment en conséquence. Pour passwd
cela permet à l'user root
de changer le mot de passe d'un autre user. pour su
il permet de changer d'user sans connaître le mot de passe.
Pour mount
il permet aux users de monter leurs propres filesystems s'ils sont définis dans /etc/fstab
et que l'atsortingbut user
associé à eux
par exemple dans mon fstab
Debian j'ai:
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Cela signifie qu'un user non root peut exécuter mount /dev/sr0
ou mount /media/cdrom0
et il tentera de monter le CD / DVD.
C'est la logique embeddede dans le programme de mount
lui-même; il vérifie l'identité réelle de l'appelant.