GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Su-Optionen – Befehl als anderer Benutzer ausführen?

Ich habe mich gefragt, wie man einen Befehl als ein anderer Benutzer von einem Skript aus ausführen kann.

Ich habe den Besitzer des Skripts als root festgelegt. Ich habe auch den folgenden Befehl, der innerhalb des Skripts ausgeführt wird, um den Befehl als Hudson-Benutzer auszuführen:

su -c command hudson

Ist das die richtige Syntax?

Akzeptierte Antwort:

Ja. Hier ist die --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

Und einige Tests (ich habe sudo verwendet da ich das Passwort für nobody nicht kenne Konto)

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

Wenn Ihr Befehl Argumente akzeptiert, müssen Sie diese in Anführungszeichen setzen. Wenn Sie dies nicht tun, werden seltsame Dinge passieren. Hier versuche ich —als root—, ohne ein Verzeichnis in /home/oli (als oli) anzulegen unter Angabe des vollständigen Befehls:

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

Es wird nur mkdir gelesen als Wert für -c Flag und es versucht, /home/oli/java zu verwenden als Benutzername. Wenn wir es zitieren, es funktioniert einfach:

# 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. Wie merkt man sich Befehlsoptionen?

  2. modprobe-Befehlsoptionen

  3. grub-mkconfig-Befehlsoptionen

  4. grub-install-Befehlsoptionen

  5. dpkg-reconfigure-Befehlsoptionen

Meine bevorzugten Linux-Top-Befehlsoptionen

Su-Befehl in Linux (Benutzer wechseln)

ID-Befehl unter Linux

Usermod-Befehl unter Linux

su-Befehl unter Linux

Ausführen von Apache als ein anderer Benutzer