Ja. Hier ist der --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
das Passwort für den nobody
Account verwendet, da ich es nicht kenne )
$ sudo su -c whoami nobody
[sudo] password for oli:
nobody
Wenn Ihr Befehl Argumente akzeptiert, müssen Sie sie in Anführungszeichen setzen. Wenn Sie dies nicht tun, werden seltsame Dinge passieren. Hier bin ich als Root und versuche, ein Verzeichnis in / home / oli (als oli) zu erstellen, ohne den vollständigen Befehl anzugeben :
# su -c mkdir /home/oli/java oli
No passwd entry for user '/home/oli/java'
Es wird nur mkdir
als Wert für das -c
Flag gelesen und versucht, es /home/oli/java
als Benutzername zu verwenden. Wenn wir es zitieren, funktioniert es 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: -
sudo cat /etc/passwd | grep user-abc
. Wenn Sie so etwas sehen:user-abc:x:994:994::/home/user-abc:/bin/false
dann wird es nicht funktionieren. Das liegt daran, dass der letzte Teil "/bin/false
" bedeutet, dass es für diesen Benutzer keine Shell gibt.