Выполнение команды от другого пользователя
Есть пользователь test и test1. Оба с обычными правами. Я работаю с пользователем test, известно что test1 не имеет пароля, и именно от него я хочу выполнить команду. Попробовал сделать так:
su test1 -c whoami
Но оно хочет какой-то пароль, хотя его нет. Возможно есть другие решения? Sudo не вариант так как пользователь test не прописан в файле sudoers.
OS: FreeBSD 8.1 amd64
Отслеживать
задан 11 дек 2015 в 5:19
Filipp Mustang Filipp Mustang
555 1 1 золотой знак 6 6 серебряных знаков 15 15 бронзовых знаков
Ну если нет у test1 пароля — при запросе пароля нажмите Enter да и всё.
11 дек 2015 в 5:30
Пробовал, дает ошибку: Сбой при проверке подлинности. Если запускать от рута то все работает, но суть в том что у меня обычный пользователь.
11 дек 2015 в 6:10
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
нет пароля — значит, под именем этого пользователя нельзя аутентифицироваться, что и требуется при использовании программы su (у суперпользователя есть привилегия аутентифицироваться с помощью этой программы без использования пароля пользователя).
мне известно как минимум два варианта решения:
-
присвойте пароль этому пользователю. от имени суперпользователя:
# passwd test1
test ALL = (test1) ALL
это даст возможность пользователю test выполнять любые программы/команды от имени пользователя test1:
$ sudo -u test1 whoami
запрашиваться при этом будет пароль пользователя test. можно сделать и без запроса пароля, добавив директиву NOPASSWD: в приведённую выше строку:
test ALL = (test1) NOPASSWD: ALL
Как выполнять команды от имени другого пользователя в Linux

Linux — наиболее широко используемая операционная система с открытым исходным кодом. Пользователи Linux имеют большое количество вариантов выбора операционной системы. У вас есть несколько вариантов выбора рабочего стола для ваших систем Linux. Профи Linux по-прежнему любят работу с командной строкой. В основном серверные версии Linux поставляются только с опцией командной строки, что делает их легче и быстрее.
Пользователи Linux используют оболочку для взаимодействия с операционными системами. Где Bash (Born Shell) является наиболее используемой оболочкой и доступна по умолчанию в большинстве систем. Сейчас Zsh (Z Shell) также становится популярным среди пользователей благодаря своим возможностям.
В этом руководстве вы узнаете, как запустить команду от имени другого пользователя в системах Linux/Unix.
Выполнять команды от имени другого пользователя с кнопкой Вверх
Команда su (сменить пользователя) используется для запуска оболочки от имени другого пользователя. Эта команда переключается на нового пользователя и загружает его среду.
Основная команда su выглядит следующим образом:
su - username
Приведенная выше команда позволяет вам перейти к другому пользователю, где вы можете выполнять команды с этим пользователем. Но наша цель — запустить команду Linux от имени другого пользователя, не переключая пользователей. Для этого ознакомьтесь с примером ниже.
В настоящее время я вошел в систему как root. Вы можете передать свою команду с параметром -c . Теперь в следующем примере команда ls будет запущена от имени пользователя alice без переключения пользователя:
su - alice -c "pwd"
/home/alice
Вы также можете запускать несколько команд от имени другого пользователя в Linux, например:
su - alice -c "pwd; mkdir hello && cd hello; pwd"
/home/alice /home/alice/hello
В приведенной выше команде он сначала печатает текущий рабочий каталог с pwd, затем создает и переходит в новый каталог с именем hello . Снова распечатайте существующий рабочий каталог. Все команды разделены точкой с запятой ; как у нас вообще.
Запустите команду от имени другого пользователя с помощью Sudo.
Этот метод обычно используется для запуска команды от имени пользователя root, но вы также можете использовать его с другими пользователями. Здесь нет необходимости использовать какие-либо параметры командной строки. Введите имя пользователя, с которым вы хотите выполнить команду.
sudo -u username [commands. ]
Например, вы пишете сценарий оболочки, который необходимо запускать от имени пользователя без полномочий root. Но вам нужно перезапустить службу apache2 . В этом случае вы можете использовать sudo для запуска команды от имени пользователя root:
sudo -u root 'systemctl restart apache2'
Запустите команду от имени другого пользователя с помощью Runuser
Вы также можете использовать runuser для выполнения команд, как другой пользователь в системах Linux. Это команды, менее известные пользователям Linux. Используйте команду runuser для запуска команд с фактическим идентификатором пользователя и идентификатором группы определенного пользователя.
runuser - username -c [commands. ]
Например, запустите команду от имени пользователя alice и создайте каталог в ее домашнем каталоге:
runuser - alice -c 'mkdir -p ~/hello'
Затем перечислите файлы в домашнем каталоге пользователя alice :
runuser - alice -c 'ls -l'
total 16 -rw-r--r-- 1 alice alice 8980 Feb 16 2020 examples.desktop drwxr-xr-x 2 alice alice 4096 Dec 22 14:55 hello
Вы также можете запустить обе команды в одной команде. Просто добавьте несколько команд, разделенных точкой с запятой:
runuser - alice -c 'mkdir -p ~/hello; ls -l'
Вывод
В этом руководстве вы узнали, как выполнять команды от имени другого пользователя в системе Linux. Вы научились выполнять команды от имени другого пользователя с помощью команд su, sudo и Linux runuser.
Supportaci se ti piacciono i nostri contenuti. Grazie.
Noviello.it Newsletter
Ricevi gli ultimi approfondimenti direttamente nella tua casella di posta!
Запуск команд от имени другого пользователя через Sudo в системах Linux

