ความล้มเหลวของบริการผู้ใช้ systemd

คุณอาจได้รับข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้เมื่ออัปเกรดหรือเมื่อเรียกใช้ initialize-tsm ระหว่างการติดตั้งใหม่ดังนี้

  • “ไม่สามารถรับการเชื่อมต่อ D-Bus: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
  • “ไม่พบ $XDG_RUNTIME_DIR”
  • “systemd unit user@<เลขที่ผู้ใช้> ไม่ทำงาน ตรวจสอบ /var/log/messages or /var/log/syslog”

พื้นหลัง

ใน 2018.1 Tableau Server ใช้บริการผู้ใช้ systemd เพื่อจัดการกระบวนการ ซึ่งหมายความว่ามีกระบวนการ systemd ที่ทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ ตามค่าเริ่มต้น การตั้งค่า Tableau Server จะสร้างบัญชีที่ไม่มีสิทธิพิเศษชื่อ tableau กระบวนการ Tableau Server เกิดจากกระบวนการ systemd และไม่ใช่กระบวนการ systemd ทั่วทั้งระบบ ซึ่งทำงานเป็นรูท

สำคัญ: หมายเหตุการแก้ปัญหานี้ใช้กับ distros แบบ RHEL 7 เป็นหลัก อย่างไรก็ตาม หากคุณเห็นข้อผิดพลาดข้อใดข้อหนึ่งเหล่านี้ อาจมีปัญหาเดียวกันนี้ใน Ubuntu distros

บริการผู้ใช้ systemd ไม่ได้ใช้ทั่วไปเหมือนกับตัวจัดการกระบวนการ systemd ปกติ Red Hat ปิดใช้งานบริการผู้ใช้ systemd ใน RHEL 7 (และด้วยเหตุนี้ distros ทั้งหมดที่มาจาก RHEL เช่น CentOS Oracle Linux 7 Amazon Linux 2) อย่างไรก็ตาม RedHat ได้รับรอง Tableau ว่าการเรียกใช้บริการผู้ใช้ systemd ได้รับการสนับสนุนตราบใดที่เปิดใช้งานบริการอีกครั้ง

การอัปเกรดจาก Tableau Server บน Linux 10.5

หากคุณกำลังอัปเกรดจาก Tableau Server 10.5 ให้ตรวจสอบว่าผู้ใช้ที่ไม่มีสิทธิพิเศษมีเชลล์และไดเรกทอรีหน้าแรกที่ถูกต้อง สำหรับ Tableau Server 10.5 นั้น Tableau ตั้งใจสร้างผู้ใช้ที่ไม่มีสิทธิพิเศษโดยตั้งค่าเชลล์เป็น /sbin/nologin และไดเรกทอรีหน้าแรก "/” หากผู้ใช้ที่ไม่ได้รับสิทธิพิเศษได้รับการสร้างขึ้นโดย initialize-tsm ดังนั้นในระหว่างการอัปเกรดเป็น 2018.1 Tableau จะอัปเดตเชลล์และไดเรกทอรีหน้าแรก

อย่างไรก็ตาม หากคุณสร้างผู้ใช้ที่ไม่มีสิทธิพิเศษในระหว่างการติดตั้งครั้งแรกของ 10.5 คุณจะได้รับข้อผิดพลาดเมื่อพยายามอัปเกรด

หากต้องการแก้ไขปัญหานี้ คุณต้องตั้งค่าเชลล์เป็น /sbin/nologin และไดเรกทอรีหน้าแรก "/” จากนั้นเรียกใช้การอัปเกรดอีกครั้ง

การแก้ไขปัญหาข้อผิดพลาดในการติดตั้งใหม่

ตรวจสอบว่าบริการผู้ใช้ systemd กำลังทำงานอยู่

ตรวจสอบโดยการเรียกใช้คำสั่ง ps -fww $(pgrep -f "systemd --user")

หากบริการผู้ใช้ systemd ไม่ทำงาน แสดงว่ามีบางอย่างที่ขัดขวางไม่ให้เริ่มบริการ

ติดตามรายการนี้เพื่อแก้ไขปัญหาดังนี้

  • ตรวจสอบบันทึกใน /var/log/messages

  • เรียกใช้ journalctl

  • ตรวจสอบว่าการปรับแต่งต่างๆ ที่คุณได้ทำกับการกำหนดค่า PAM ของคุณนั้นไม่ได้ลบ pam_systemd.so

    หากไฟล์ RHEL 7 PAM /etc/pam.d/system-auth ไม่มีบรรทัดต่อไปนี้

    -session optional pam_systemd.so

    จากนั้นจะต้องเพิ่มกลับเพื่อให้ Tableau Server ทำงานได้

  • หาก -session optional pam_systemd.so มีอยู่ในการกำหนดค่า PAM ของคุณ บริการผู้ใช้จะไม่สามารถเริ่มทำงานได้ และข้อความแสดงข้อผิดพลาด $XDG_RUNTIME_DIR not found แสดงอยู่ใน /var/log/messages อย่าพยายามตั้งค่าตัวแปรสภาพแวดล้อม ในสถานการณ์นี้ ข้อผิดพลาดไม่ถูกต้อง

    ข้อผิดพลาดที่แท้จริงคือโมดูล PAM pam_systemd.so ไม่สามารถจัดสรรเซสชันผู้ใช้ได้ การกำหนดค่าเริ่มต้นระงับข้อความแสดงข้อผิดพลาดจาก pam_systemd.so หากต้องการแสดงข้อความแสดงข้อผิดพลาดและข้อความดีบัก ให้เปลี่ยนบรรทัดใน /etc/pam.d/system-auth จาก -session optional pam_systemd.so ไปเป็น session optional pam_systemd.so debug (การนำเครื่องหมายยัติภังค์นำหน้าออกจะแสดงข้อความแสดงข้อผิดพลาด และการเพิ่ม debug จะทำให้แสดงการบันทึกที่ละเอียดยิ่งขึ้น)

    ตอนนี้คุณสามารถดูในไฟล์ /var/log/messages, /var/log/secure และ /var/log/audit/audit.log เพื่อดูข้อความแสดงข้อผิดพลาด

ตัวอย่าง

คุณอาจเห็นข้อความแสดงข้อผิดพลาดดังต่อไปนี้

systemd-logind: Failed to mount per-user tmpfs directory /run/user/0: Permission denied

ในกรณีนี้ การค้นหาข้อผิดพลาดทางออนไลน์จะนำไปสู่บทความ Redhat KB https://access.redhat.com/solutions/2460611(ลิงก์จะเปิดในหน้าต่างใหม่)

บทความนี้แนะนำให้อัปเดตแพ็กเกจ selinux-policy โดยเรียกใช้ sudo yum update selinux-policy

ในบางกรณี การอัปเกรดจากเวอร์ชัน 3.12.X เป็น 3.13.X จะช่วยแก้ไขปัญหา $XDG_RUNTIME_DIR not found อย่าลืมเรียกใช้ sudo reboot หลังจากอัปเดตแพ็กเกจ