От телекома:
If your system is now configured to attempt a legacy-style boot off the hard disk, that would explain the invalid partition table message: the GPT-partitioned disk is indeed invalid for legacy-style booting.
Это решило проблему с моим Latitude E5440.
В частности:
В BIOS я перешел к «Другие параметры» -> «Настройка BIOS» -> «Дополнительные параметры загрузки» и снял флажок «Включить устаревшие дополнительные ПЗУ», и система загрузилась нормально.
The problem is how to check if the user is allowed, since we are root at startup due to setuid and therefore don't know who is the user ?
Здесь вступают в действие понятия uid и эффективного uid. Когда вы запускаете программу с setuid,getuid
по-прежнему возвращает uid «настоящего» пользователя; бит setuid вызывает изменение эффективного uid. Подробности см. вman getuid
и соответствующей документации.
Вы предложили именно то, как работает sudo... По крайней мере, это начало.
Для того, чтобы все действительно работало, нужно сделать гораздо больше, и sudo делает несколько довольно сложных вещей, чтобы убедиться, что это безопасно, а также регистрирует событие. Очень легко написать наивную версию, которую легко обмануть, чтобы она работала, даже когда она не должна работать, и когда пользователь не авторизован для ее использования.