Какой механизм запрещает любому пользователю получать доступ к файлам других пользователей через root?

В многопользовательской системе, которая защищает любого пользователя от доступа к другим файлам пользователей через root? В качестве контекста вопрос основан на моем понимании следующим образом:

Существуют две команды, относящиеся к привилегиям root, sudo и su . С помощью sudo вы не становитесь другим пользователем (включая root). sudo имеет предварительно определенный список одобренных команд, которые он выполняет от вашего имени. Поскольку вы не становитесь пользователем root или другим пользователем, вы просто подтверждаете свой собственный пароль.

С su вы фактически становитесь пользователем root или другим пользователем. Если вы хотите стать пользователем Bob, вам нужен пароль Боба. Чтобы стать root, вам нужен пароль root (который будет определен в многопользовательской системе).

ref: howtogeek.com :

su переводит вас в корневую учетную запись пользователя и требует пароль учетной записи root. sudo запускает одну команду с привилегиями root – она ​​не переключается на пользователя root.

а также

Если вы выполните команду su bob, вам будет предложено ввести пароль Боба, и оболочка переключится на учетную запись пользователя Bob; Подобное описание на computerhope.com

tecmint.com :

'sudo' является корневым двоичным setuid, который выполняет корневые команды от имени авторизованных пользователей

Если вы станете root, у вас будет доступ ко всему. Любой, кто не имеет права доступа к учетной записи другого пользователя, не получит пароль root и не будет иметь определения sudo разрешающие его.

Это все имеет смысл, пока вы не посмотрите на что-то вроде этой ссылки , которая представляет собой учебник по использованию sudo -V а затем sudo su - стать root, используя только ваш собственный пароль.

Если какой-либо пользователь может стать root без пароля root, какой механизм защищает пользовательские файлы от несанкционированного доступа?

Основное различие между sudo и su – это механизм, используемый для аутентификации. С помощью su пользователь должен знать пароль root (который должен быть строго охраняемым секретом), а при использовании sudo пользователь использует свой собственный пароль. Чтобы остановить всех пользователей, вызывающих хаос, привилегии, выполняемые командой sudo могут, к счастью, быть настроены с использованием файла /etc/sudoers .

Обе команды запускают команду как другой пользователь, довольно часто root .

sudo su - работает в примере, который вы указали, поскольку пользователь (или группа, в которой пользователь является членом) настроен в /etc/sudoers . То есть, им разрешено использовать sudo . Вооружившись этим, они используют sudo для временного получения привилегий root (который используется по умолчанию при отсутствии имени пользователя) и как root запускает другую оболочку ( su - ). Теперь у них есть root доступ, не зная пароль root .

И наоборот, если вы не разрешаете пользователю использовать sudo тогда они не смогут sudo su - .

У Distros обычно есть группа (часто называемая wheel ), членам которой разрешено использовать sudo для запуска всех команд. Удаление их из этой группы будет означать, что они не могут использовать sudo вообще по умолчанию.

Строка в /etc/sudoers которая делает это:

 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL 

Хотя удаление пользователей из этой группы сделает вашу систему более безопасной, это также приведет к необходимости (или других системных администраторов) выполнять другие административные задачи в системе от имени ваших пользователей.

Более разумный компромисс позволит настроить sudo чтобы дать вам более тонкий контроль над тем, кому разрешено использовать sudo а кто нет, а также какие команды им разрешено использовать (вместо стандартных команд по умолчанию). Например,

 ## Allows members of the users group to mount and unmount the ## cdrom as root %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom 

(только полезно, если предыдущая колесная колесо% прокомментировала или нет пользователей в группе wheel ).

Предположительно, дистрибутивы не поставляются с такой более тонкой конфигурацией, поскольку невозможно предсказать, какие требования администратора для его пользователей и системы.

Нижняя строка – узнать подробности sudo и вы можете остановить sudo su - при одновременном разрешении других команд, которые не дают пользователю root shell доступа или доступа к командам, которые могут изменять файлы других пользователей. Вы должны серьезно подумать о том, кому вы разрешаете использовать sudo и на каком уровне.

