너무 길어요.

너무 길어요.

somegroup시스템 로그를 읽을 수 있는 읽기 전용 권한을 부여하는 방법은 무엇입니까 ? (저는 Debian10 버스터를 사용하고 있습니다).

$ journalctl  
Hint: You are currently not seeing messages from other users and the system.
      Users in the 'systemd-journal' group can see all messages. Pass -q to
      turn off this notice.
No journal files were opened due to insufficient permissions.

그룹 에 사용자를 추가할 수 있다는 것을 알고 있지만 systemd-journal그룹에 읽기 권한을 부여하려면 어떻게 해야 합니까?

답변1

너무 길어요.

다음 파일을 생성합니다:

# /etc/tmpfiles.d/somegroup_journal.conf
#Type  Path                           Mode User Group Age Argument
a+     /run/log/journal               -    -    -     -   d:group:somegroup:r-x
a+     /run/log/journal               -    -    -     -   group:somegroup:r-x
a+     /run/log/journal/%m            -    -    -     -   d:group:somegroup:r-x
a+     /run/log/journal/%m            -    -    -     -   group:somegroup:r-x
a+     /run/log/journal/%m/*.journal* -    -    -     -   d:group:somegroup:r--
a+     /run/log/journal/%m/*.journal* -    -    -     -   group:somegroup:r--

그것을 알아내는 방법:

남성systemd-journald.service(8)다음과 같은 내용이 있습니다:

다른 사용자 및 그룹에는 파일 시스템 ACL(액세스 제어 목록)을 통해 로그 파일에 대한 액세스 권한을 부여할 수 있습니다. Distros와 관리자는 선택적으로 다음 명령을 사용하여 "wheel" 및 "adm" 시스템 그룹의 모든 구성원에게 읽기 액세스 권한을 부여할 수 있습니다.

# setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/

완벽해 보이지만 이 예는 감동적입니다 /var/log/journal/.로그 제어우선순위 /run/log/journal/는 다음과 같습니다아래 출처:

if (laccess("/run/log/journal", F_OK) >= 0)
        dir = "/run/log/journal";
else
        dir = "/var/log/journal";

/* If we are in any of the groups listed in the journal ACLs,
 * then all is good, too. Let's enumerate all groups from the
 * default ACL of the directory, which generally should allow
 * access to most journal files too. */
r = acl_search_groups(dir, &g);

/run은(는) 으로 마운트되므로 tmpfs다음 ACL 규칙이 유지되지 않을 수 있습니다.

# setfacl -Rnm g:somegroup:rx,d:g:somegroup:rx /run/log/journal/

지속되게 하려면 /run/log/journalbuild.browse 를 구성하세요.소스도 좀 있어요, 우리는 다음을 발견합니다 tmpfiles.d/systemd.conf.m4:

z /run/log/journal 2755 root systemd-journal - -
Z /run/log/journal/%m ~2750 systemd-journal - -
m4_ifdef(`HAVE_ACL',`
a+ /run/log/journal/%m - - - - d:group:adm:r-x
a+ /run/log/journal/%m - - - - group:adm:r-x
a+ /run/log/journal/%m/*.journal* - - - - d:group:adm:r--
')'m4_dnl

이는 ACL 규칙을 에 추가해야 함을 나타냅니다 tmpfiles.d. 위 파일의 컴파일된 버전은 로컬에서 찾을 수 있습니다 /usr/lib/tmpfiles.d/systemd.conf. 이 예를 사람과 결합하십시오tmpfiles.d(5)실행 가능한 솔루션을 만드는 데 도움이 되는 몇 가지 세부 정보를 제공하세요.

다음 파일을 생성합니다:

# /etc/tmpfiles.d/somegroup_journal.conf
#Type  Path                           Mode User Group Age Argument
a+     /run/log/journal               -    -    -     -   d:group:somegroup:r-x
a+     /run/log/journal               -    -    -     -   group:somegroup:r-x
a+     /run/log/journal/%m            -    -    -     -   d:group:somegroup:r-x
a+     /run/log/journal/%m            -    -    -     -   group:somegroup:r-x
a+     /run/log/journal/%m/*.journal* -    -    -     -   d:group:somegroup:r--
a+     /run/log/journal/%m/*.journal* -    -    -     -   group:somegroup:r--

빠른 테스트와 재부팅을 통해 이것이 작동하는지 확인했습니다!

관련 정보