Sie können dies mit su
oder tun sudo
, ohne dass Sie beides benötigen.
sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
Die relevanten Teile von man sudo
:
-H The -H (HOME) option requests that the security policy set
the HOME environment variable to the home directory of the
target user (root by default) as specified by the password
database. Depending on the policy, this may be the default
behavior.
-u user The -u (user) option causes sudo to run the specified
command as a user other than root. To specify a uid
instead of a user name, use #uid. When running commands as
a uid, many shells require that the '#' be escaped with a
backslash ('\'). Security policies may restrict uids to
those listed in the password database. The sudoers policy
allows uids that are not in the password database as long
as the targetpw option is not set. Other security policies
may not support this.
su
Benutzer kann nur ohne Angabe eines Kennworts gewechselt werden, wenn Sie als Root angemeldet sind. Siehe Calebs Antwort
Sie können die /etc/pam.d/su
Datei ändern , um sie su
ohne Kennwort zuzulassen . Siehe diese Antwort .
Wenn Sie Ihre Auth - Datei in dem folgenden geändert, jeder Benutzer, war Teil der Gruppe somegroup
konnte su
zu , otheruser
ohne ein Passwort.
auth sufficient pam_rootok.so
auth [success=ignore default=1] pam_succeed_if.so user = otheruser
auth sufficient pam_succeed_if.so use_uid user ingroup somegroup
Dann vom Terminal aus testen
rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser
su
auch geht?Wenn Sie su anstelle von sudo verwenden möchten, können Sie meines Erachtens Folgendes verwenden:
-
simuliert ein Login des angegebenen Benutzers-c
teilt mit, dass Sie einen Befehl ausführen möchtenps. Leider kann ich Ruby mit rvm mit dieser Methode nicht installieren, aber das hängt wahrscheinlich nicht zusammen.
quelle
sudo
am Anfang hinzufügen , da ich sonst nach meinem Passwort gefragt wurde.sudo
. mit sudo funktioniert es zum beispiel:sudo su - www-data -c "touch /tmp/test"
erfolgreich eine datei als www-daten erstelltDie Antworten oben sind wirklich nützlich für mich, aber um die eigentliche Frage zu beantworten ...
Verwenden:
Die Ausgabe sollte Ihr Skript und den tatsächlichen Benutzer enthalten, der es ausführt. Leute auf BSD-ähnlichen Systemen, zB MAC, können ähnliche Informationen finden mit:
quelle
Ich hatte das gleiche problem Geben Sie einfach den Befehl
screen -dmS testscreen
ein, mit dem ein getrennter Bildschirm in Ihrem Nicht-Sudo-Benutzerkonto erstellt wird. Anschließend können Sie ihn protokollieren und überprüfen, ob dieser Bildschirm vorhanden istscreen -ls
.quelle