ACL auf dem GNU-Bildschirm ausgeben / anzeigen

2351
ℝaphink

Ich versuche, eine Schnittstelle zu erstellen, um das Festlegen der ACL im Bildschirm zu erleichtern. Das Festlegen der ACL ist ziemlich einfach. Ich kann jedoch keine Möglichkeit finden, die vorhandene ACL anzuzeigen oder zu sichern. Ein Blick in die Archive dieser Liste zeigte mir, dass ich in dieser Situation nicht der einzige bin. Die vorherige Frage zu diesem Thema scheint jedoch noch nie beantwortet worden zu sein.

Gibt es eine Möglichkeit, die vorhandene ACL aktuell auf dem Bildschirm anzuzeigen? Besser noch, gibt es eine Möglichkeit, sie in eine Datei / Stdout zu speichern?

3
Getacl und Getfacl sind keine Hilfe? Dan McGrath vor 14 Jahren 0
Nein, diese Befehle sind in Bildschirm 4.0.3 unbekannt. ℝaphink vor 14 Jahren 0
Sorry, SuperMagic hat geklärt, was Sie meinen. Ich spreche von Benutzer-ACL auf dem Bildschirm, der den Mehrbenutzer-Modus verwendet, nicht von Linux-Datei-ACL. ℝaphink vor 14 Jahren 0

1 Antwort auf die Frage

3
quack quixote

Gemäß dieser Anleitung auf dem Multiuser-Bildschirm gibt es derzeit keine Schnittstelle zu den internen ACLs von Screen. Dies stimmt mit dem Screen-Handbuch überein ; Weder die Abschnitte Commands noch Multiuser Session enthalten weitere Befehle, die sich auf die ACL beziehen. Hier ist die vollständige Liste:

  • acladd - Fügt Benutzer mit voller Berechtigung allen Fenstern hinzu.
  • aclchg - Fügt Benutzer mit flexibleren Berechtigungen hinzu oder ändert die Berechtigungen für einen vorhandenen Benutzer.
  • acldel - Entfernt einen Benutzer vom Bildschirmwissen.
  • aclgrp - Fügt einen Benutzer einer Gruppe hinzu oder beschreibt nur die Gruppenmitgliedschaft des Benutzers.
  • aclumask - Legt Standardberechtigungen für noch nicht erstellte Fenster fest.
  • defescape - Wie Escape, legt aber das Befehlszeichen für alle Benutzer fest.
  • defwritelock - Legt die Standardeinstellung für Writelock für neue Fenster fest.
  • Mehrbenutzer - Aktiviert oder deaktiviert den Mehrbenutzermodus.
  • su - Als anderer Benutzer arbeiten.
  • writelock - Legt den Writelock-Modus für das aktuelle Fenster fest.

Ich bin nicht vertraut mit den Internen von Screen. Wenn Sie jedoch auf andere als diese Befehle zugreifen möchten, müssen Sie die Quelle direkt überprüfen . Ihr Projekt scheint sich als sehr vorteilhaft für die Screen-Community zu erweisen. Ich wünsche Ihnen viel Erfolg bei der Umsetzung.


Wenn Sie sich das anschauen src/acls.h, sehen Sie die Strukturen aclusergroupund acluser; Es gibt auch eine Struktur aclin src/screen.h. Dies sind die grundlegenden Datenstrukturen. Es scheint, als seien Screen-ACLs im Wesentlichen eine verknüpfte Liste von aclusergroupKnoten, wobei der acluserKnoten die meisten der interessanten Daten enthält.

src/acls.centhält den ACL-Manipulationscode; beispielsweise die acladdund aclchgwerden Befehle sowohl von der Funktion verarbeitet UserAcl()(Zeile 864).

Die Struktur sieht so aus:

/* in screen.h */ struct acl { struct acl *next; char *name; };  /* in acls.h */ /* * How a user joins a group. * Here is the node to construct one list per user. */ struct aclusergroup { struct acluser *u; /* the user who borrows us his rights */ struct aclusergroup *next; };  /* ... */  /* * A User has a list of groups, and points to other users.  * users is the User entry of the session owner (creator) * and anchors all other users. Add/Delete users there. */ typedef struct acluser { struct acluser *u_next; /* continue the main user list */ char u_name[20+1]; /* login name how he showed up */ char *u_password; /* his password (may be NullStr). */ int u_checkpassword; /* nonzero if this u_password is valid */ int u_detachwin; /* the window where he last detached */ int u_detachotherwin; /* window that was "other" when he detached */ int u_Esc, u_MetaEsc; /* the users screen escape character */ #ifdef COPY_PASTE struct plop u_plop; /* internal copy-paste buffer */ #endif #ifdef MULTIUSER int u_id; /* a uniq index in the bitfields. */ AclBits u_umask_w_bits[ACL_BITS_PER_WIN]; /* his window create umask */ struct aclusergroup *u_group; /* linked list of pointers to other users */ #endif } User; 

Der ACL-Code scheint bei der Kompilierung des Bildschirms enthalten zu sein MULTIUSER(obwohl ich nicht sicher bin, ob dies in der Befehlszeile oder in einer anderen Header-Datei definiert ist). Wenn Sie also nach diesem Schlüsselwort suchen, können Sie bestimmten Mehrbenutzer-Code finden.

Danke ~ Quacksalber. Leider sind meine C-Fähigkeiten ziemlich schlecht. Ich habe mir den Code angesehen und verstehe nicht wirklich, wie Befehle mit Funktionen in acls.c verknüpft sind, aber ich kann später noch einmal nachsehen. ℝaphink vor 14 Jahren 0
@ Raphink: Beginne mit acls.h; Dort werden die Datenstrukturen gespeichert. aktualisiert mit dem, was ich erkennen kann. Dies bedeutet, dass Sie in den Bereich für den Stapelüberlauf geraten. Wenn Sie also mehr Details wünschen, als ich hier angeben kann, sollten Sie dort eine Frage stellen. quack quixote vor 14 Jahren 0
Ich akzeptiere dies als Antwort, da es momentan keine Möglichkeit gibt, dies zu erreichen, und Sie liefern die notwendigen Informationen, um sie umzusetzen (wenn ich motiviert bin, sie zu hacken). ℝaphink vor 13 Jahren 0