Почему в Unix / Linux существует суперпользователь?

Я знаю, что некоторые системные задачи разрешены только привилегированным пользователям / процессам, но все же суперпользователь (обычно корень в Unix / Linux) или администратор может представить это много проблем с безопасностью и чаще всего пытаются использовать. Вы все знаете почему.

Меня интересуют не только (но в основном) общие ответы Unix / Linux. Что может быть объяснением этого?

-2
26.03.2016, 01:01
5 ответов

Команда su существует потому, что это означает, что вы можете войти в root, не выходя из своей учетной записи. Сама учетная запись root предназначена для системного администрирования, для управления учетными записями пользователей и выполнения таких задач, как монтирование файловых систем. Вы можете отключить или удалить команду su:

# rm -f /bin/su    #deletes 'su' command

и вы также можете дать no sudo-access, что означает, что только root может выполнять системное администрирование.

# deluser user sudo    #user being the account to be removed from group sudo
0
28.01.2020, 05:14

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

Безопасность и эксплойты не являются проблемой, если вы действуете ответственно, вы можете нанести много вреда и как обычный пользователь. Я не вижу причин ограничивать пользователей.

3
28.01.2020, 05:14

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

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

Удаление суперпользователя не устранит цель атаки для эксплойтов, оно просто создаст более легкую цель.

3
28.01.2020, 05:14

Существование суперпользователя в той или иной форме логически необходимо. Должны быть некоторые учетные данные, позволяющие настраивать учетные данные. Это корень.

Корень не обязательно должен быть учетной записью пользователя. Например, это может быть возможность . Исторически Unix стремился к простому дизайну и использовал единую концепцию для реализации как учетных записей, так и возможностей: пользователей. Каждый человек, использующий систему, получает учетную запись пользователя, а системным службам также назначается учетная запись пользователя. Системная служба, которая, помимо прочего, контролирует учетные данные пользователя ( / etc / passwd и другие функции, которые играют ту же роль в современных системах), может косвенно получить любую возможность. В архитектуре Unix root также может напрямую получить любую возможность (например, запустив su или базовый системный вызов), но даже если бы это было не так, трудно запретить диспетчеру учетных данных назначать себе какие-либо учетные данные¹.

Современные системы превратились в более детализированную модель безопасности. Например, в Unix на ранней стадии было добавлено понятие групп, чтобы пользователи могли обмениваться файлами, но управлять группами может только root. Большинство современных систем Unix имеют списки контроля доступа, которые позволяют пользователям обмениваться файлами без вмешательства root. Все больше и больше систем Linux используют механизмы безопасности, такие как SELinux , которые ограничивают то, что может делать даже root.

Но более сложные модели безопасности - палка о двух концах.Более детализированные разрешения обеспечивают больший контроль и позволяют простым способом реализовать больше политик безопасности (например, ACL для доступа, а не косвенного доступа через программы setuid). Но более сложные политики безопасности труднее проверять (есть еще много всего, что нужно изучить на более сложном языке), а код для реализации этих политик более сложен, следовательно, имеет больший риск ошибиться.

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

5
28.01.2020, 05:14

В однопользовательских системах Linux su обычно используется для получения root-прав, но в нем есть много других функций. многопользовательская среда.

Если я с кем-то еще и мне нужно временно переключиться с его учетной записи на свою, не запуская новую оболочку, я могу использовать su , чтобы стать мной, выполнить нужные команды и выйти из системы. . Для этого мне нужны мои учетные данные. Помните, это восходит к тому времени, когда вы были на терминале со скоростью 300 бит / с, и добраться до другого терминала можно было в другой комнате.

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

sudo в основном вытеснил то, что делает su , и делает это намного лучше, поскольку вы можете указать, какого пользователя и какие команды можно запускать. Однако для администратора su все еще есть место.

2
28.01.2020, 05:14

Теги

Похожие вопросы