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

Вроде бы такие простые вещи должны знать, но иногда в порыве паники всё вылетает из головы :). Как бы там не было, опишу здесь команды, которые применяются для этого, в *nixwindows системах.

Windows

Существует несколько команд, одна встроенная (runas), остальные ставятся отдельно (например, psexec из комплекта pstools).

— runas

Формат её следующий:

runas [{/profile|/noprofile}] /user:учетная_запись_пользователя program

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

runas /user:учетная_запись_пользователя program

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

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

runas /user:mymachine\administrator CMD
runas /user:SCOT_DOMAIN\administrator NOTEPAD
runas /user:jDoe@swest.ss64.com "NOTEPAD \"my file.txt\""

Третий пример показывает, как нужно поступать, в случае, если программу, которую нужно запустить, содержит пробелы и нужно заключать в кавычки.

Плюсы — очевидны: минимум функционала, простота в использовании.

Минусы: нельзя запустить програму в фоне.

— psexec

Формат следующий:

psexec \\computer[,computer[,..] command
psexec @run_file command

Это вообще комбайн по фонкционалу, может запускать програму на удалённом компьютере от указанного пользователя, запуск в фоне и много другого. Полный перечень можно найти в справке к программе. Нам же будет интересны только опции, отвечающие за запуск от указанного юзера. Вот опции, которые нам будут интересны:

computer  На каком компьютере запускать программу. По дефолту = локальный. Для запуска на всех компьютерах домена, вводим «\\*»
@run_file  Запуск на всех компьютерах, укаханных в файле run_file.
-p psswd   Задаёт пароль для пользователя, указанного через ключ -u user (опционально). Пароль задаётся в виде открытого текста. Если ключ стоит, а пароль не задан, при выполнении будет запрашиваться пароль
-s             Запустить процесс с системным аккаунтом (аккаунт System)
-u user      Specify a user name for login to remote computer(optional).
-d             Don’t wait for the application to terminate. Only use for non-interactive applications.

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

psexec \\workstation64 ipconfig /all
psexec \\workstation64 "c:\Program Files\test.exe"
psexec -d "c:\program files\internet explorer\iexplore.exe"

Первая и вторая — запуск программы на компьютере workstation64, третья — запуск на локальной машине в фоновом режиме.

*nix

Здесь тоже 2 команды: одна как бы стандартная (su), а вторая — устанавливается отдельно (sudo).

— su

Формат:

su -c "command" user

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

su -c "less /home/fred/secret" fred

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

-sudo

Формат:

sudo -h | -K | -k | -L | -l | -V | -v
sudo [-bEHPS] [-c class|-] [-p prompt] [-u username|#uid] [VAR=value] {-i | -s | command}

Но лучше запомнить короткую форму:

sudo -u user command

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

sudo cat /var/log/auth.log
sudo -u fred mv /home/fred/secret /home/fred/supersecret

-pfexec (Только для Solaris)

pfexec command

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

  1. tehnikpc

    «Как бы там не было, опишу здесь команды, которые применяются для этого, в *nix, windowsсистемах.»
    Откуда взялся windows?

    1. skeletor Автор записи

      Что значит «откуда взялся»? Есть такая ОС, вот и для неё я так же привёл аналоги

  2. Дархан

    Спасибо долго искал эту команду почему то все время писал run as отдельно runas оказывается вместе )))))))

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

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