Derzeit wird xpra eingerichtet, das eine X-Instanz als Nicht-Root mit dem Dummy-Treiber ausführen möchte, aber die System-Xorg-Binärdatei ist SUID. Da das System automatisch aktualisiert wird, würde ich es vorziehen, keine Nicht-SUID-Kopie der Binärdatei zu erstellen und zu verwalten. Ich versuche auch zu vermeiden, einen Hack wie Copy-Execute-Delete zu verwenden, z. B. im tmp-Verzeichnis (würde es vorziehen, ihn zu einem sauberen Einzeiler zu machen, was ich instinktiv für möglich halte, obwohl es möglicherweise eine subtile Sicherheitslücke gibt diese Fähigkeit würde sich öffnen). Symlinks wären akzeptabel, obwohl AFAIK keine Berechtigungsbitmaskierungsfunktionen bietet.
Meine derzeit beste Lösung ist ein Nosuid-Bind-Mount im bin-Verzeichnis, was den Trick zu tun scheint, aber wie oben würde ich immer noch eine Lösung bevorzugen, die keinen Crunk in meinem Systembaum / fstab hinterlässt (z. B. eine magische Umgebungsvariable, die dies tut Deaktiviert suid auf die gleiche Weise wie ein Nosuid-Mount oder führt ein Befehlszeilen-Jutsu aus, das den suid-Mechanismus umgeht.
Irgendwelche Gedanken?
quelle
chmod
es oder so.Antworten:
Wenn
X
es dynamisch verknüpft ist, können Sie den dynamischen Linker wie folgt aufrufen:(
ld.so
an Ihr System anpassen (wie/lib/ld-linux.so.2
).Beispiel:
quelle
Wenn Sie
strace
, und es ist nicht zu root setuid, dannsollte arbeiten. strace (1) sagt (unter BUGS):
weil es ein Sicherheitsproblem wäre, wenn ein nicht privilegierter Benutzer ein Setuid-Programm verfolgen könnte (weil Sie mit der Verfolgung den Speicher des Prozesses untersuchen und ändern können). In einem speziellen Abschnitt namens SETUID INSTALLATION wird jedoch das oben Gesagte ein wenig abgesichert:
Wenn
strace
also setuid auf root installiert ist, funktioniert der obige Trick nicht. Dies sollte jedoch im Allgemeinen nicht der Fall sein. Und selbst wenn dies der Fall ist, können Sie dies umgehen, indem Sie eine private, nicht SUID-Kopie von erstellenstrace
. (Ich denke, selbst wenn es/bin/strace
automatisch aktualisiert wird, sollten Sie Ihre private Kopie nicht aktualisieren müssen .)Wie für den Befehl,
-e
erzählt ,strace
was e Lüftungsöffnungen zu verfolgen.-e all
würde bedeuten "Alle Ereignisse verfolgen" (dies ist die Standardeinstellung),-e '!all'
bedeutet also "Keine verfolgen". 1 Dies solltestrace
effektiv dazu führen, dass Sie nur bereitstehen und beobachten, wie Ihr Programm (das X-Programm) ausgeführt wird. Wenn es trotzdem zu unerwünschter Ausgabe kommt, leiten Sie die Ausgabe an um/dev/null
. (Dies setzt voraus, dass Sie die Konsolenausgabe vom X-Server nicht sehen müssen.)________________
1 Sie müssen wahrscheinlich ein Anführungszeichen setzen
!all
, um zu verhindern, dass die Shell die!
als Verlaufsreferenz behandelt .quelle