Melden Sie sich als Benutzer ohne Rootberechtigung im Terminal an

18

Dies ist eine Frage, die ich erwarten würde, schnell eine Antwort von Google zu erhalten. Jedoch versagt irgendwie Google mir. Angenommen, ich bin in einer Terminalsitzung angemeldet und möchte vorübergehend als ein anderer Benutzer ohne Rootberechtigung arbeiten, dessen Kennwort ich kenne, ohne meine Sitzung zu verlassen. Wenn ich als dieser Benutzer angemeldet bin, möchte ich, dass das Basisverzeichnis usw. für diesen Benutzer korrekt eingerichtet wird, bis ich mich abmelde. Wie mache ich das?

Ich habe es versucht

su -- username

Wenn Sie dann das Kennwort eingeben, ist kein Fehler aufgetreten. Es wurden jedoch keine sichtbaren Änderungen an der Eingabeaufforderung festgestellt. Es wird weiterhin "Mein Name @ meinHost" angezeigt. Das Home-Verzeichnis war auch das von myname und nicht das neue Login, unter dem ich mich einloggen wollte.

Ich bin - wie es jetzt offensichtlich ist - ziemlich unerfahren in Linux / Ubuntu, daher sind alle Informationen willkommen.

Andrew Savinykh
quelle

Antworten:

18

Zu welchem ​​Benutzer möchten Sie wechseln?

Das Problem ist, dass Sie versuchen, einem Benutzer "su" zuzuweisen, dem keine Shell zugewiesen ist. Den meisten Benutzern, wie z. B. mysql, pulse usw., die vom System oder von einigen Paketen bei der Installation von Software erstellt wurden, ist keine Shell zugewiesen.

Sie können überprüfen, ob einem Benutzer eine Shell zugewiesen wurde, indem Sie in die /etc/passwdDatei schauen. Schauen Sie sich einfach das Ende der Zeile eines jeden Benutzers an, wenn es heißt /bin/false, dass ihm keine Shell zugewiesen wurde, wenn ihm etwas Ähnliches /bin/bashoder ein anderes zugewiesen wurde Shell, dann sollten Sie in der Lage sein, "su" in diesen Benutzer.

Wenn ich "Shell zugewiesen" sage, bedeutet dies im Grunde, dass es "Shell-Zugriff" hat.

Wenn der Benutzer keinen Shell-Zugriff hat, können Sie Befehle immer als dieser Benutzer mit ausführen

 sudo -u user command
Sam
quelle
Wenn der Benutzer keinen Shell-Zugriff hat, können Sie Befehle immer als dieser Benutzer mit "sudo -u user command"
Sam,
Hängen Sie -s /bin/bashan Ihren suBefehl an oder verwenden Sie chsh -u username -s /bin/bash, um die Shell für einen Benutzer zu ändern. Beachten Sie die möglichen Auswirkungen auf die Sicherheit.
gertvdijk
6

Wenn Sie Sudo-Zugang haben, würde ich empfehlen

sudo su username -

Im Grunde ist es dasselbe, aber Sie müssen nur Ihr Passwort kennen, nicht die anderen Benutzer.

Wenn Sie jedoch das Kennwort des anderen Benutzers haben:

su username - sollte gut funktionieren.

beachte die 1 - und dass es am Ende ist.

coteyr
quelle
Irgendwie verhalten sich beide von Ihnen beschriebenen Methoden genauso wie meine - der Befehl wird ohne Fehler akzeptiert, aber das Ausgangsverzeichnis stimmt nicht und die Eingabeaufforderung besagt, dass ich immer noch der ursprüngliche Benutzer bin. Wenn ich mich danach auslogge, logge ich mich komplett aus.
Andrew Savinykh
Ok, darf sich der Benutzer, mit dem Sie sich anmelden, anmelden? Sie können verhindern, dass sich ein Konto anmeldet, indem Sie die Shell auf "true" setzen. Dies geschieht genau so, wie Sie es beschrieben haben. Dies wurde oft für "System" -Konten wie "Apache" und "FTP" verwendet sudo cat /etc/passwd. Schauen Sie einfach rein und stellen Sie sicher, dass der Benutzer eine echte Shell als letzten Teil seiner Linie hat.
Coteyr
1
Nebenbei bemerkt, der richtige Weg, dies zu tun, besteht darin, eine Shell auf "false" zu setzen, was einen Fehler auslöst. Obwohl einige Systeme und Konten aus technischen oder Psudo-Sicherheitsgründen immer noch true verwenden (um den Rotz von Wana-Be-Hackern zu verschlimmern)
coteyr