Online video hd

Смотреть молодые видео

Официальный сайт moscowout 24/7/365

Смотреть видео бесплатно

Minoru 25.12.2009 06:20

SecuritySu и иже с ним

В статье о Compose key я несколько раз упомянул некий sudoedit. Так как сейчас на welinux'е проводится неделя безопасности nix систем, решил написать о sudo, sudoedit, su и некоторых аспектах работы с ними.

su

О su сегодня не слышали разве что виндузятники :) Всемирно известная утилита, применяемая для смены привилегий на чужие (в том числе рутовские; как раз для получения прав рута чаще всего и применяется).

Тут надо сделать замечание о принципе работы su — после ввода пароля вы получаете привилегии на неограниченное время (аж пока не наберёте exit). Таким образом, утилита во многих случаях неудобна — например, если вам нужно запустить какую-то софтину от рута, вам придётся выполнять su, потом запускать программу, а по завершении работы с ней выполнять exit. Правда, такой поход оправдан, если чьи-то права вам нужны на довольно длительное время — например, если вы настраиваете систему или, скажем, помогаете знакомому привести в порядок его конфиги.

Не смотря на то, что выглядит и работает su очень просто — введи пароль пользователя, чьи права хочешь получить, и работай — она также может представлять довольно серьёзную угрозу. Интересующихся отправляю к лекции о разнице между «su» и «su -», а мы продолжим.

sudo

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

sudoedit

Теперь перейдём к программе, входящей в состав пакета sudo, но почему-то редко упоминаемой. Т.к. все права на общесистемные конфигурационные файлы, находящиеся в /etc, принадлежат руту, администраторы часто выполняют что-то вроде sudo vim /etc/... Естественно, такой метод имеет некоторые недостатки, самый очевидный из которых — следующее протирование: вы должны сохраняться часто, потому что частые сохранения — это хорошо; в то же время, вам нужно сохранять изменения только после того, как вы полностью отредактируете конфиг, т.к. сервис или приложение может прочесть частично сохранённые изменения и не запуститься. Вторым существенным недостатком может являться то, что редактор root'а может быть настроен не так, как ваш, и вам придётся ненадолго привыкать к отсутствию привычных вещей. Именно поэтому придумали sudoedit — простое приложение, которое выполняет элементарные действия:
  1. копирует заданный файл в /tmp
  2. открывает скопированный файл в вашем редакторе (основываясь на переменной окружения $EDITOR)
  3. по завершении правки перемещает файл обратно (если он был изменён)

Таким вот простым образом решается и проблема с сохранениями, и проблема с настройками редактора.

Лично я полностью отучился от sudo vim ... и юзаю sudoedit, чего и вам желаю.

visudo

visudo — утилита, предназначенная для редактирования файла /etc/sudoers, т.е. конфига sudo. Она работает почти как sudoedit за исключением того, что копирует она заранее известный файл — /etc/sudoers — а перед копированием его обратно в /etc проверяет синтаксис. visudo, фактически, является единственным допустимым средством редактирования sudoers, если вы не хотите нечаянно поломать свою систему.

Некоторые аспекты использования sudo и su

Всё вышеприведённое было сухой теорией, большая часть которой известна каждому. Теперь же перейдём к практике.

Первый аспект, касающийся исключительно su, уже был упомянут — следует понимать разницу между «su» и «su -».

Второй любопытный момент, который лично я использую каждый день — это опция su -c. Давайте подробнее остановимся на ситуации, в которой нам может понадобится эта опция.

Для обновления системы мне необходимо выполнить от рута два действия: aptitude update (обновление пакетов) и aptitude -y safe-upgrade (собственно обновление). Сделать это можно такой незамысловатой конструкцией:
1
sudo aptitude update && sudo aptitude -y safe-upgrade

. Правда, если первая команда будет выполняться довольно долго, то sudo «забудет» ранее введённый пароль и потребует его заново. Это нехорошо, потому что я рассчитываю, что контрукция выполнится без моего вмешательства.

