Меню Рубрики

Linux запуск под другим пользователем

linux-notes.org

Запустить команду от другого пользователя в Unix/Linux

Иногда, просто необходимо запустить команду от другого пользователя. И существует несколько способов, как это можно сделать. Я расскажу о них в своей статья «Запустить команду от другого пользователя в Unix/Linux».

Запустить команду от другого пользователя в Unix/Linux — способ 1

И так, можно использовать утилиту SUDO. Рассмотрим пример:

  • -H YOUR_HOME: Задает HOME (Переменное окружение для хома конкретного юзера) и по умолчанию — это root.
  • -u YOUR_USER: Задаем пользователя от которого будет выполнена команда.
  • -c YOUR_COMMAND: Служит опцией для ввода команды.

Запустить команду от другого пользователя в Unix/Linux — способ 2

Можно использовать утилиту SU. И сейчас приведу несколько примеров.

Логин в root юзера

Чтобы получить рута, выполните:

Запустить команду как root юзер

Вот пример команды:

Выполнить команду от другого пользователя с помощью su

Рассмотрим другой пример:

  • — — Будет имитировать логин указанного пользователя.
  • -c — Служит для указания команды для выполнения (для указанного юзверя).

Запустить команду от другого пользователя в Unix/Linux — способ 3

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

Как пример, я покажу следующую строку:

PS: Для использования команды runuser пароль не требуется, и он должен запускаться только пользователем root.

  • -l: Создаст оболочку для входа в систему, используя файл runuser-l PAM вместо стандартного.
  • -g: Указывает на основную группу.
  • -G: Указывает на дополнительную группу.
  • -c: Собственно, служит для указания команды.
  • –session-command=COMMAND: Передает одну команду в оболочку с опцией «-c» и не создает новый сеанс.
  • -m: Не сбрасывайте переменные среды (ENV).

Вот и все, тема «Запустить команду от другого пользователя в Unix/Linux» завершена.

5 thoughts on “ Запустить команду от другого пользователя в Unix/Linux ”

> $ sudo -H -u Your_another_user bash -c ‘ping linux-notes.org’

Смешались sudo и bash:

$ sudo -u user echo a
a

Да, уже поправил. Моя опечатки. Спасибо)

su asterisk -c «xxx»
This account is currently not available.

У меня вот проблема. Надо, чтобы звук из одной сессии (x2go)
Было слышно в другой сессии. Наверное даже не так.
Некоторые программы запускаются при загрузке ПК от user1.
Когда входишь через x2go тем же user1 звук (сигнализация) от этих демонов не слышно. Всю башку сломал. Подскажите пож как решить.

sudo -u www-data pwd

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Источник

Выполнение команды от другого пользователя

Есть пользователь test и test1. Оба с обычными правами. Я работаю с пользователем test, известно что test1 не имеет пароля, и именно от него я хочу выполнить команду. Попробовал сделать так:

Но оно хочет какой-то пароль, хотя его нет. Возможно есть другие решения? Sudo не вариант так как пользователь test не прописан в файле sudoers.

1 ответ 1

нет пароля — значит, под именем этого пользователя нельзя аутентифицироваться, что и требуется при использовании программы su (у суперпользователя есть привилегия аутентифицироваться с помощью этой программы без использования пароля пользователя).

мне известно как минимум два варианта решения:

присвойте пароль этому пользователю. от имени суперпользователя:

если программа sudo установлена, добавьте в /etc/sudoers , например, такую строку:

это даст возможность пользователю test выполнять любые программы/команды от имени пользователя test1:

запрашиваться при этом будет пароль пользователя test.

можно сделать и без запроса пароля, добавив директиву NOPASSWD: в приведённую выше строку:

Источник

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

Юрий Самойлов, Спасибо, но ваш вариант не работает: «$ echo password | sudo -u user2 -S /home/user2/scripts/script1.sh»

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[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»

Там просто какие-то невероятные возможности. Не знаю, как за обычного юзера, но за рута (запуск программы от рута без запроса пароля) делается вот так:

Karpion, причем тут бинарники?
Можно ссылочку?

There is a race condition inherent to the way shebang (#!) is typically implemented:
собственно вам нужно сделать слдующее
1. положите файл например в /bin ( тут варианты имеются)
2. назовите его так как собираетесь его запускать например scrypt
3. Дайте ему права на запуск , и доп права
4. и гланое укажите интерпритатор в петвой строке файла.
5. убедитесь что этот интерпритатор есть в системе, поскольку это sh то он есть.
Собственно все.
ну и

Виктор Таран, Ссылки нет — я как-то давно пробовал ставить SetUID на скрипт, не получилось. Может, с тех пор поменялось.
Проще всего — действительно проверить.

Ужасающе безграмотный текст не вызывает у меня доверие. И упоминание «race condition» тут явно не по теме.

Источник

Запуск скрипта от другого пользователя

Есть в системе два пользователя: user1, user2. Есть script.sh. Задача: работая под user1 запустить скрипт от имени user2.

Да, знаю про su -c. Но оно просит пароль. А основная проблема это то, что есть еще main_script.sh откуда и будет вызываться script.sh (можно даже не отдельным скриптом, а внутри того же main_script.sh) и все это должно происходить автоматически, т.е. без дополнительного вмешательства и ввода пароля user2. Скажите, такое вообще возможно? И как это реализовать? что-то вертится в голове про setuid и про возможность использования групп(??). Но ничего толком собрать не могу.

man sudo, если я не ошибаюсь.

Запуск команды от имени пользователя: ‘sudo -u ‘
Чтобы не просил пароль надо будет прописать правило в /etc/sudoers
Так что man sudoers’ вам в помощь =)

Ох. про sudo знал, а вот про флажок -u впервые прочитал, благодарю. буду разбираться.

Итак, ничего не работает. Все равно просит пароль.

Вот мой файл sudoers:

Скрипт, ясное дело, просто для теста.

sudo -u carol /home/zoot/devel/trash/script.sh

А пароль таки просится. Если ввести, то все ок. ps -a -f | grep -i carol выдает таки, что процесс запущен под пользователем carol.

Да, уточню, система Ubuntu 10.10 Ибо с правами и sudo у нее может что особое? =)