Мануал
Автор cryptoparty На чтение 5 мин Опубликовано 11.04.2022
Представьте себе такой сценарий. Вы управляете сервером Linux, к которому имеют доступ несколько пользователей.
Все пользователи имеют права sudo.
Вы хотите протестировать определенные команды Linux с разными пользователями.
Как бы вы это сделали?
Войти в систему от имени одного пользователя и протестировать команды, а затем выйти из системы и снова войти от имени другого пользователя и протестировать команды?
Да, это один из способов сделать это.
Однако существует простой способ запуска команд от имени другого пользователя через sudo в Linux.
Читайте дальше, чтобы узнать об этом.
Для целей этого руководства я создал две учетные записи пользователей “itsecforu” и “itisgood” на своей тестовой машине AlmaLinux 8.
Я собираюсь использовать “itsecforu” в качестве текущего пользователя и “itisgood” в качестве целевого пользователя.
Я хочу, чтобы пользователь “itsecforu” мог выполнять любую команду от имени пользователя “itisgood” на любом хосте, не входя в систему под именем “itisgood”
Запуск команд от имени другого пользователя через Sudo
В настоящее время я вошел в систему как пользователь “itsecforu”.
Позвольте мне показать вам текущего пользователя, вошедшего в систему, с помощью команды whoami.
$ whoami itsecforu
Теперь я собираюсь выполнить простую команду “echo” с помощью sudo в качестве целевого пользователя “itisgood”, войдя в систему под именем “itsecforu”:
$ sudo -u itisgood bash -c 'echo "My Username is $USER, and my user ID is $UID"'
Вам будет предложено ввести пароль текущего пользователя (в данном случае “itsecforu”). После аутентификации команда echo будет запущена от имени пользователя “itisgood” и отобразит имя пользователя и идентификатор пользователя “itisgood”.
[sudo] password for itsecforu: My Username is itisgood , and my user ID is 1001
На самом деле мы только что выполнили команду “echo” от имени пользователя “itisgood”, в то время как мы вошли в систему под именем “itsecforu”.
Вот почему вы видите имя пользователя и идентификатор пользователя “itisgood”, но не “itsecforu”.
Давайте проверим, правильно ли указан uid пользователя “itisgood” с помощью команды id.
$ id itisgood uid=1001(itisgood) gid=1001(itisgood) groups=1001(itisgood),10(wheel)
Здесь флаг -u используется для запуска заданной команды от имени другого пользователя (в данном случае itisgood), а bash -c используется для указания имени команды.
Вы должны указать команду в одинарной кавычке.
Если вы не используете опцию bash -c, команда echo вернет имя пользователя и uid текущего пользователя вместо целевого пользователя.
$ sudo -u itisgood echo "My Username is $USER, and my user ID is $UID" My Username is itsecforu, and my user ID is 1000
Аналогичным образом вы можете запускать любые команды от имени другого пользователя.
Обратите внимание, что в нашем предыдущем примере команды я не ввел пароль sudo для целевого пользователя.
Потому что команда echo не требует пароля sudo.
Если вы запускаете команду, требующую разрешения sudo, от имени другого пользователя, вы должны ввести пароль.
Вот еще один пример.
$ sudo -u itisgood bash -c 'sudo dnf --refresh update'
[sudo] password for itsecforu: [sudo] password for itisgood : AlmaLinux 8 - BaseOS 344 B/s | 4.3 kB 00:12 AlmaLinux 8 - AppStream 388 B/s | 4.7 kB 00:12 AlmaLinux 8 - Extras 316 B/s | 3.9 kB 00:12 Dependencies resolved. Nothing to do. Complete!
Аналогичным образом вы можете запускать любые команды от имени другого пользователя.
Обратите внимание, что в нашем предыдущем примере команды я не ввел пароль sudo для целевого пользователя.
Потому что команда echo не требует пароля sudo.
Если вы запускаете команду, требующую разрешения sudo, от имени другого пользователя, вы должны ввести пароль.
Вот еще один пример.
$ sudo -u itisgood bash -c '~/backup_script_name'
Запуск команд без пароля Sudo
Иногда вы можете оказаться в ситуации, когда не хотите вводить пароль sudo для каждой команды.
В таких случаях вы можете пропустить запрос пароля для определенных команд, добавив опцию NOPASSWD в файл /etc/sudoers.
Допустим, вы хотите разрешить пользователям выполнять любую команду dnf без пароля sudo.
Для этого сначала найдите путь к команде dnf с помощью команд which или whereis.
$ which dnf /usr/bin/dnf
$ whereis dnf dnf: /usr/bin/dnf /etc/dnf /usr/share/man/man8/dnf.8.gz
Как вы видите, путь к исполняемой команде dnf – /usr/bin/dnf.
Теперь отредактируйте файлы /etc/sudoers с помощью команды:
$ sudo visudo
Внимание: Обратите внимание, что вы не должны вручную редактировать файл sudoers с помощью любого текстового редактора. Всегда используйте команду visudo для безопасного редактирования файла sudoers.
Добавьте следующую строку в конец файла, чтобы разрешить пользователям запускать команды dnf без пароля sudo.
itisgood ALL=NOPASSWD:/usr/bin/dnf
Сохраните файл и выйдите.
Теперь пользователь “itisgood” может выполнять команды dnf без пароля sudo.
$ sudo -u itisgood bash -c 'sudo dnf --refresh update' [sudo] password for itsecforu: AlmaLinux 8 - BaseOS 358 B/s | 4.3 kB 00:12 AlmaLinux 8 - AppStream 324 B/s | 4.7 kB 00:14 AlmaLinux 8 - Extras 302 B/s | 3.9 kB 00:13 Dependencies resolved. Nothing to do. Complete!
Видите? Нам не нужно вводить пароль sudo для “itisgood”
Отказ от ответственности: Вы должны быть очень осторожны при применении этого метода. Этот метод может быть использован как в продуктивных, так и в разрушительных целях. Например, если вы позволите пользователям выполнять команду ‘rm’ без пароля sudo, они могут случайно или намеренно удалить важные файлы. Не делайте этого, если это действительно необходимо.
.
Заключение
В этом кратком руководстве мы обсудили, как разрешить пользователям выполнять команды от имени другого пользователя с помощью sudo в Linux.
Мы также узнали, как можно отключить запрос пароля sudo для определенных пользователей при выполнении определенной команды (команд), изменив файл sudoers.
Как я предупреждал, вы должны быть осторожны при тестировании этого метода на рабочей системе. Вы можете неосознанно позволить пользователю выполнить опасную команду (например, rm) без необходимости вводить пароль sudo.
Вы всегда должны быть осторожны при тестировании подобных советов по Linux.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 385)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (835)
- Обход запретов (34)
- Опросы (3)
- Скрипты (122)
- Статьи (366)
- Философия (133)
- Юмор (19)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- Как проверить IPv4-адреса в скрипте 25.12.2023
Проверка IP-адресов – распространенная задача в сетевом и системном администрировании. В этом уроке мы узнаем, как проверить IPv4-адреса с помощью скрипта оболочки. Это особенно полезно в ситуациях, когда нужно убедиться, что пользовательский ввод или данные из другого источника имеют правильный формат IPv4. IPv4 против IPv6: В чем разница между IPv4 и IPv6 Понимание формата адресов […]
Deep Packet Inspection (DPI) – это передовая техника сетевой фильтрации. Если традиционные методы мониторинга и фильтрации сети позволяют лишь поверхностно изучить заголовки пакетов, то DPI проникает глубже, тщательно анализируя фактическое содержание данных в пакетах. Такая детальная проверка позволяет получить полное представление о потоке данных, что дает возможность определить не только тип или категорию данных, но […]
Обратный инжиниринг, термин, часто ассоциируемый с технологическими инновациями и решением проблем, включает в себя сложный процесс раскрытия дизайна, структуры или функциональности продукта, системы или части технологии, чтобы понять их внутреннюю работу. Эта многогранная дисциплина играет ключевую роль в различных отраслях промышленности, способствуя инновациям, обеспечивая совместимость и способствуя продвижению вперед. Сегодня обратный инжиниринг услуги выполняют одни из лучших […]
Компания “Автозайм”: надежное залоговое кредитование в СПб и по всей России “Автозайм” представляет собой современный автоломбард, который оперирует в различных городах России, включая Санкт-Петербург – https://spb.carzaem.ru/autolombard. Компания специализируется на предоставлении кредитов под залог автомобилей, предлагая клиентам удобные и прозрачные условия. Основные преимущества Быстрый и простой процесс. Процедура получения займа в “Автозайм” максимально упрощена. Клиенты могут подать […]
Мы рассмотрим подписание коммитов и тегов ключом GPG, а также отправку и получение открытых ключей GPG на сервер ключей для проверки. Шпаргалка Неподписанный коммит: Подписанный коммит: Если ваши адреса электронной почты git и gpg-ключа отличаются, это приведет к неудаче, пока вы не настроите свой git signingkey Неподписанный тег: Подписанный тег: Переопределение параметров конфигурации автоподписания: Импорт […]
Как запустить (выполнить) команду от имени данного (конкретного) пользователя в Linux,Debian,Ubuntu,Kali Linux,RHEL,CentOS и т. д. в терминале (командной строке) 1 мин для чтения


Добавить в избранное
Главное меню » Linux » Как запустить (выполнить) команду от имени данного (конкретного) пользователя в Linux,Debian,Ubuntu,Kali Linux,RHEL,CentOS и т. д. в терминале (командной строке)

В этом методе нам нужно будет ввести пароль текущего пользователя.
sudo -u sudo -u mkdir /tmp/test
Переключится на данного/конкретного пользователя, чтобы запустить команду (su -u )
В этом методе нам потребуется ввести пароль для данного/указанного пользователя.
su -u su -u anotherUser mkdir /tmp/test
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.