วิธีการให้ nopasswd เข้าถึงหลายคำสั่งผ่าน sudoers?


45

ด้านล่างคือสิ่งที่ฉันรู้:

ฉันต้องเพิ่มบรรทัดด้านล่างนี้ในsudoersไฟล์เพื่อให้สิทธิ์แก่ผู้ใช้สำหรับงานเฉพาะ

user_name ALL=NOPASSWD: /usr/bin/apt-get install

ในกรณีนี้ฉันต้องการให้สิทธิ์การเข้าถึงแก่ผู้ใช้รายนี้เพื่อเริ่มบริการ 2 ใหม่ (เช่นApacheและMySQL) พร้อมสิทธิการติดตั้งทั้งหมด

เมื่อใช้บรรทัดด้านบนฉันได้ให้สิทธิ์การติดตั้งทั้งหมดแก่เขาตอนนี้ฉันต้องเพิ่มบรรทัดเดียวกันสองครั้งเพื่อให้สิทธิ์ในการให้บริการหรือไม่ หรือฉันสามารถเพิ่มคำสั่งเหล่านั้นในบรรทัดเดียวกันโดยคั่นด้วยเครื่องหมายจุลภาคหรืออะไรก็ได้?

คำตอบ:


48

ฉันได้แก้ไขปัญหาโดยการสร้างกลุ่มใหม่สำหรับสิทธิ์ผู้ดูแลระบบที่ จำกัด ... ชื่อของกลุ่มนั้นคือLimitedAdminsหลังจากนั้นฉันอัปเดตsudoersไฟล์ดังต่อไปนี้

บรรทัดที่ฉันต่อท้ายคือ:

%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

นี่คือ/etc/sudoersไฟล์ที่สมบูรณ์:

# This file MUST be edited with the 'visudo' command as root.    
#   
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying   his file.   
#   
# See the man page for details on how to write a sudoers file.  
# 
Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL  

#includedir /etc/sudoers.d
%domain_name\\administrators ALL=(ALL) ALL
%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

มันทำงานได้อย่างสมบูรณ์แบบในกรณีที่ระบบของคุณเป็นโดเมนหรือไม่


คุณไม่ควรที่จะวางสิ่งของหลังจาก#includedirบรรทัดใช่ไหม?
hamstar

@hamstar เฮ้สวัสดี! ใช่คุณพูดถูกฉันใช้ไฟล์กำหนดค่านี้ใน บริษัท ของฉันมานานกว่า 2 ปีแล้วและใช้งานได้ดีอย่างสมบูรณ์แบบ #includedirแม้ท่านฉันก็จะแนะนำที่จะนำสองบรรทัดสุดท้ายก่อน
Hrish

3
หรือดีกว่าใส่สองบรรทัดเหล่านี้ลงในไฟล์ใหม่ภายใต้ /etc/sudoers.d แทนที่จะแก้ไข / etc / sudoers
tgharold

@tgharold ใช่เพื่อน !! คุณพูดถูก ... มันเป็นตัวเลือกที่ดีกว่าที่ฉันแนะนำ ... :) ขอบคุณที่ความคิดของคุณจะพยายามนำไปใช้ในสถานที่ของฉันเช่นกัน
Hrish

#includedir แสดงความคิดเห็นหรือไม่ หรือรวมถึงเกิดขึ้นโดยอัตโนมัติและความคิดเห็นเพียงเตือนเราว่า?
HeatfanJohn

12

ดูเหมือนว่าเครื่องหมายจุลภาคคือสิ่งที่คุณต้องการ

Cmnd_Alias ​​PRINTING = / usr / sbin / lpc, / usr / bin / lprm
...
user3 ALL = การพิมพ์

แหล่ง


ฉันให้สิทธิ์แบบที่คุณพูดถึง แต่ฉันได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้ <br/> E: ไม่สามารถเปิดไฟล์ล็อค / var / lib / dpkg / lock ได้ - เปิด (13: ปฏิเสธสิทธิ์) <br/> E: ไม่สามารถล็อคไดเรกทอรีการจัดการ (/ var / lib / dpkg /) ได้ คุณรูต ... ใครช่วยได้บ้าง
Hrish

@ ฤษีฉันจะลองเมื่อฉันได้รับบ้าน
Karthik T

ไฟล์ sudores ของฉันมีสิ่งที่กล่าวถึงด้านล่าง
Hrish

# ข้อมูลจำเพาะเกี่ยวกับสิทธิ์ของผู้ใช้รูท ALL = (ALL: ALL) ทั้งหมด # สมาชิกของกลุ่มผู้ดูแลระบบอาจได้รับสิทธิ์รูต% ผู้ดูแลระบบ ALL = (ทั้งหมด) ทั้งหมด # อนุญาตให้สมาชิกกลุ่ม sudo ดำเนินการคำสั่งใด ๆ % sudo ALL = (ทั้งหมด: ทั้งหมด) ALL #includedir /etc/sudoers.d $ sudo nano / etc / sudoers% Domain_Name \\ ผู้ดูแลระบบ ALL = (ทั้งหมด) ทั้งหมด% Domain_Name \\ ชื่อผู้ใช้ทั้งหมด = NOPASSWD: / usr / bin / apt-get install / etc /init.d/apache2 เริ่มใหม่
Hrish

2

สิ่งที่ฉันทำคือ (คล้ายกับสิ่งที่คุณกำลังมองหา):

## PRTG monitoring
Cmnd_Alias PRTG = /bin/cat /proc/loadavg, /bin/df, /var/prtg/scripts/check_proc.sh
prtg ALL = NOPASSWD: PRTG

ภายใน: /etc/sudoers.d/666-prtg

(666 เพราะ ... ดี ... prtg เป็นเครื่องมือตรวจสอบที่ใช้ windows ที่คุณรู้จัก)

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