Источник

Запуск bash скрипта от имени другого пользователя

Имеется следующая ситуация. Есть пользователь user, у которого нет прав суперпользователя. Есть апач, который является классическим www-data. Конечно есть root-суперпользователь. Задача: www-data должен иметь право запускать скрипт /var/www/example/script3.sh (user:user, 700) без пароля. После некоторых поисков вышел на решение с использованием sudoers, которое отлично сработало на 2 других скриптах, которые апач запускает как root. Но это решение не работает в случае с обычным пользователем. Содержание sudoers:

1 ответ 1

sudo — не автомагический системный демон, который запускает произвольный скрипт, прописанный в /etc/sudoers от имени указанного пользователя, а простая утилита. Таким образом, необходимо явно указывать, что необходимо выполнять через sudo и от имени какого пользователя это делать:

Как вариант, по необходимости можно также сделать отдельный proxy-скрипт,
/var/www/example/scrip3-proxy.sh:

my.php:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками linux ubuntu bash или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2020.9.18.37632

Источник

Команда su в Linux

В процессе работы у пользователя часто возникает задача выполнить команду с иными привилегиями. Например, когда он желает установить новую программу, обновить систему, настроить сетевой экран и др. В этом случае ему приходит на помощь команда su в Linux.

Данная команда заменяет пользователя оболочки shell на указанного. Фактически происходит запуск нового экземпляра оболочки с указанными параметрами. Благодаря этому возможно, не выходя из системы, совершенно безболезненно повышать возможности управления операционной системой или наоборот ограничивать их.

Команда su Linux

Команда имеет следующий синтаксис:

su [options] [-] [user]

Если вызов команды происходит без аргументов, то происходит смена пользователя оболочки shell на суперпользователя root. Программа выдаст приглашение ввода пароля, если пароль будет верным, то текущим пользователем станет root.

  • options — некоторые дополнительные возможности команды. Мы их рассмотрим ниже:
  • [-] — смена контекста выполнения оболочки на контекст указанного пользователя. Переменные $PATH, $HOME, $SHELL, $USER, $LOGNAME содержат значения, характерные для указанного пользователя. Домашняя папка пользователя меняется на другую.
  • user — имя пользователя, под которым продолжит работать командная оболочка.

Основные опции команды su:

  • -c, —command=command — запускает приложение под указанным аккаунтом;
  • -s, —shell=shell— происходит запуск для заданного пользователя указанной оболочки;
  • -, -l, —login — смена контекста выполнения на контекст заданного пользователя, аналогична смене пользователя системы для shell;
  • -g, —group=group — вызов пользователя, состоящего в заданной группе. Используется только для пользователя root;
  • -h, —help — вызов справки для команды.

Далее давайте рассмотрим примеры работы с утилитой su.

Примеры использования su

Смена пользователя на суперпользователя root, без смены окружения оболочки:

Обратите внимание, что здесь вам нужно набрать пароль не своего пользователя, а именно того, от имени которого вы хотите авторизоваться. В данном случае, пользователя root. Если вы получаете ошибку сбой при проверке подлинности su linux, то это может означать, что либо вы ввели пароль неверно, либо пароль для этого пользователя не задан. Такое можно встретить у пользователя root в Ubuntu и Linux Mint. Информацию о том как установить пароль вы можете найти в этой статье. Смена пользователя на суперпользователя root со сменой параметров окружения оболочки:

Смена пользователя на пользователя user01:

Смена пользователя на пользователя user01 со сменой окружения:

Запуск оболочки zsh для пользователя user01:

su -s /usr/bin/zsh user01

Запуск оболочки bash из оболочки zsh для пользователя user01:

su -s /usr/bin/bash user01

Запуск файлового менеджера Midnight Commander для пользователя user01:

Просмотр содержимого директории boot суперпользователем root:

Чтобы выйти из оболочки, открытой командой su можно использовать встроенную команду exit или сочетание клавиш Ctrl+d.

Выводы

Сегодня вы узнали что из себя представляет команда su linux, которая позволяет запустить оболочку от имени другого пользователя, как со сменой окружения, так и без. Узнали как выйти из этой оболочки.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Аудио редакторы для mac os
  • Аудио проигрыватель для mac os
  • Аудио конвертер файлов для mac os
  • Аудио кодеки для mac os
  • Аудио драйвер для mac os x