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

Вроде бы такие простые вещи должны знать, но иногда в порыве паники всё вылетает из головы :). Как бы там не было, опишу здесь команды, которые применяются для этого, в *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 оказывается вместе )))))))

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

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