ฉันต้องการอนุญาตให้ผู้ใช้หนึ่งคนเรียกใช้ grep (ผ่าน sudo) และเพื่อ grep สำหรับสตริงที่ระบุหนึ่งไฟล์ในหนึ่งไฟล์ ฉันไม่ต้องการให้ผู้ใช้รายนี้สามารถรัน grep ในไฟล์ทั้งหมดได้ ผู้ใช้ไม่มีสิทธิ์เข้าถึงเพื่ออ่านไฟล์ดังนั้นความต้องการใช้ sudo ฉันพยายามเขียนเช็ค nagios ที่ greps ไฟล์บันทึกของบริการอื่นในเครื่อง
อย่างไรก็ตามมันใช้งานไม่ได้ sudo คอยขอรหัสผ่าน
คำสั่งของฉันคือ: sudo grep "string I want (" /var/log/thefilename.log
(ใช่มี raw (
และช่องว่างบางส่วนในสตริงที่ฉันต้องการ grep)
/etc/sudoers.d/user-can-grep
มีเนื้อหานี้:
user ALL=(root) NOPASSWD: /bin/grep "string I want (" /var/log/thefilename.log
ไฟล์ sudoers นี้เป็นเจ้าของroot:root
และมีสิทธิ์-r--r-----
เซิร์ฟเวอร์คือ Ubuntu ที่เชื่อถือได้ 14.04.3 LTS
ฉันจะทำงานนี้ได้อย่างไร
sudo
เขียนสคริปต์เปลือกที่ไม่นี้แล้วให้สคริปต์ที่จะวิ่งผ่าน
grep
มาและwhich grep
บอกฉันว่ามันกำลังใช้/bin/grep
อยู่ AFAIK ในไฟล์ sudo คุณต้องระบุเส้นทางแบบเต็มของไบนารีแม้ว่าคุณจะเรียกมันโดยไม่มีเส้นทางแบบเต็มก็ตาม