Как запустить приложение от имени другого пользователя linux
Оригинал: Todo lo que quisiste saber del comando SUDO
Автор: maslinux
Дата публикации: 17 июня 2019 г.
Перевод: В.Костромин
Дата перевода: 19 июня 2019 г.
Команда sudo позволяет нам запускать программы от имени другого пользователя, по умолчанию с правами суперпользователя root. Если вы проводите много времени в командной строке, sudo - это команда, которую вы будете использовать довольно часто.
Используйте sudo вместо того, чтобы запускать сессию суперпользователя, так как это безопаснее, потому что вы можете предоставить ограниченные административные привилегии отдельным пользователям, которые не знают пароля root.
В этом коротком руководстве мы расскажем, как использовать команду sudo.
Инсталляция SUDO
Пакет sudo установлен по умолчанию в подавляющем большинстве дистрибутивов GNU/Linux, но не во всех. Есть и такие, где он установлен, но вам об этом не сообщается. Мы расскажем, как его увидеть.
Добавление пользователей в файл Sudoers
По умолчанию в большинстве дистрибутивов GNU / Linux для того, чтобы предоставить пользователю доступ к sudo, достаточно добавить этого пользователя в группу sudo, определенную в файле sudoers в каталоге /etc. Члены этой группы могут выполнять любую команду от имени root. Название группы может варьироваться от одного дистрибутива к другому. В дистрибутивах, основанных на RedHat, таких как CentOS и Fedora, имя группы sudo - wheel. Чтобы добавить пользователя к эту группу, можно выполнить команду:
В Debian, Ubuntu и их производных, выполнять команду sudo могут члены группы sudo:
В Ubuntu учетная запись пользователя root по умолчанию отключена из соображений безопасности, и пользователям рекомендуется выполнять административные задачи системы с помощью sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому если вы работаете в Ubuntu, вполне вероятно, что пользователь, с которым вы вошли в систему, уже имеет привилегии sudo.
Если вы хотите разрешить конкретному пользователю запускать через sudo только определенные программы, вместо добавления пользователя в группу sudo, добавьте пользователей в файл sudoers.
Например, чтобы позволить пользователю alumno выполнять от имени sudo только команду mkdir, вызовите специальную версию редактора vim:
и добавьте следующую строку:
В большинстве систем команда visudo открывает файл /etc/sudoers в текстовом редакторе vim. Если у вас нет опыта работы с vim, используйте nano.
Вы также можете разрешить пользователям выполнять команды sudo без аутентификации:
alumno ALL=(ALL) NOPASSWD: ALL
Как пользоваться sudo
Команда sudo имеет много опций, которые управляют ее поведением, но обычно она используется в самой простой форме, без опций.
Чтобы воспользоваться sudo, просто введите нужную вам команду с префиксом sudo:
где comando - это та команда, для выполнения которой вам нужно использовать sudo.
Sudo прочитает файл /etc/sudoers и проверит, предоставлен ли вызывающему её пользователю доступ к sudo. При первом использовании sudo в сеансе вам будет предложено ввести ваш пароль пользователя (не пароль root), и команда будет выполнена от имени пользователя root.
Например, для отображения всех файлов в каталоге /root можно использовать команду:
Время ожидания пароля
По умолчанию, если в течение пяти минут команда sudo не использовалась, вам придется ввести пароль повторно. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers. Откройте файл с помощью nano:
Установите время ожидания по умолчанию, добавив следующую строку, где 15 - время ожидания, указанное в минутах:
Если вы хотите изменить время только для конкретного пользователя, добавьте следующую строку, где user_name - это рассматриваемый пользователь.
Запуск команды sudo от имени пользователя, отличного от пользователя root
Существует неправильное представление о том, что sudo используется только для предоставления полномочий root обычному пользователю. На самом деле, вы можете использовать sudo для выполнения команд от имени любого другого пользователя.
Опция -u позволяет вам выполнить команду от имени конкретного пользователя.
Команда whoami напечатает имя пользователя, который выполняет эту команду:
Как выполнять перенаправление с помощью sudo
Это происходит потому, что перенаправление вывода «>» выполняется с правами пользователя, под которым вы вошли в систему, а не под пользователем, указанным в sudo. Перенаправление происходит до вызова команды sudo.
Одним из решений является вызов новой оболочки с правами root с помощью sudo sh -c:
Sudo - очень мощная команда, но при обращении с ней нужно быть очень осторожным.
Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию пользователь root. Если вы проводите много времени в командной строке, sudo - одна из команд, которую вы будете использовать довольно часто.
Использование sudo вместо входа в систему в качестве пользователя root более безопасно, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная пароля root.
Установка Sudo (команда sudo не найдена)
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Если sudo не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
Установите Sudo на Ubuntu и Debian
Установите Sudo на CentOS и Fedora
Добавление пользователя в Sudoers
По умолчанию в большинстве дистрибутивов Linux предоставление доступа к sudo так же просто, как добавление пользователя в группу sudo, определенную в sudoers . Члены этой группы смогут запускать любую команду от имени пользователя root. Название группы может отличаться от рассылки к рассылке.
В дистрибутивах на основе RedHat, таких как CentOS и Fedora, имя группы sudo wheel . Чтобы добавить пользователя в группу, выполните:
В Debian, Ubuntu и их производных членам группы sudo предоставляется доступ sudo:
Учетная запись суперпользователя в Ubuntu по умолчанию отключен по соображениям безопасности и пользователям рекомендуется выполнить системную задачу администрирования с использованием Sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому, если вы работаете в Ubuntu, есть вероятность, что пользователь, вошедший в систему, уже получил права sudo.
Если вы хотите разрешить определенному пользователю запускать только определенные программы как sudo, вместо добавления пользователя в группу sudo добавьте пользователей в sudoers файл.
Например, чтобы позволить пользователю linuxize запускать только mkdir команду sudo, введите:
и добавьте следующую строку:
В большинстве систем visudo команда открывает /etc/sudoers файл в текстовом редакторе vim. Если у вас нет опыта работы с vim, проверьте нашу статью о том, как сохранить файл и выйти из редактора vim .
Вы также можете разрешить пользователям запускать команды sudo без ввода пароля :
Как использовать sudo
Синтаксис sudo команды следующий:
У sudo команды есть много опций, которые управляют ее поведением, но обычно sudo она используется в самой простой форме, без каких-либо опций.Чтобы использовать sudo, просто добавьте к команде префикс sudo :
Где command команда, для которой вы хотите использовать sudo.
Sudo прочитает /etc/sudoers файл и проверит, предоставляется ли пользователю, вызывающему программу, с помощью команды sudo. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.
Например, чтобы перечислить все файлы в /root каталоге, вы бы использовали:
Тайм-аут пароля
По умолчанию sudo попросит вас ввести пароль еще раз через пять минут бездействия sudo. Вы можете изменить время ожидания по умолчанию, отредактировав sudoers файл. Откройте файл с помощью visudo :
Установите время ожидания по умолчанию, добавив строку ниже, где 10 время ожидания указано в минутах:
Если вы хотите изменить метку времени только для конкретного пользователя, добавьте следующую строку, где user_name - это рассматриваемый пользователь.
Запустите команду как пользователь, отличный от Root
Существует неправильное восприятие, sudo которое используется только для предоставления полномочий root обычному пользователю. На самом деле, вы можете использовать sudo для запуска команды, как любой пользователь.
-u Опция позволяет выполнить команду в качестве указанного пользователя.
В следующем примере мы используем sudo для запуска whoami команды от имени пользователя «richard»:
Команда whoami выведет имя пользователя, запустившего команду:
Это происходит потому, что перенаправление > вывода выполняется под пользователем, в котором вы вошли, а не пользователем, указанным в sudo. Перенаправление происходит до sudo вызова команды.
Одним из решений является вызов новой оболочки от имени пользователя root с помощью sudo sh -c :
Другой вариант - передать вывод как обычный пользователь в tee команду, как показано ниже:
Вывод
Вы узнали, как использовать sudo команду и как создавать новых пользователей с привилегиями sudo.
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
[sudo] password for user1: Sorry, try again.
[sudo] password for user1:
sudo: 1 incorrect password attempt
You have new mail in /var/spool/mail/root"
Спасибо за ваш вариант, он работает. pstbin, не путай sudo и su блин.
sudo читает пароль только с _терминала_ . для гуя есть еще вариант с askpass.
а вот su может считать пароль с stdin использовать sudo.
в конфиге /etc/sudoers прописать необходимые команды на запуск от другого юзера без запроса пароля.
Там просто какие-то невероятные возможности. Не знаю, как за обычного юзера, но за рута (запуск программы от рута без запроса пароля) делается вот так:
Karpion, причем тут бинарники?
Можно ссылочку?
Виктор Таран, Ссылки нет - я как-то давно пробовал ставить SetUID на скрипт, не получилось. Может, с тех пор поменялось.
Проще всего - действительно проверить.
Ужасающе безграмотный текст не вызывает у меня доверие. И упоминание "race condition" тут явно не по теме.
Вроде бы такие простые вещи должны знать, но иногда в порыве паники всё вылетает из головы :). Как бы там не было, опишу здесь команды, которые применяются для этого, в *nix, windows системах.
Windows
Существует несколько команд, одна встроенная (runas), остальные ставятся отдельно (например, psexec из комплекта pstools).
Формат её следующий:
runas [] /user:учетная_запись_пользователя program
но для повседневного выполнения, достаточно запомнить короткую форму (полное описание параметров можно найти в справке):
runas /user:учетная_запись_пользователя program
где, учетная_запись_пользователя может быть как локальной, так и доменной.
Примеры использования:
runas /user:mymachine\administrator CMD
runas /user:SCOT_DOMAIN\administrator NOTEPAD
runas /user:[email protected] "NOTEPAD \"my file.txt\""
Третий пример показывает, как нужно поступать, в случае, если программу, которую нужно запустить, содержит пробелы и нужно заключать в кавычки.
Минусы : нельзя запустить програму в фоне.
psexec \\computer[,computer[. ] command
psexec @run_file command
Это вообще комбайн по фонкционалу, может запускать програму на удалённом компьютере от указанного пользователя, запуск в фоне и много другого. Полный перечень можно найти в справке к программе. Нам же будет интересны только опции, отвечающие за запуск от указанного юзера. Вот опции, которые нам будут интересны:
*nix
su -c "command" user
su -c "less /home/fred/secret" fred
Выполнили команду от имени пользователя fred.
Но лучше запомнить короткую форму:
sudo -u user command
sudo cat /var/log/auth.log
sudo -u fred mv /home/fred/secret /home/fred/supersecret
-pfexec (Только для Solaris)
Выполняем команды от другого пользователя. : 3 комментария
Спасибо долго искал эту команду почему то все время писал run as отдельно runas оказывается вместе )))))))
Читайте также: