มีสภาวะแวดล้อมการอ่านพุ่งพรวดจาก / etc / environment สำหรับบริการ


17

เป็นวิธีที่ดีที่สุดเพื่อให้ตัวแปรสภาพแวดล้อมที่กำหนดไว้ในสิ่งที่/etc/environmentไปยังพุ่งพรวดบริการ?

ฉันคิดว่าเพียงแค่จัดหาพวกเขาด้วย.ในส่วนของสคริปต์ไม่ทำงานเพราะสคริปต์จะดำเนินการโดยshที่จะต้องมีการเพิ่มเติมexportในด้านหน้าของคำนิยามทุก ...

คำตอบ:


16

ในที่สุดฉันก็ได้รับคำตอบเกี่ยวกับ#upstartIRC channel จนถึงจุดหนึ่งพุ่งพรวดจะได้รับการสนับสนุน PAM ที่เหมาะสมและทำให้อ่าน/etc/environmentเอง จนกว่าจะถึงตอนนั้นเคล็ดลับคือการดำเนินการคำสั่งด้วย su suใช้ PAM และจะตั้งค่าสภาพแวดล้อมที่เหมาะสม ตัวอย่าง:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

ขอบคุณสำหรับการโพสต์คำตอบคุณได้ช่วยฉันในปัญหาเดียวกัน
Maxim Veksler

ข้อผิดพลาด:su: must be run from a terminal
Kuf

3

ฉันมักจะใช้ eval $(cat /etc/environment | sed 's/^/export /')

มันต้องใช้เวลาในแต่ละบรรทัด/etc/environment, prepends exportและประเมินมัน

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

เหตุใดคุณจึงใช้ exec และไม่เพียง แต่ส่งออกโดยตรงในบล็อกสคริปต์?
Guss

1

เพิ่มลงในสคริปต์ของคุณ:

. /etc/environment
export VAR1 VAR2 VAR3

โดยที่ตัวแปรที่คุณต้องการมีการระบุไว้แทนที่ตัวยึดสไตล์ "VAR1"


2
วิธีที่ฉันได้ด้วยตนเองให้การกำหนดค่าพุ่งพรวดและ / etc / สภาพแวดล้อมในการซิงค์ซึ่งเป็น (ในความคิดของฉัน) ไม่ดีกว่าการกำหนดตัวแปรสองครั้ง ...
Nikratio

ฉันจะไม่ใช้/etc/environmentเพื่อกำหนดตัวแปรที่คุณต้องการทั้งหมด ปล่อยให้เป็นไฟล์แบบคงที่ ในระบบของฉันฉันสามารถค้นหาสคริปต์บางตัวที่ใช้งานได้ สร้างไฟล์ที่เรียกว่าสิ่งที่ชอบ/etc/environment.localและใส่ตัวแปรของคุณและการส่งออกในการมีและแหล่งที่มาที่ไฟล์ จากนั้นคุณจะต้องยืนยันว่าหนึ่งไฟล์
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

/ etc / environment ถูกอ่านโดย pam_env.so (และไม่ใช่สคริปต์) ดังนั้นจึงสามารถใช้งานได้สำหรับการเข้าสู่ระบบใด ๆ เฉพาะโปรแกรมที่เริ่มต้นโดยพุ่งพรวดเท่านั้นที่ไม่สามารถเข้าถึงไฟล์ดังกล่าวได้โดยไม่ได้รับอนุญาต
Nikratio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.