Выведите/покажите ACL на экране GNU

Я пытаюсь сделать интерфейс, чтобы помочь установить ACL на экране. Установка ACL довольно легка, однако, я не могу найти способ показать или вывести существующий ACL. Взгляд в архивах этого списка показал мне, я не единственный в этой ситуации. Однако на предыдущий вопрос на этом предмете, кажется, никогда не отвечали.

Существует ли способ видеть существующий ACL на экране в настоящее время? Еще лучше существует ли способ вывести их к file/stdout?

3
задан 08.08.2011, 23:30

1 ответ

Согласно этому практическому руководству на многопользовательском Экране, в настоящее время нет интерфейса к внутреннему ACLs Экрана. Это танцует джайв с Экранным руководством; ни Команды, ни Многопользовательские разделы Сессии не дают никакие другие связанные с ACL команды. Вот полный список:

  • acladd - Добавляют пользователи с полными полномочиями ко всем окнам.
  • aclchg - Добавляют пользователи с более гибкими полномочиями или изменяют полномочия на существующем пользователе.
  • acldel - Удаляет пользователя из знания экрана.
  • aclgrp - Добавляет пользователь к группе или просто описывает состав группы пользователя.
  • aclumask - Полномочия значения по умолчанию наборов для окон еще не создаются.
  • defescape - Как Escape, но наборы управляющий символ для всех пользователей.
  • defwritelock - Устанавливает значение по умолчанию writelock устанавливающий для новых окон.
  • многопользовательский - Включает или отключает многопользовательский режим.
  • su - Действуйте в качестве другого пользователя.
  • writelock - Наборы writelock режим для текущего окна.

Я незнаком с внутренностями Экрана, но если Вы хотите получить доступ к Экрану ACLs способом кроме этих команд, позволяют, необходимо будет проверить источник непосредственно. Ваш проект кажется, что это будет очень выгодно для Экранного сообщества, таким образом, я пожелаю Вам удачи в реализации его.


Если Вы смотрите на src/acls.h, Вы будете видеть структуры aclusergroup и acluser; существует также структура acl в src/screen.h. Это структуры основных данных; похоже, что Экран ACLs по существу связанный список aclusergroup узлы, с acluser узел, содержащий большинство интересных данных.

src/acls.c содержит код управления ACL; например, acladd и aclchg команды оба обрабатываются функцией UserAcl() (строка 864).

Структура похожа на это:

/* 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;

Код ACL, кажется, включен, когда экран компилируется с MULTIUSER (хотя я не уверен, определяется ли это на командной строке или в некотором другом заголовочном файле), таким образом искание того ключевого слова может помочь Вам найти определенный многопользовательский код.

3
ответ дан 08.12.2019, 01:11

Теги

Похожие вопросы