ฉันจะอนุญาตให้ผู้ใช้หนึ่งรายไปยังอีกคนหนึ่งโดยไม่อนุญาตการเข้าถึงรูทได้อย่างไร


53

ฉันต้องการอนุญาตให้ผู้ใช้บางรายใช้บัญชีผู้ใช้อื่นโดยไม่ต้องรู้รหัสผ่านของบัญชีนั้น แต่ไม่อนุญาตให้เข้าถึงบัญชีผู้ใช้อื่น (เช่นรูท)
ตัวอย่างเช่นฉันต้องการอนุญาตให้ Tom the DBA เป็นผู้ใช้ oracle แต่ไม่ใช่ผู้ใช้ Tomcat หรือรูท

ฉันคิดว่าสามารถทำได้ด้วยไฟล์ / etc / sudoers - เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร

คำตอบ:


44

ใช่มันเป็นไปได้

ใน/ etc / sudoersรายการที่ตามหลังเท่ากับผู้ใช้ที่คำสั่งจะได้รับอนุญาตให้เรียกใช้งานเป็น

tom  ALL=(oracle) /bin/chown tom *

ผู้ใช้ (ทอม) สามารถพิมพ์sudo -u oracle / bin / chown tom / home / oracle / oraclefile


5
สิ่งนี้จะทำให้ Tom สามารถรันคำสั่งในฐานะ oracle แต่ไม่ให้กลายเป็นผู้ใช้ oracle จริงๆ
gharper

11
แล้ว sudo -u oracle su -? นั่นจะทำให้เขาเปิดเชลล์ในฐานะผู้ใช้ oracle นั่นคือสิ่งที่คุณต้องการ?
Brent

+1 สำหรับความคิดเห็นล่าสุดเบรนต์ นั่นจะเป็นคำตอบของฉัน
Annika Backstrom

3
สิ่งต่อไปนี้จะใช้งานได้: sudo -u oracle -s หรือ sudo -u oracle -i (-s สำหรับเชลล์, -i สำหรับการเข้าสู่ระบบ - ทำเชลล์การเข้าสู่ระบบ) น่าเสียดายที่ฉันไม่รู้ว่าคุณจะใช้อะไรใน / etc / sudoers เพื่อ จำกัด ผู้ใช้ แต่เนื่องจากคุณอนุญาตให้ผู้ใช้เข้าถึงเชลล์คุณอาจต้องการ tom ALL = (oracle) ทั้งหมดตามที่คนอื่นพูดถึง หากพวกเขาสามารถเรียกใช้เชลล์คุณอาจไม่สนใจเกี่ยวกับการ จำกัด คำสั่งที่สามารถใช้งานได้
Mark

1
เป็นการดีที่คุณไม่ต้องการให้ Tom เรียกใช้คำสั่งในฐานะผู้ใช้ oracle แทนที่จะเป็นผู้ใช้ oracle หรือไม่? ความแตกต่างเล็กน้อย แต่ให้บันทึกการตรวจสอบที่ดีโดยไม่ต้องใช้การตรวจสอบเชลล์
Scott Pack

40

เพิ่มสิ่งที่ต้องการ / etc / sudoers ของคุณ

tom ALL=(oracle) ALL

จากนั้นทอมผู้ใช้ควรจะสามารถใช้ sudo เพื่อเรียกใช้สิ่งต่าง ๆ ในฐานะผู้ใช้ oracle ด้วยตัวเลือก -u โดยไม่ต้องให้ทอม

เช่นได้รับเชลล์ในฐานะผู้ใช้ oracle (ดีเนื่องจาก sudo ของคุณใหม่พอที่จะมีตัวเลือก -i)

sudo -u oracle -i

5
ฉันต้องใช้ไวยากรณ์tom ALL=(oracle)NOPASSWD:ALLเพื่อให้ sudo ไม่ต้องถามรหัสผ่าน
snowindy

9

หากต้องการให้ความสามารถในคำถามเท่านั้นให้เพิ่มสิ่งต่อไปนี้ใน / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

จากนั้นทอมสามารถ:

sudo -u oracle bash -i

0

ตัวอย่างเช่นฉันต้องการอนุญาตให้ Tom the DBA เป็นผู้ใช้ oracle แต่ไม่ใช่ผู้ใช้ Tomcat หรือรูท

ฉันต้องการที่จะทำเช่นนี้เพื่อระบบเร็ว ๆ su <user>นี้และมีช่วงเวลาที่ยากหาบันทึกของฉันในการตั้งค่าอื่นผมใช้ปีที่ผ่านมาที่ยังได้รับอนุญาตไวยากรณ์ ในสถานการณ์ของฉันฉันต้องอนุญาตให้ผู้ใช้หลายคนไปsuยังผู้ใช้ที่เฉพาะเจาะจง

สร้างกลุ่มโดยใช้addgroup <groupName>ผู้ใช้รายอื่นจะสามารถทำได้suโดยไม่มีรหัสผ่าน จากนั้นเพิ่มกลุ่มนั้นในผู้ใช้แต่ละคนที่คุณต้องการให้suผู้ใช้นั้นโดยไม่ต้องใช้รหัสผ่าน: usermod -a -G <groupName> <userName>(หรือusermod -a -G oracle tom) การเปลี่ยนแปลงกลุ่มอาจไม่มีผลจนกว่าจะเข้าสู่ระบบครั้งต่อไป

หมายเหตุ: ในกรณีของคุณคุณมีอยู่แล้วในกลุ่มเพราะoracleกลุ่มจะได้รับการสร้างขึ้นเมื่อคุณทำผู้ใช้ Oracle adduser oracleด้วย

ตอนนี้แก้ไข/etc/pam.d/suและภายใต้ต่อไปนี้:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

.. เพิ่มรายการตรวจสอบกฎเพื่อให้ส่วนมีลักษณะดังนี้:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

แทนที่<groupName>ด้วยoracleในกรณีนี้ นี้จะช่วยให้ผู้ใช้ใด ๆ ที่เป็นส่วนหนึ่งของ<groupName>การsu <groupName>

ตอนนี้tomสามารถsu oracleและถ้าคุณต้องการให้ผู้ใช้รายอื่นมีสิทธิ์เข้าถึงเดียวกันให้เพิ่มพวกเขาในoracleกลุ่ม

คำถามที่คล้ายกันที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.