ПРЕДУПРЕЖДЕНИЕ. Всегда используйте команду visudo для редактирования файла sudoers поскольку он проверяет ваши изменения для вас и пытается спасти вас от неловкой ситуации, когда неправильно сконфигурированный файл (из-за синтаксической ошибки) останавливает вас от использования sudo для редактирования любых ошибок. Это особенно верно в Debian / Ubuntu и вариантах, в которых учетная запись root отключена по умолчанию.

Существуют две команды, связанные с привилегиями root, SUDO и SU. С SUDO вы не становитесь другим пользователем (включая root). SUDO имеет предварительно определенный список одобренных команд, которые он выполняет от вашего имени (это касается того, что я спросил в комментарии о том, как вы предоставляете избранным пользователям выборочные привилегии). Поскольку вы не становитесь пользователем root или другим пользователем, вы просто подтверждаете свой собственный пароль.

Это неверно. Самая большая разница между su и sudo заключается в том, что вы вводите свой собственный пароль вместо пароля целевого пользователя, и это sudo является более гибким. Оба они все указывают, что вы становитесь другим пользователем. su может запускать определенную команду, и sudo может запускать интерактивную оболочку, у них просто разные режимы по умолчанию.

Чаще всего у вас есть группа, условно названная wheel , которой разрешено запускать любую команду как любой пользователь. Иногда вы хотите ограничить пользователя только запуском определенной команды как определенного пользователя, хотя это и является более гибким в отношении sudo по сравнению с su .

С SU вы фактически становитесь root или другим пользователем. Если вы хотите стать пользователем Bob, вам нужен пароль Боба. Чтобы стать root, вам нужен пароль root (который будет определен в многопользовательской системе).

Вы можете стать любым пользователем с sudo , с собственным паролем, при условии, что правила в /etc/sudoers настроены так, чтобы вы могли. sudo позволяет вам ограничить команду, которую пользователь может выполнить, да, и запрещает вам раскрывать пароли определенных пользователей или даже не иметь пароля вообще для определенных пользователей, запрещающих регулярные логины.

Если вы станете root, у вас будет доступ ко всему. Любой, кто не имеет права доступа к учетному записям другого пользователя, не получит пароль root и не будет иметь определения SUDO.

Все это имеет смысл, пока вы не посмотрите на что-то вроде этой ссылки , которая представляет собой учебник по использованию SUDO -V, а затем SUDO SU – стать root, используя только ваш собственный пароль.

Если какой-либо пользователь может стать root без пароля root, какой механизм защищает пользовательские файлы от несанкционированного доступа? Прежде всего, sudo -V печатает версию вашего двоичного sudo , а sudo -v проверяет кэшированные учетные данные и не имеет отношения к более поздней части.

Во-вторых, sudo su – довольно глупая вещь, потому что уже существует опция sudo для запуска интерактивной оболочки в качестве указанного пользователя ( sudo -i ) и запуска одного из инструментов авторизации полномочий ( sudo ) для запуска другого средства авторизации полномочий ( su ) действительно глупо.

В-третьих, «любой пользователь» определенно НЕ сможет стать root. Если они могут полностью защитить вашу систему. пользователь root обладает всеми возможностями и может вообще что-либо делать, а выполнение команды в качестве пользователя root является лишь одним из видов использования sudo , это общий инструмент авторизации, который позволяет конкретному пользователю запускать определенную команду в качестве конкретного пользователя.

Короткий ответ – вы не можете.

Если вы разрешаете кому-то (например, simth) в группе sudoer, он может выпустить sudo su - затем стать root, а затем пользователем anoter (например, wesson). Это альтернативный способ дать пароль root для simth. Однако он (кузнец) может изменить root passwd.

Также отмечается, что

1) вы должны указать в /etc/sudoers строку типа

 %sudo ALL=(ALL:ALL) ALL 

2) кузнец (в приведенном выше примере) должен находиться в группе судо.

это не значение по умолчанию.

Вы должны полностью доверять кому-то (кузню), чтобы дать sudo su - доступ.