Score:0

การเขียนสคริปต์ Linux : วิธีที่จะไม่รันคำสั่งเฉพาะโดยปริยายจาก .bash_profile ของผู้ใช้เมื่อคุณ sudo ผู้ใช้ผ่านสคริปต์

ธง pw

นี่คือปัญหาที่ฉันเผชิญ: ฉันมีสคริปต์ที่จะตรวจสอบขนาด db ของ Oracle และเรียกใช้ SQL เฉพาะตามเวอร์ชันของ oracle ที่ทำงานบนกล่อง สคริปต์จะทำงานผ่าน ansible เพื่อดำเนินการกับเซิร์ฟเวอร์ Oracle ทั้งหมด ( 400)

ปัญหาคือ Oracle .ทุบตี โปรไฟล์ไม่ได้มาตรฐานและในความเป็นจริงมีสองเวอร์ชัน (ซึ่งไม่สามารถแก้ไขได้ด้วยเหตุผลหลายประการในขณะนี้) มีเซิร์ฟเวอร์หนึ่งชุด อาร์มัน คำสั่งใน .bash_profile ของผู้ใช้ oracle

ดังนั้นสำหรับชุดเซิร์ฟเวอร์เหล่านั้น (ประมาณ 100 จากทั้งหมด 400) สคริปต์จะส่งคืนข้อมูลสำรองเมื่อดำเนินการผ่าน Ansible และเอาต์พุต (ซึ่งไปที่รูปแบบ excel) จะเสียหาย มีใครพอจะแนะนำวิธีให้เราสามารถจำกัด อาร์มัน หรือคำสั่งเฉพาะอื่น ๆ จากการดำเนินการเมื่อเรา sudo ถึง oracle ?

paladin avatar
kr flag
ทำให้ไม่สามารถเรียกใช้งานได้? `chmod -x ชื่อไฟล์`
SBhardwaj avatar
pw flag
oracle .bash_profile ไม่สามารถเปลี่ยนแปลงในแง่ของการอนุญาต ภูมิทัศน์ทั้งหมดที่สคริปต์นี้ต้องดำเนินการผ่านผู้ใช้ Ansible และ ansible ซึ่งจะ sudo ไปยัง oracle
paladin avatar
kr flag
ไม่ ฉันตั้งใจจะลบสิทธิ์การดำเนินการออกจากไบนารีที่ระบุ ตัวอย่างเช่น ผู้ใช้ทั่วไปของคุณใช้โปรแกรม `/bin/myprogram` คุณอาจปฏิเสธได้โดยใช้ `chmod -x /bin/myprogram` แต่ฉันเห็นว่านี่อาจไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับคุณ
paladin avatar
kr flag
เป็นการดีที่จะรู้ว่าเหตุใดคุณจึงไม่สามารถเปลี่ยน `.bash_profile` ได้ หากเกิดจากระบบไฟล์แบบอ่านอย่างเดียว คุณอาจลองเมาต์ไดเร็กทอรีใด ๆ ลงในโฮมไดเร็กทอรีของผู้ใช้รายนั้น เช่น: `mount --options ผูก /tmp/ /home/ansible/` ก่อนที่จะพยายามเข้าสู่ระบบ
SBhardwaj avatar
pw flag
ขอบคุณสำหรับความคิดเห็นของคุณ มีบางอย่างที่ฉันไม่สามารถเปลี่ยนการอนุญาตแบบไบนารีได้เนื่องจากจำเป็นต้องทำกับเซิร์ฟเวอร์ทั้งหมดประมาณ 400 เครื่องและจะมีผลตามมาอย่างมากหากฉันนำสิทธิ์การดำเนินการไบนารีนั้นออกไป แม้ว่าฉันจะเอาไปและให้สิทธิ์อีกครั้งเมื่อสิ้นสุดสคริปต์ - ฉันไม่ต้องการทำเช่นนั้นเนื่องจากการเรียกใช้สคริปต์ที่ล้มเหลวจะนำไปสู่ปัญหาที่ใหญ่กว่าเนื่องจากมีเซิร์ฟเวอร์ที่ใช้งานจริงซึ่งเป็นส่วนหนึ่งของรายการที่สคริปต์จะ ถูกประหาร.
SBhardwaj avatar
pw flag
แนวคิดคือการทำระบบอัตโนมัติขนาดเล็กนี้โดยไม่มีการเปลี่ยนแปลงสภาพแวดล้อมซึ่งรวมถึงเซิร์ฟเวอร์ prod Oracle มีวิธีใดบ้างในสคริปต์ของฉันเอง ฉันสามารถทำบางสิ่งผ่านโค้ดซึ่งจะไม่อนุญาตให้เรียกใช้คำสั่ง/ไบนารีเฉพาะ
paladin avatar
kr flag
คุณอาจปรับสคริปต์ของคุณ: `test -f /var/lock/LOCKFILE && echo true || echo false` เมื่อมี LOCKFILE (เช่น ผ่าน `touch /var/lock/LOCKFILE`) ให้ทำตามคำสั่งของคุณ ไม่เช่นนั้นให้ทำอย่างอื่น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา