Pourquoi setuid ne fonctionne-t-il pas avec mount?

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.