Предоставление другим пользователям прав суперпользователя
Предоставление другим пользователям прав суперпользователя
Меня нередко просят предоставить обычным пользователям право выполнять привилегированные операции, разрешенные только администратору. Это может быть опасно, и здесь требуется большая осторожность.
В UNIX/Linux есть утилита sudo, позволяющая системному администратору предоставить пользователю возможность выполнить какую-нибудь команду под видом другого пользователя. Это очень строгая утилита, и она требует, чтобы системный администратор четко указал, какой пользователь (пользователи) какую команду (команды) будет выполнять от имени какого пользователя.
Например, вы можете сконфигурировать утилиту так, что конкретный пользователь сможет выполнить некоторую команду от имени root. He сомневайтесь, что sudo позволит только этому человеку выполнять от имени root только эту команду, но важно, чтобы эта утилита проверяла параметры и не запрещала привилегированным пользователям выполнять разрешенные им операции.
? Очень рискованно создавать систему, в которой «обычным» пользователям разрешено выполнять «привилегированные» операции. В истории компьютерной безопасности полно случаев, когда добросовестные программисты случайно создавали в системе безопасности «дыры», позволяющие любому пользователя выполнять любую команду от имени пользователя root или administrator.
Если вы испытываете сомнения, прочитайте книгу по безопасности или поищите ответы в FAQ.
Предположим, что UNIX-команду mount для обращения к CD-ROM можно выполнять только пользователю root. Недопустимо конфигурировать sudo так, чтобы рядовой пользователь мог выполнить команду mount с любыми параметрами от имени root. Так он сможет вызвать сбой в работе системы или нарушить ее безопасность. Гораздо лучше, если вы разрешите пользователю выполнять от имени root некую новую команду (скажем, mountсd). Эта команда убедится, что пользователь указал именно те дисководы, к которым ему разрешено обращаться (с учетом умолчаний), и выполнит необходимые действия. Вероятно, вы предоставите этому пользователю и команду unmountсd.
Автоматизируя операции, выполняемые другими пользователями, я предпочитаю строить три уровня:
• Уровень 1. Программа, выполняющая основную задачу.
• Уровень 2. Программа, которую пользователь запустит при помощи sudo. Она примет входные данные, проверит их, убедится, что он не пытается выполнить подозрительные действия, и вызовет первую программу.
• Уровень 3. Дружественный пользователю интерфейс доступа к предыдущим слоям, например веб-интерфейс или программа с меню.
Приведу пример. В одной фирме, где я работал, имелась процедура публикации новой версии веб-сайта фирмы в Интернете. В процедуре были задействованы три веб-сервера (на самом деле это были виртуальные серверы на двух компьютерах, но эти подробности несущественны).
www-draft.example.com
Здесь разрабатывалась новая версия нашего веб-сайта.
www-qa.example.com
Сюда копировался новый вариант сайта для тестирования качества. Сразу после создания копии для этих файлов устанавливался режим «только чтение». Если отдел контроля качества принимал сайт, мы должны были иметь гарантию, что опубликованным в Интернете окажется именно представленный вариант.
www.example.com
Это был собственно сайт, который видела публика.
Веб-дизайнеры просили системных администраторов скопировать новую версию на www-qa.example.com. Отдел контроля качества, одобрив сайт, сообщал системным администраторам, что его можно опубликовать.
Выполнение каждой из этих двух операций было автоматизировано командами:
readyforqa
Копировала эскиз сайта на сайт отдела контроля качества. golive
Копировала сайт отдела контроля качества на сайт в Интернете.
Отделу маркетинга требовался способ внесения экстренных изменений, когда сотрудники отдела контроля качества были вне досягаемости. Мы создали еще одну команду:
emergency-draft-to-live
Она копировала эскиз сайта на сайт в Интернете после того, как несколько раз переспрашивала «Are you sure?» (Вы уверены?).
Эти три сценария образовали Уровень 2, который я упомянул выше. Уровнем 1 был сценарий, который фактически копировал данные с одного сайта на другой, попутно создавая резервную копию и устанавливая запрет на запись в файлы (а также меняя владельцев файлов). Уровень 1 был доступен только из учетной записи root, потому что он менял владельцев файлов и обращался к серверам по защищенным каналам.
Команда sudo была запрограммирована так, как показано в табл. 13.1.
Таблица 13.1. Таблица разрешений на обновление веб-сайта
Веб-разработчики Контроль качества Маркетинг Readyforqa X X Golive X Emergency-draft-to-live XМы приложили определенные усилия, чтобы заставить руководство подписаться под этой схемой, т. е. поставить свои реальные подписи для гарантии того, что они понимают схему, с которой согласны на словах. Процесс получения подписей, как правило, шел очень туго. Он длился неделями. Представление информации в виде схемы облегчило руководству принятие решений. Менеджеры могли изучать ее и вносить изменения, сколько захотят. Преобразование окончательного варианта в файл конфигурации sudo было делом техники.
В отношении Уровня 3 мы приняли решение о необходимости предоставить пользователям удобный способ обращения к этим командам. В качестве варианта мы рассматривали веб-интерфейс, но в данном случае пользователи удовлетворились программой, которая выводила меню с перечнем опций и запускала нужную команду.
Меню работало без всякий привилегий (т. е. не под sudo), но вызывало программы Уровня 2 с помощью sudo, если это требовалось.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как помогать другим
Как помогать другим Ответственные программисты должны быть готовы помогать друг другу. Программист, который изолируется в своем офисе или кабинке и отказывается отвечать на вопросы других, нарушает профессиональную этику. Ваша работа не настолько важна, чтобы вы не
Шлюзы к другим базам данных
Шлюзы к другим базам данных AS/400 работает с базами данных, поддерживающими описанные архитектуры DRDA и DDМ, а также предоставляет интегрированный подход для доступа к другим базам данных. Это позволяет ей работать непосредственно с базой данных любого производителя на
8.1. Как обеспечить доступ к моим ресурсам другим пользователям сети?
8.1. Как обеспечить доступ к моим ресурсам другим пользователям сети? C самого начала в системе существует папка под названием Shared Documents, расположенная в Document and SettingsAll UsersShared Documents, которая расшарена по умолчанию, и очень удобна для обмена файлами и документами, причём не
3.1.1. Вход в систему под другим именем
3.1.1. Вход в систему под другим именем Команда login используется для входа в linux-систему. Для входа под другим именем нужно ввести login [имя] [параметры]Если имя не указано, программа запросит его. Команда login позволяет использовать параметры, указанные в табл. 3.2. Для регистрации
Настройка прав доступа к файлам и ограничение прав пользователей
Настройка прав доступа к файлам и ограничение прав пользователей В процессе работы на компьютере часто возникает необходимость защитить те или иные свои данные от неквалифицированного и несанкционированного просмотра и редактирования. Эта задача обычно возникает при
36. Предпочитайте предоставление абстрактных интерфейсов
36. Предпочитайте предоставление абстрактных интерфейсов РезюмеВы любите абстракционизм? Абстрактные интерфейсы помогают вам сосредоточиться на проблемах правильного абстрагирования, не вдаваясь в детали реализации или управления состояниями. Предпочтительно
12.3. Уведомление одного потока другим
12.3. Уведомление одного потока другим ПроблемаИспользуется шаблон, в котором один поток (или группа потоков) выполняет какие-то действия, и требуется сделать так, чтобы об этом узнал другой поток (или группа потоков). Может использоваться главный поток, который передает
1.10. Предоставление возможностей совместного использования информации с применением UIActivityViewController
1.10. Предоставление возможностей совместного использования информации с применением UIActivityViewController Постановка задачи Внутри вашего приложения вы хотите предоставить пользователям возможность обмениваться контентом с их друзьями. Для этого предполагается использовать
1.11. Предоставление специальных возможностей совместного использования данных с применением UIActivityViewController
1.11. Предоставление специальных возможностей совместного использования данных с применением UIActivityViewController Постановка задачи Вы хотите включить вашу программу в список тех приложений, которые способны обеспечивать в iOS совместную работу с данными и отображать эту
Предоставление привилегий
Предоставление привилегий Привилегии доступа могут быть предоставлены к целой таблице или просмотру. Можно также ограничить привилегии UPDATE и REFERENCES указанными столбцами.Оператор GRANT используется для предоставления пользователю, роли или хранимой процедуре конкретной
Предоставление роли пользователям
Предоставление роли пользователям В операторе GRANT для предоставления роли пользователям опускается предложение ON- здесь неявно используются полномочия, "загруженные" в роль.GRANT <имя-роли> [, <имя-роли> [, ...]]TO [DSER] <имя-пользователя> [, [OSER] <имя-пользователя> [, ...]]
Предоставление прав на предоставление привилегий
Предоставление прав на предоставление привилегий Вначале только владелец таблицы или просмотра или пользователь SYSDBA могут предоставлять полномочия к этому объекту другим пользователям. Добавьте WITH GRANT OPTION в конец оператора GRANT для передачи пользователю права
Android: получаем права суперпользователя
Новости Новости и комментарии: pcmag.ru/news Раздел подготовили Максим Белоус, Олег Лебедев SOPA: Web будет жить по новым правилам? Главная, наверное, новость месяца – мощнейшая атака на свободу Интернета. Американский сегмент Сети бурлит: публикуются разоблачающие списки,