Verwirrung mit sudo und mehreren lokalen Konten

Ich habe Schwierigkeiten herauszufinden, warum bestimmte Dinge auf einem Mac-Terminal viel komplizierter sind als auf einer Standard-Linux-Shell.

locateAngenommen, ich habe zwei lokale Konten, einen Administrator namens "adm" und einen Standardbenutzer "usracc", und ich möchte die Datenbank mit dem Befehl aktualisieren können updatedb. Ich muss einfach ausführen sudo updatedb, außer dass usracc nicht in der sudoers-Liste steht.

Ok, sage ich und su admdann sudo updatedbsagt mir das, dass der updatedbBefehl nicht gefunden wird. Also zur Wiederholung:

  1. mein normales Benutzerkonto ist nicht auf der sudoers-Liste (das ist eigentlich beabsichtigt, da ich das System nicht kompromittieren möchte, wenn das Passwort für dieses Konto kompromittiert wird).

  2. Mein Admin-Konto kann sudo, aber anscheinend nicht diesen bestimmten Befehl, der aus irgendeinem Grund nicht gefunden werden kann.

  3. Wenn ich suzu meinem Admin-Konto gehe, sehe ich; shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission deniedwas jedes Mal wiederholt wird, wenn ich versuche, mit der Tabulatortaste eine Inhaltshilfe zu erhalten.

Wenn also das Root-Konto deaktiviert ist, zwingt Apple Sie dazu, Benutzerkonten sudo-Privilegien zu erteilen, um einfache Dinge tun zu können. Wie genau hilft das bei der Sicherheit? Oder habe ich hier etwas komplett falsch verstanden?

Antworten (1)

Sie übertragen Ihre Shell-Umgebung nicht in die su admSitzung. Wenn Sie sich also echo $PATHim usracc-Konto und im adm-Konto befinden, werden Sie feststellen, dass sie nicht gleich sind (weshalb adm den updatedb-Befehl nicht finden kann). Alles, was Sie tun müssen, ist su mitzuteilen, dass Sie Ihre env übertragen möchten ( su -m admsollte es tun) oder einfach den Pfad zu updatedb hinzufügen.

Obwohl auf meiner Box updatedb heißt /usr/libexec/locate.updatedbund ein Skript ist.