Окей, ищем второй путь: делаем su, вводим пароль рута, потом выполняем
1
aptitude update && aptitude -y safe-upgrade && exit

. Уже лучше, но появился неприятный момент — нужно вводить пароль рута.

Возникает противоречие: sudo может выполнить только одну команду, а su нужен пароль рута. Выход довольно прост: делать
1
sudo su -c "aptitude update && aptitude -y safe-upgrade"

Как работает этот «конвеер»? sudo запрашивает пароль текущего пользователя, после чего запускает su с рутовскими привилегиями. В этом случае su не запрашивает пароль, а просто выполняет указанную в качестве аргумента конструкцию, а именно обновляет списки пакетов, а за ними и сами пакеты.

Вот таким вот нехитрым способом мы одновременно удовлетворили свою параноидальность (пароль рута в процессе не участвует) и решили задачу (система обновляется без нашего вмешательства). У меня вышеприведённый однострочник выполнен в виде скрипта и запускается время от времени.


P.S. Довольно интересную статью схожей тематики написал Алексей Федорчук — советую почитать и её тоже.


Тэги:
+ 16 -
Похожие Поделиться

l1feh4ck3r 25.12.2009 08:32 #
+ 0 -
Хорошая статья.
Спасибо про разницу между "su" и "su -".
KblCb 25.12.2009 09:09 #
+ 0 -
За "su -" спасибо.
Не смотря на то, что выглядит и работает su очень просто — введи пароль пользователя, чьи права хочешь получить, и работай — она также может представлять довольно серьёзную угрозу.
Опасность "su" представляет только в случае если ты не знаешь чего ты делаешь (то есть например при работе с браузером, скриптами незнакомого содержания, программами непонятного назначения) или или делаешь чёрт знает что (в шесть утра rm -rf ./* так похож на rm -rf /*).

Не раскрыта тема su root something (а оно эквивалентно sudo something только помощнее).
Таким образом, sudo лучше применять для одиночных действий.
Вообще говоря sudo придумали для того чтобы повышать привилегии (причём не абы какие, а только разрешённые вышестоящим начальством) не будучи при этом рутом (чтобы не выдавать каждому пользователю всех привилегий). Иными словами sudo следует использовать в первую очередь когда у вас нет рутового пароля.
Minoru 25.12.2009 22:42 #
+ 0 -
Не раскрыта тема su root something (а оно эквивалентно sudo something только помощнее).
Не совсем понял, что имеется в виду :(

sudo следует использовать в первую очередь когда у вас нет рутового пароля.
Да, вы правы. Попробую поправить статью.
KblCb 26.12.2009 00:41 #
+ 0 -
Не совсем понял, что имеется в виду :(
Хм... Ну попробуй например сделать:
$ su root apt-get update
(не помню, но вроде в дебьяноидах оно требует привилегий суперпользователя).
Minoru 26.12.2009 00:43 #
+ 0 -
% su root apt-get update
Пароль:
/usr/bin/apt-get: /usr/bin/apt-get: cannot execute binary file
%

Что-то мне подсказывает, что ты вовсе не эту ошибку мне хотел показать…
KblCb 28.12.2009 02:35 #
+ 0 -
Опытным путём выяснил, что в дебах апт агрессивно против такого поведения. Попробуй что-то вроде:
$ su root ls /root
Должно сработать. По крайней мере на последнем дебиане вчера пахало.
Minoru 28.12.2009 03:20 #
+ 0 -
% su root ls /root
Пароль:
/bin/ls: /bin/ls: cannot execute binary file
% /bin/bash
minoru@eternity:~$ su root ls /root
Пароль:
/bin/ls: /bin/ls: cannot execute binary file
minoru@eternity:~$

:(
KblCb 28.12.2009 04:17 #
+ 0 -
Ууу... Надо чаще вылезать из слаки, видимо. А что за дистр?
Minoru 28.12.2009 04:36 #
+ 0 -
Debian Lenny
meako 25.12.2009 09:54 #
+ 0 -
Я вот вместо su пользують „sudo -i“
А вместо sudoedit — можна вызвать sudo -e. По сути то же самое.

за пояснение «sudo su» спасибо, теперь понял для чего его можно использовать, но органичнее помоему будет:
sudo -i "aptitude update && aptitude -y safe-upgrade && exit“
Minoru 25.12.2009 22:45 #
+ 0 -
Я вот вместо su пользують „sudo -i“
Хм… Постараюсь совместить это с фразой KblCb о пользе sudo.

А вместо sudoedit — можна вызвать sudo -e. По сути то же самое.
Да, абсолютно.
Minoru 25.12.2009 22:47 #
+ 0 -
sudo -i "aptitude update && aptitude -y safe-upgrade && exit“
Не пашет, кстати:% sudo -i "aptitude update && aptitude safe-upgrade" ~
-bash: aptitude update && aptitude safe-upgrade: Нет такого файла или каталога
meako 26.12.2009 01:07 #
+ 0 -
Странно весьма, возможно дело в кавычках, у меня на Arch правда работает с и с ними и без.
Возможно дело в конфигурации sudo, PATH, алиасы.
Minoru 26.12.2009 02:38 #
+ 0 -
А что оно делать-то должно, показать можешь?
meako 28.12.2009 02:33 #
+ 0 -
Ну, выполнять серию команд от имени рута и возвращаться в юзерский шелл.
Конкретно та команда — апгрейдить deb-систему. У меня Arch, так что не покажу))
Minoru 28.12.2009 03:16 #
+ 0 -
выполнять серию команд от имени рута и возвращаться в юзерский шелл.
Т.е. то же самое, что и su -c, только с вводом пароля пользователя, а не рута. Ясно.

Конкретно та команда — апгрейдить deb-систему
Я знаю, что делает aptitude — мне было интересно, что такого интересного делает sudo с ключиком i. Теперь, кажется, дошло — остальось выяснить, почему не работает как положено.
assaron 25.12.2009 10:47 #
+ 0 -
спасибо за su -
меня бы хакнули :)
хорошо хоть я не админ
Minoru 25.12.2009 22:47 #
+ 0 -
Меня бы тоже хакнули, так что тоже радуюсь, что админ только у себя на десктопе :)
Iliander 26.12.2009 13:54 #
+ 1 -
С sudoedit в vim возникает одна небольшая проблема — на некоторых файлах отключается подсветка синтаксиса, т.к. она порой привязана к расположению открываемого файла (/etc/make.conf в Gentoo, к примеру). Мелочь, а неприятно…
Minoru 26.12.2009 17:56 #
+ 0 -
отключается подсветка синтаксиса, т.к. она порой привязана к расположению открываемого файла
Скорее не к расположению, а к имени. sudoedit дописывает в конец имени скопированного файла какую-то чепуху, поэтому тип файла не определяется. Я в таком случае просто делаю :filetype detect
Iliander 26.12.2009 23:41 #
+ 0 -
Я не могу сейчас конкретный пример привести, но знаю, что сталкивался с тем, что файл под тем же именем, но при другом расположении не мог автоматически определиться VIM'ом. Это я проходил, т.к. у меня две системы (Gentoo и Arch) и одна примонтированна в другой. И, редактируя идентичные файлы, один вполне мог подсвечиваться автоматом (из текущей системы), а другой — нет.
А вообще, сделать :filetype detect не проблема, но сама необходимость этого наталкивает меня на некоторые размышления по поводу «а оно того стоит?». :)
Le9i0nX 26.12.2009 18:42 #
+ 0 -
чтоб не могли подсунуть свенью такую надо быть параноиком
и монтировать так /dev/mapper/eee--ps-home /home ext3 noatime,nodiratime,defaults,noexec,nodev 0 2
и блокировать на запись ./.bashrc ./.bash_aliases ./.profile
m039 29.01.2010 13:28 #
+ 0 -
За sudoedit благодарен.
Также заметил такую особенность, что когда использовал средства например такие как "su -" или "su -c", то исходил из стандартных ситуаций. Т.е. практически не рассматривал возможности, которые были в статье. :)

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн