GNU/Linux >> Znalost Linux >  >> Linux

Možnosti Su – Spuštění příkazu jako jiný uživatel?

Přemýšlel jsem, jak spustit příkaz jako jiný uživatel ze skriptu.

Vlastník skriptu mám nastavený jako root. Ve skriptu se také spouští následující příkaz pro spuštění příkazu jako uživatel hudson:

su -c command hudson

Je toto správná syntaxe?

Přijatá odpověď:

Ano. Zde je --help :

$ su --help
Usage: su [options] [LOGIN]

Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                make the shell a login shell
  -m, -p,
  --preserve-environment        do not reset environment variables, and
                                keep the same shell
  -s, --shell SHELL             use SHELL instead of the default in passwd

A nějaké testování (použil jsem sudo protože neznám heslo pro nobody účet)

$ sudo su -c whoami nobody
[sudo] password for oli: 
nobody

Když váš příkaz přebírá argumenty, musíte je citovat. Pokud to neuděláte, budou se dít podivné věci. Zde se – jako root – pokouším vytvořit adresář v /home/oli (jako oli) bez cituji celý příkaz:

# su -c mkdir /home/oli/java oli
No passwd entry for user '/home/oli/java'

Čte se pouze mkdir jako hodnotu pro -c flag a pokouší se použít /home/oli/java jako uživatelské jméno. Když to budeme citovat, tak to prostě funguje:

# su -c "mkdir /home/oli/java" oli
# stat /home/oli/java
  File: ‘/home/oli/java’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 811h/2065d  Inode: 5817025     Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     oli)   Gid: ( 1000/     oli)
Access: 2016-02-16 10:49:15.467375905 +0000
Modify: 2016-02-16 10:49:15.467375905 +0000
Change: 2016-02-16 10:49:15.467375905 +0000
 Birth: -

Linux
  1. Jak si zapamatovat možnosti příkazů?

  2. Možnosti příkazu modprobe

  3. Možnosti příkazu grub-mkconfig

  1. Možnosti příkazu grub-install

  2. Možnosti příkazu dpkg-reconfigure

  3. Možnosti příkazu ufw

  1. su:příkaz nenalezen

  2. Jak zobrazit historii příkazů jiného uživatele v Linuxu?

  3. Spuštění Apache jako jiný uživatel