Como obter acesso ao diário raiz do systemd?

7

Quando executo journalctl -f -a no Fedora 20 para diferentes usuários, obtenho resultados diferentes. Para root eu recebo algo semelhante a tail -f /var/log/syslog em sistemas mais antigos. Como usuário normal, recebo avisos do gnome-shell, algumas mensagens su, coisas escritas pelo Firefox no stdout etc. - basicamente um log de sessão do usuário.

Eu entendo que journalctl tem o conceito de diferentes periódicos (journalctl (1)):

Output is interleaved from all accessible journal files, whether they are rotated or currently being written, and regardless of whether they belong to the system itself or are accessible user journals.

Mas como obter uma lista de quais periódicos estão disponíveis para um determinado usuário?

E como dar a um usuário normal também acesso ao diário raiz?

A página man do journalctl declara:

All users are granted access to their private per-user journals. However, by default, only root and users who are members of the "systemd-journal" group get access to the system journal and the journals of other users.

Mas isso parece muito - o usuário não deve ter acesso aos diários de outros usuários normais (apenas para o diário raiz).

    
por maxschlepzig 04.06.2014 / 18:36

1 resposta

7

A página do manual systemd-journald explica como o controle de acesso ao diário é feito :

Journal files are, by default, owned and readable by the "systemd-journal"
system group but are not writable. Adding a user to this group thus enables
her/him to read the journal files.

By default, each logged in user will get her/his own set of journal files in
/var/log/journal/. These files will not be owned by the user, however, in order
to avoid that the user can write to them directly. Instead, file system ACLs
are used to ensure the user gets read access only.

Additional users and groups may be granted access to journal files via file
system access control lists (ACL).

O Fedora 20 usa ACLs para fornecer aos usuários no grupo adm e wheel acesso de leitura a todos os periódicos.

how to give a normal user also access to the root journal?

Executar setfacl -n -m u:username:r /var/log/journal/*/system.journal .

how to get list which journals are available for a given user?

Você pode su para o usuário e executar journalctl --header|grep '^File Path' para ver os nomes dos periódicos aos quais ele ou ela tem acesso.

getfacl pode ser usado para ver quais grupos e usuários têm acesso a arquivos de diário. Não conheço uma maneira simples de listar os arquivos que podem ser lidos por um usuário específico.

    
por 05.06.2014 / 23:24