LINUX.ORG.RU

Сообщения psea

 

Монтирование не из под рута (mount() syscall)

Задался вопросом как примонтировать раздел не из под рута. У программы mount есть опция user, которая позволяет монтировать ФС обычным пользователям. Работает эта опция просто, т.к. у файла /bin/mount установлен setuid бит, то /bin/mount просто изменяет euid на 0 и вызывает системный вызов mount(). Возник вопрос "зачем нужен setuid бит /bin/mount? нельзя ли примонтировать ФС без опции user?" стал пробовать: изменил права - rw-rw-rw user,user /dev/hda1 написал программку mymount которая вызывает mount("/dev/hda1", "/home/user/hda1",0,0) вызываю её под user - не работает, вызываю под root - работает. Почему? ведь пользователь user имеет права на чтение файла /dev/hda1 и монтировать он его хочет в свой каталог. man 2 mount дал ответ на вопрос, оказывается "Appropriate privilege (Linux: the CAP_SYS_ADMIN capability) is required to mount and unmount file systems." Хорошо на тебе эту капабилити, выполнил "root# setcap cap_sys_admin+ep /home/user/mymount" и все заработало, пользователь user получил возможность монтировать /dev/hda1. потом сменил права для /dev/hda1 на такие: rw-rw---- root,root /dev/hda1. запускаю свой mymount и раздел без проблем монтируется! как так ведь пользователь user не имеет права на чтение /dev/hda1! т.е. получается читать /dev/hda1 не могу, а вот монтировать (при наличии capability CAP_SYS_ADMIN) могу. Уважаемые разъясните пожалуйста так оно и должно быть? или я где-то что-то упустил из виду?

psea
()

Пути повышения привилегий

Hello All!

Я новичек в unix и меня мучает один вопрос: как можно изменить effective uid процесса. например стать root'ом. Единственный (?) способ который все мы знаем это запуск-exec() set-uid-файл, владельцем файла соответственно должен быть пользователем которым мы хотим стать (root в частности что бы стать кем угодно) далее выполняем seteuid() и готово.

Это единственный способ повысить свои полномочия (изменить euid процесса)? Если так то избавиться от set-uid файлов нет никакой возможности?

psea
()

RSS подписка на новые темы