Показаны сообщения с ярлыком Права доступа. Показать все сообщения
Показаны сообщения с ярлыком Права доступа. Показать все сообщения

вторник, 24 февраля 2009 г.

KDE4: Как запускать приложения от имени другого пользователя

Виртуальная энциклопедия "Linux по-русски": новости, статьи, ссылки на материалы по операционной системе GNU/Linux.

Алексей Дмитриев, 21 февраля 2009

В прежней (третьей) версии KDE, при помощи подменю "Выполнить команду" из "Главного Меню", или клавишами Alt+F2 была возможность запустить любую программу от имени другого пользователя.

Это было очень удобно для работы: например, если нужно быстро отредактировать файл /etc/fstab или xorg.conf, редактировать которые рядовым пользователям не по чину, то запускаешь KWrite от имени root'а и редактируешь.

В новом KDE4 из окошка "Выполнить программу" исчезли все дополнительные опции. Чтобы выполнить приложение от имени другого пользователя, тут надо или перезагружать Иксы с соответствующим логином, либо запускать новый сеанс, или открывать терминал, выполнять команду su, и запускать нужное приложение из терминала. Ведь файлового менеджера с root привилегиями тоже не предусмотрено. (Если из файлового менеджера с root привилегиями открыть текстовой файл в каком-нибудь редакторе, то редактор откроется тоже с root привилегиями, как дочерний процесс).

Однако выход все же есть. Линукс есть Линукс, и всякую задачу можно решить не мытьем, так катаньем. Можно заранее приготовить себе в "Главном меню" кнопки "Файловый менеджер с root привилегиями" и "Текстовый редактор с root привилегиями".

Для этого нужно:

1. Переключиться к классическому стилю меню (правой кнопкой мыши открыть раскрывающееся меню, щелкнув на значке "Главного меню"). Это не обязательно, но редактор меню работает именно в классическом стиле.

2. Открыть "Редактор меню" (той же правой кнопкой мыши на том же значке).

3. На панели инструментов "Редактора меню KDE" нажать кнопку "Новый элемент".

4. В появившемся окошке ввести имя нового элемента, скажем KWrite-root. И нажать кнопку ОК. Пункт KWrite-root появится слева в списке приложений на первом месте.

5. А справа появятся свойства этого элемента. Имя уже вписано; если хотите, то введите описание (оно появляется при наведении указателя мыши) и комментарий в соответствующих графах. Но самое главное - это графа "Команда", в нее надо вписать команду запуска приложения. Для KWrite это, скорее всего, будет команда kwrite (если все пути -paths- правильно установлены). Если не работает, то нужно ввести полный путь к исполняемому файлу. Найти исполняемый файл поможет команда locate kwrite в root консоли. (Она выдаст множество информации, но вас интересуют только директории /bin, /sbin, /usr/bin и /usr/sbin, поэтому можно ввести команду # locate kwrite | grep '.bin' - она отберет только директории содержащие выражение "bin" с любым количеством символов впереди).

6. Теперь выберите значок для нового пункта "Главного меню". Для этого нужно щелкнуть левой кнопкой мыши на знаке вопроса, рядом с только что заполненными графами. Откроется окно со множеством значков, выберете любой на свой вкус.

7. Перетащите мышью новую строку меню на отведенное ей место (где вам удобно).

8. Теперь откройте вкладку "Дополнительно" и поставьте крестик в окошке "Запускать от имени другого пользователя", а в качестве имени другого пользователя укажите root.

9. Остается нажать на кнопку "Сохранить" на панели инструментов "Редактора меню". Появится окно "Изменение конфигурации системы", пробежит индикатор исполнения и оно закроется само.

Теперь можно открывать "Главное меню" и проверить, как работает новая кнопка. Если при нажатии на нее сначала появляется окно "Запустить с правами доступа root - KDE su", то все в порядке - вводите пароль root и редактируйте любые файлы.

Таким же способом можно сделать себе файловый менеджер с правами root, лучше выбрать Konqueror - его возможности несравненно больше, чем у Дельфина.

понедельник, 10 ноября 2008 г.

su vs sudo

su vs sudo | Bappoy's blog

Written on 10.11.2008

С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano, а в многочисленных любительских мануалах (в стиле "5 фокусов в командной строке, которые удивят вашу бабушку") для получения root'ового шелла предлагается писать "sudo su -". Попробую объяснить, почему такое положение вещей кажется мне неправильным.

Исторически единственным универсальным способом выполнить команду от имени другого пользователя в Unix была программа su. Запущенная без параметров, она запрашивала пароль суперпользователя и в случае успеха просто подменяла текущее имя пользователя на root, оставляя почти все переменные окружения от старого пользователя (кроме PATH, USER и еще пары-тройки, см. man su от своего дистрибутива). Более правильно было запускать ее как su - — в таком случае оболочка получала также и правильный environment. С параметром -c можно было выполнить команду: su -c "vim /etc/fstab".

При этом пользователям приходилось помнить пароль root'а и у всех пользователей, перечисленных в группе "0″ (т.е. в группе, члены которой могли выполнить команды su и стать суперпользователем), был одинаковый неограниченный доступ ко всей системе, что являлось серьёзной проблемой безопасности.

Затем появилась команда sudo, и это был прорыв. Теперь администратор мог указывать список разрешенных команд для каждого пользователя (или группы пользователей), файлы, доступные для редактирования, специальные переменные окружения и многое другое (все это великолепие управляется из /etc/sudoers, см. man sudoers от своего дистрибутива). При запуске sudo спрашивает у пользователя его собственный пароль, а не пароль root. Полноценный шелл можно получить с помощью "sudo -i"

Стоит особо упомянуть о специальной команде sudoedit, безопасно запускающей редактор, указанный в переменной окружения $EDITOR. При более традиционной схеме редактирование файлов производилось примерно так:

sudo vim /etc/fstab

Запускаемый таким образом vim наследовал оболочку с неограниченными правами и через :! пользователь мог запускать любую команду (если, конечно, админ не позаботился об этом заранее) и открыть любой файл.

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

В Debian-based дистрибутивах пользователь root не имеет пароля, вместо этого все административные действия должны производиться через sudo или его графический аналог gksudo. Являясь полной заменой su, sudo должна бы быть единственной командой переключения между пользователями, однако, как было сказано вначале, в настоящий момент это не так и все зачем-то изобретают дикие последовательности из sudo, su, vi и черточек.

Поэтому предлагаю всем раз и навсегда запомнить:

выполнить команду от имени root: sudo command
редактирование файлов от имени root: sudoedit file
оболочка root: sudo -i