
Что защищает многопользовательскую систему от доступа любого пользователя к файлам других пользователей через root? В контексте вопрос основан на моем понимании следующим образом:
Есть две команды, связанные с привилегиями root, sudo
и su
. С помощью sudo
вы не становитесь другим пользователем (включая root). sudo
имеет предопределенный список одобренных команд, которые он выполняет от вашего имени. Поскольку вы не становитесь root или другим пользователем, вы просто аутентифицируетесь с помощью собственного пароля.
С su
, вы фактически становитесь пользователем root или другим пользователем. Если вы хотите стать пользователем Bob, вам нужен пароль Bob. Чтобы стать пользователем root, вам нужен пароль root (который будет определен в многопользовательской системе).
рефери:howtogeek.com:
su
переключает вас на учетную запись пользователя root и требует пароль учетной записи root.sudo
запускает одну команду с привилегиями root — она не переключает вас на учетную запись пользователя root.
и
Если вы выполните команду su bob, вам будет предложено ввести пароль Боба, и оболочка переключится на учетную запись пользователя Боба; аналогичное описание см. наcomputerhope.com
«sudo» — это двоичный setuid root, который выполняет команды root от имени авторизованных пользователей.
Если вы станете root, у вас будет доступ ко всему. Любой, кто не имеет права доступа к учетной записи другого пользователя, не получит пароль root и не будет иметь sudo
разрешенных определений.
Все это имеет смысл, пока вы не посмотрите на что-то вродеэта ссылка, который представляет собой руководство по использованию sudo -V
и sudo su -
получению прав root с использованием только вашего собственного пароля.
Если любой пользователь может стать пользователем root без пароля root, какой механизм защищает файлы пользователя от несанкционированного доступа?
решение1
TheглавныйРазница между sudo
и su
заключается в механизме, используемом для аутентификации. При этом su
пользователь должен знать root
пароль (который должен быть тщательно охраняемым секретом), в то время как sudo
обычно настраивается на запрос собственного пароля пользователя. Чтобы остановить всех пользователей, устраивающих беспорядки, привилегии, выдаваемые командой sudo
, к счастью, можно настроить с помощью /etc/sudoers
файла.
Обе команды довольно часто запускают команду от имени другого пользователя root
.
sudo su -
работает в приведенном вами примере, потому что пользователь (или группа, членом которой является пользователь) настроен в файле /etc/sudoers
. То есть, онидопустимыйдля использования sudo
. Вооружившись этим, они используют , sudo
чтобы временно получить root
привилегии (которые предоставляются по умолчанию, если имя пользователя не указано) и root
запустить другую оболочку ( su -
). Теперь у них есть root
доступ, не зная root
пароля .
И наоборот, если вы не разрешите пользователю использовать, sudo
то он не сможет sudo su -
.
В дистрибутивах обычно есть группа (часто называемая 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 закомментирована или в wheel
группе нет пользователей).
Вероятно, дистрибутивы не поставляются с такой детальной конфигурацией в стандартной комплектации, поскольку невозможно предсказать, какие требования администратора предъявляются к его/ее пользователям и системе.
Суть в том, чтобы изучить детали sudo
и вы можете остановиться sudo su -
, разрешив другие команды, которые не дают root
доступ к оболочке пользователя или доступ к командам, которые могут изменять файлы других пользователей. Вам следует серьезно подумать о том, кому вы разрешаете использовать sudo
и на каком уровне.
ПРЕДУПРЕЖДЕНИЕ:Всегда используйте visudo
команду для редактирования sudoers
файла, поскольку она проверяет ваши правки за вас и пытается спасти вас от неловкой ситуации, когда неправильно настроенный файл (из-за синтаксической ошибки) не позволяет вам использовать sudo
для редактирования любых ошибок. Это особенно актуально для Debian/Ubuntu и вариантов, где root
учетная запись отключена по умолчанию.
решение2
Есть две команды, связанные с привилегиями root,
sudo
иsu
. С помощьюsudo
вы не становитесь другим пользователем (включая root).sudo
имеет предопределенный список одобренных команд, которые он выполняет от вашего имени (это отвечает на мой вопрос в комментарии о том, как вы предоставляете выбранным пользователям выборочные привилегии). Поскольку вы не становитесь root или другим пользователем, вы просто аутентифицируетесь с помощью собственного пароля.
Это неверно. Наиболее очевидное различие между su
и sudo
заключается в том, что последний обычно настроен на запрос вашего собственного пароля вместо пароля целевого пользователя, и это sudo
более гибко. Весь смысл обоих в том, чтобы позволить вам стать другим пользователем. su
может запустить определенную команду и sudo
может запустить интерактивную оболочку, у них просто разные режимы по умолчанию.
Чаще всего у вас есть группа, условно названнаяwheel
, которому разрешено запускать любую команду как любому пользователю. Иногда вы хотите ограничить пользователя, чтобы он запускал только определенную команду как определенный пользователь, и это более гибко по sudo
сравнению с su
.
С
su
, вы фактически становитесь пользователем root или другим пользователем. Если вы хотите стать пользователем Bob, вам нужен пароль Bob. Чтобы стать пользователем root, вам нужен пароль root (который будет определен в многопользовательской системе).
Вы также можете стать любым пользователем sudo
, используя свой собственный пароль, при условии, что правила в нем /etc/sudoers
настроены так, чтобы это было разрешено. sudo
Позволяет вам ограничивать команды, которые может выполнять пользователь, и избавляет вас от необходимости раскрывать пароли определенных пользователей или даже не иметь пароля вообще для определенных пользователей, запрещая обычные входы в систему.
Если вы станете root, у вас будет доступ ко всему. Любой, кто не имеет права доступа к учетной записи другого пользователя, не получит пароль root и не будет иметь
sudo
разрешенных определений.
Все это имеет смысл, пока вы не посмотрите на что-то вроде [этой ссылки][1], которая представляет собой руководство по использованию
sudo -V
иsudo su -
получению прав root с использованием только вашего собственного пароля.
Если любой пользователь может стать пользователем root без пароля root, какой механизм защищает файлы пользователя от несанкционированного доступа? [1]:http://home.ubalt.edu/abento/linux/terminal/sudo.html
Прежде всего, sudo -V
выводит версию вашего sudo
двоичного файла и sudo -v
проверяет кэшированные учетные данные, которые не имеют значения для дальнейшей части.
Во-вторых, sudo su
это довольно глупое занятие, поскольку уже существует sudo
возможность запустить интерактивную оболочку от имени указанного пользователя ( sudo -i
), а запуск одного инструмента авторизации привилегий ( sudo
) для запуска другого инструмента авторизации привилегий ( su
) действительно глуп.
В-третьих, «любой пользователь» должен обязательноНЕТиметь возможность стать root. Если они могут, то вся ваша система полностью незащищена. Пользователь root обладает всеми полномочиями и может делать все, что угодно, и запуск команды как root — это лишь одно из применений sudo
, это общий инструмент авторизации, который может позволить определенному пользователю запустить определенную команду как определенному пользователю.
решение3
Короткий ответ — нет.
Если вы разрешите кому-либо (например, simth) войти в группу sudoer, он может выдать, sudo su -
затем стать пользователем root, затем другим пользователем (например, wesson). Это альтернативный способ дать пароль root пользователю simth. Однако он (smith) может изменить пароль root.
Отмечает также, что
1) необходимо указать в /etc/sudoers
строке типа
%sudo ALL=(ALL:ALL) ALL
2) smith (в примере выше) должен входить в группу sudo.
это не настройка по умолчанию.
Вы должны полностью доверять кому-то (кузнецу), чтобы получить sudo su -
доступ.
решение4
Ни один из этих ответов не отвечает на вопрос каким-либо образом. Правильный ответ — права доступа к файлам запрещают любому пользователю получать доступ к файлам другого пользователя, включая root. Да, есть способы запретить root читать и писать в ваши файлы (или каталоги, которые являются файлами).
Например, каталог может содержать следующие записи:
drwxrwxr-x 13 root root 8192 17 янв. 15:38 bash-5.2.15 drwxr-xr-x 15 root root 4096 20 янв. 08:13 биткойн drwxr-xr-x 8 root root 4096 6 дек. 16:37 boost_1_84_0 -rwx------ 1 root root 13210 19 янв. 17:44 doit_configure -rwx------ 1 root root 7491 17 окт. 11:44 doit_configure_bash
Каталоги начинаются с 'd'. Обычные файлы начинаются с '-'. Затем идут разрешения на файл/каталог, например rwxrwxrwx, разбитые на три раздела: владелец, группа и другие. r=чтение, w=запись, x=разрешение на выполнение соответственно.
Командные утилиты «su» и «sudo» помогают с доступом, но они не являются настоящим ответом на исходный вопрос.