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

유닉스에는 개념이 있다진짜그리고효과적인UID(및 해당 문제에 대한 GID).

setuid 프로그램을 실행하면,효과적인프로세스의 ID는 파일 소유자로 설정됩니다.

mount따라서 이 경우에는효과적인ID 번호 root. 하지만 아직 하나 남았어진짜ID user.

passwd또는 같은 프로그램 sumount실제 ID를 확인하여 누가 실행하고 있는지 확인하고 그에 따라 다른 조치를 취할 수 있습니다. passwd이는 사용자가 비밀번호를 모르더라도 root다른 사람의 비밀번호를 변경할 수 있기 때문 입니다.su

mount사용자가 자신의 파일 시스템을 마운트할 수 있도록 하기 위해만약에그들은에 정의되어 있습니다/etc/fstab 그리고user그들과 관련된 속성을 가지고 있습니다

예를 들어 내 데비안에는 fstab다음이 있습니다.

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

이는 루트가 아닌 사용자가 CD/DVD를 실행 mount /dev/sr0하거나 마운트를 시도할 수 있음을 의미합니다.mount /media/cdrom0

이는 mount프로그램 자체에 내장된 논리로 호출자의 실제 신원을 확인합니다.

관련 정보