J'essaie de créer une interface pour faciliter l'installation de l'ACL à l'écran. Le réglage ACL est assez simple, mais je ne peux pas trouver un moyen de montrer ou de supprimer la ACL existante. Un regard dans les archives de cette liste m'a montré que je ne suis pas le seul dans cette situation. Cependant, la question précédente sur ce sujet semble n'avoir jamais été répondu.
Existe-t-il un moyen de voir l'ACL existante dans l'écran actuellement? Mieux encore, y at-il un moyen de les jeter à un fichier / stdout?
Selon ce mode d'emploi sur l'écran multi-utilisateur , il n'existe actuellement pas d'interface pour les ACL internes de l'écran. Ce manuel contient le manuel de l' écran ; Ni les sections Commandes ni les sessions multi-utilisateur ne donnent d'autres commandes liées à la LCA. Voici la liste complète:
Je ne connais pas les composants internes de l'écran, mais si vous souhaitez accéder aux ACL d'écran d'une manière autre que ces commandes, vous devez vérifier la source directement. Votre projet semble être très bénéfique pour la communauté Screen, alors je vous souhaite bonne chance pour la mettre en œuvre.
Si vous regardez src/acls.h
, vous verrez les structures du groupe aclusergroup
et acluser
; Il y a aussi une struct acl
dans src/screen.h
. Ce sont les structures de données de base; Il semble que les ACL d'écran sont essentiellement une liste liée de nœuds de aclusergroup
d' aclusergroup
, le nœud d'utilisateur contenant la plupart des données intéressantes.
src/acls.c
contient le code de manipulation ACL; Par exemple, les commandes acladd
et aclchg
sont traitées par la fonction UserAcl()
(ligne 864).
La structure ressemble à ceci:
/* 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;
Le code ACL semble être inclus lorsque l'écran est compilé avec MULTIUSER
(même si je ne suis pas sûr si cela est défini sur la ligne de commande ou dans un autre fichier d'en-tête), alors la recherche de ce mot-clé peut vous aider à trouver un code multi-utilisateur spécifique.