저는 Red Hat 7.2를 사용하고 있으며 사용자 데몬을 실행해야 합니다. 여기서 말했듯이https://access.redhat.com/solutions/1293513Red Hat 7은 systemd의 사용자 모드를 지원하지 않습니다. 나의 주요 목표는 소유자 사용자가 사용할 단일 데몬의 다양한 인스턴스를 시작하는 것입니다. 누구든지 시스템 사용자 모드 없이 대안을 제안할 수 있습니까?

답변1

대부분의 사용 사례(예: 사용자가 자신의 단위 파일을 관리하도록 허용)의 경우 RHEL7의 systemd 219가 제대로 작동하므로 활성화하기만 하면 됩니다. 예를 들어 Linux용 Tableau Server에는 사용자 인스턴스를 활성화하는 사용자 서비스가 함께 제공됩니다.

# cat /etc/systemd/system/[email protected]
[Unit]
Description=User Manager for UID %i
After=systemd-user-sessions.service
# These are present in the RHEL8 version of this file except that the unit is Requires, not Wants.
# It's listed as Wants here so that if this file is used in a RHEL7 settings, it will not fail.
# If a user upgrades from RHEL7 to RHEL8, this unit file will continue to work until it's
# deleted the next time they upgrade Tableau Server itself.
After=user-runtime-dir@%i.service
Wants=user-runtime-dir@%i.service

[Service]
LimitNOFILE=infinity
LimitNPROC=infinity
User=%i
PAMName=systemd-user
Type=notify
# PermissionsStartOnly is deprecated and will be removed in future versions of systemd
# This is required for all systemd versions prior to version 231
PermissionsStartOnly=true
ExecStartPre=/bin/loginctl enable-linger %i
ExecStart=-/lib/systemd/systemd --user
Slice=user-%i.slice
KillMode=mixed
Delegate=yes
TasksMax=infinity
Restart=always
RestartSec=15

[Install]
WantedBy=default.target

인스턴스와 상호 작용할 때 .bashrc여전히 XDG_RUNTIME_DIR이 필요합니다 ..profile

# cat /home/$(id -un 29575)/.bashrc
#!/bin/bash

[ -z "${XDG_RUNTIME_DIR}" ] && export XDG_RUNTIME_DIR=/run/user/$(id -ru)

# systemctl daemon-reload
# systemctl enable [email protected]
Created symlink from /etc/systemd/system/default.target.wants/[email protected] to /etc/systemd/system/[email protected].
# systemctl start [email protected]

# su -l -s /bin/bash -c "systemctl --user status" $(id -un 29575)
● hostname
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Tue 2020-09-22 12:12:48 UTC; 5min ago
   CGroup: /user.slice/user-29575.slice/[email protected]
           ├─18802 /lib/systemd/systemd --user
           └─18804 (sd-pam)

감사의 말https://access.redhat.com/solutions/3461241

답변2

https://access.redhat.com/solutions/1293513--user에 대해 논의한 후 RH는 일반적으로 일반 사용자가 시스템 데몬을 중지하고 시작하는 기능을 지원하지 않는다고 설명한 다음 이러한 사용자가 관리자가 되어 특정 데몬을 시작할 수 있도록 sudo를 설정하는 방법을 보여줍니다. 예를 들어 로깅 데몬으로 실행되는 루트 로그 데몬으로). 그러나 이 기사에서는 사용자가 시스템 데몬이 아닌 사용자 수준 데몬으로 실행되는 systemd의 프로세스를 제어할 수 있도록 허용하는 것처럼 보이는 OP 질문의 핵심을 놓치고 있습니다. —사용자가 터치했지만 기사가 금방 주제에서 벗어났습니다.

그들은 주어진 서비스의 복사본이 루트로 시작될 수 있다는 것을 알아낸 다음 명령 실행 중에 권한을 제거하고 사용자가 되기를 원하는 것 같습니다. moin 서비스가 시작될 때 루트에서 testuser ID 및 권한까지 제거하는 방법을 알아야 합니다.

즉, 사용자는 시작 스크립트의 일부로 사용자 권한을 부여하는 데몬을 활성화하거나 제어하려면 루트 권한으로 승격되어야 합니다. 많은 데몬(예: ntpd -u)은 호출 중에 권한을 제거합니다. 이 방법을 사용하면 RH 자체나 시스템 냉장고 아트의 불쾌한 --user 부분을 사용하지 않고도 사용자 데몬에 대한 제어권을 사용자에게 부여할 수 있습니다.

예, 잠시 뿌리를 내리겠습니다. 예, 보안 문제이며, 예, 모회사가 자신이 가장 좋아하는 아들이 가장 좋아하는 부분을 모두 지원하면 더 좋을 것입니다. 그러나 우리는 우리가 가진 것을 가지고 있습니다.

관련 정보