วิธีการรันโปรแกรมในฐานะรูทโดยไม่มี“ sudo”?


10

ฉันมีโปรแกรมเลขฐานสองบางตัวใน OS X ที่สามารถเรียกใช้ในฐานะรูทเท่านั้น

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

เจ้าของโปรแกรมคือรูทและกลุ่มเป็นวงล้อ

ฉันพยายามchmod ug+sตั้งค่า userid และ groupid เมื่อทำการประมวลผลไปยัง root / wheel แต่เมื่อฉันรันโปรแกรมโดยไม่ใช้ sudo มันก็ยังบ่นว่ามันสามารถทำงานได้เฉพาะกับ sudo หรือ root


มันสามารถทำงานในเวลาที่กำหนดหรือเมื่อเกิดเหตุการณ์บางอย่าง?
Mark

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

โปรแกรมนี้เป็นเจ้าของโดย root หรือไม่ Setuid / gid จะใช้ผู้ใช้ / กลุ่มของไฟล์
Daniel Beck

2
…โดยที่ "รายละเอียดเพิ่มเติม" รวมถึงสิ่งต่าง ๆ เช่นว่าไบนารีของโปรแกรมนี้อยู่ในโวลุ่มที่ติดตั้ง NFS หรือไม่และคุณใช้nosuidตัวเลือกการเมานท์ ... นอกเหนือจากสาเหตุที่ทำให้คุณต้องเรียกใช้โปรแกรมเป็น superuser เป็นประจำ
JdeBP

@dmckee ผู้ใช้ mac จำนวนมากรันซอฟต์แวร์เซิร์ฟเวอร์บนเวิร์กสเตชันและบ่อยครั้งที่การติดตั้งต้องใช้ root สำหรับสิ่งที่ไม่ควรใช้ ... แต่การตั้งค่า LAMP stack ให้ทำงานโดยไม่ต้องรูทนั้นเป็นสิ่งที่เจ็บปวด ในทางกลับกันการรีสตาร์ท apache 20 ครั้งต่อวันและการพิมพ์ sudo ในแต่ละครั้งก็เป็นความเจ็บปวดในตูดเช่นกัน นี่เป็นวิธีง่ายๆ
Abhi Beckert

คำตอบ:


2

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


16

วิธีแก้ปัญหาของคุณครึ่งหนึ่ง:

ในไฟล์ sudoers เพิ่มดังต่อไปนี้:

username ALL= NOPASSWD: /path/to/command

จากบรรทัดคำสั่งคุณสามารถพิมพ์:

sudo command

และมันจะเรียกใช้คำสั่งโดยไม่ถามรหัสผ่านของคุณ คำสั่งนี้จะทำงานเป็น root

หมายเหตุคุณจะต้องแทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้จริง


ประหลาดใจที่พบคำตอบที่ดีที่สุดที่ด้านล่าง ขอขอบคุณ!
CDR

FYI, เพื่อแก้ปัญหาอีกครึ่งหนึ่ง (ไม่ต้องพิมพ์คำสั่ง sudo) สร้างนามแฝงเชลล์ที่มี sudo ในคำสั่ง (เช่น surm = sudo rm "$ @")
Walter

4

หากคุณไม่สามารถเรียกมันว่า daemon ด้วยเหตุผลใดก็ตาม(คำถามนี้จะเกี่ยวข้องในกรณีนั้น)วิธีการนี้อาจถูกแฮกด้วยกัน แต่มันก็สกปรกและไม่ปลอดภัยเลย

แนวคิดคือการเปิดตัวด้วย AppleScript ก่อนอื่นคุณต้องรู้วิธีการเรียกใช้กระบวนการจากบรรทัดคำสั่ง (ซึ่งหากคุณใช้ sudo อยู่แล้วหมายความว่าคุณต้องตั้งค่าทั้งหมด) คุณจะเริ่มกระบวนการนั้นโดยใช้do shell scriptคำสั่งและแทนที่จะใช้ sudo คุณจะเขียนข้อมูลประจำตัวของคุณลงใน AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

ฉันขอย้ำส่วนที่เกี่ยวกับเรื่องนี้ว่าไม่ปลอดภัย: นี่หมายความว่าผู้ดูแลระบบของคุณจะเก็บไว้ในข้อความธรรมดา ถ้าเป็นไปได้คุณควรหาวิธีที่จะทำให้พื้นหลังเป็น LaunchDaemon


วิธีในการ "Runas" สำหรับ mac ของคุณ :) ขอบคุณ
Vlueboy

2

บน OSX สมมติว่าโปรแกรมที่คุณมีอยู่ใน / usr / local / bin / YourProgramName ... เพื่อแก้ปัญหานี้คำสั่งต่อไปนี้ในการเปลี่ยน ID ผู้ใช้ / กลุ่ม ID สำหรับลำดับชั้นของไฟล์ที่ฝังอยู่ในไฟล์แทนที่จะเป็นไฟล์เอง .

sudo chown -R $(whoami) /usr/local/bin/

... จากนั้นใน Terminal ให้เรียกใช้ชื่อโปรแกรมของคุณ $ YourProgramName


ปัญหาของฉันคือโปรแกรมที่ติดตั้งได้รับการติดตั้งโดยไม่มีสิทธิ์ที่เหมาะสมดังนั้นฉันจึงรันสิ่งนี้ในไดเรกทอรีของโปรแกรมเหล่านั้นและตอนนี้พวกเขาก็ทำงานได้ดีโดยไม่ต้องใช้ sudo ขอบคุณ!
atwixtor


0

ดูเหมือนว่าตัวโปรแกรมจะตรวจสอบว่าทำงานด้วย ID = 0 หรือไม่


1
... ซึ่งแน่นอนว่ามันจะเป็นถ้าเป็น set-UID superuser (ทิ้งความกังวลที่แสดงไว้ด้านบน) สิ่งที่คุณอาจจะพยายามพูดก็คือโปรแกรมกำลังตรวจสอบUID จริง 0 ไม่ใช่เพียงแค่UID ที่มีประสิทธิภาพ 0
JdeBP

-1

sudo chown YOUR-USERNAME-HERE BINARY-NAME-HEREคุณสามารถ

ถึงกระนั้นฉันเห็นด้วยกับความคิดเห็นของ dmckee โดยสิ้นเชิง


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