ฉันได้ยินมาเพื่อทราบว่าด้วยความคิดทั่วไปของสิทธิ์น้อยผู้ใช้เหมือน Unix ควรสร้างบัญชีอื่น ไม่มี สิทธิ์ sudo นอกเหนือจากบัญชีในตัว กับ สิทธิ์ sudo ใน Mac สิ่งนี้แปลว่า: ควรสร้างบัญชีพนักงานสำหรับใช้ประจำวันนอกเหนือจากบัญชีผู้ดูแลระบบที่มาพร้อมกับคอมพิวเตอร์ถูกสงวนไว้เฉพาะเมื่อจำเป็นเท่านั้น
สำหรับรูปธรรมให้พูด bruce
เป็นพนักงานที่ฉันใช้ทุกวันและ batman
เป็นผู้ดูแลระบบซึ่งฉันใช้เมื่อจำเป็นเท่านั้น แต่ฉันจะทำอย่างไรในขณะที่เข้าสู่ระบบ batman
ในนามของ bruce
นั่นคือจะพูดกับ bruce
ของตัวเอง ~
และ $(whoami)
ราวกับว่าฉันกำลังเข้าสู่ระบบในฐานะ bruce
ด้วยสิทธิพิเศษ?
เพื่อแสดงสิ่งนี้ให้นิยาม /User/bruce/test.sh
:
#!/usr/bin/env bash
whoami
cd ~ && pwd
ls ~/Library/Preferences/Preferences/
(ใช่ฉันทำไปแล้ว chmod 744 test.sh
) ฉันเลือกบรรทัดสุดท้ายเพื่อวัตถุประสงค์ในการสร้างภาพประกอบโดยทั่วไปดูเหมือนว่า ~/Library/Preferences/Preferences/
พนักงานไม่สามารถเข้าถึงได้ (เช่นผู้ที่ไม่ใช่ผู้ดูแลระบบ)
สิ่งที่ฉันตั้งใจจะได้รับคือ bruce
, /Users/bruce
และประสบความสำเร็จ ls
เอาท์พุต
ความพยายามครั้งแรกคือว่าจำเป็นถ้าฉันเปิด bruce
เทอร์มินัล แต่ login
ทุบตีของ batman
(เพื่อรับสิทธิ์ sudo) และเรียกใช้
sudo /Users/bruce/test.sh
ฉันเข้าใจ root
, /Users/batman
และประสบความสำเร็จ ls
การส่งออกของ ~/Library/Preferences/Preferences/
แสดงให้เห็นว่าบ้านของแบทแมน; ไม่น่าแปลกใจเลย
หรือ ซ้ำกันเป็นไปได้ (a) ยืนยันว่า sudo -i -u bruce
ทำให้ฉันสามารถรันคำสั่งเป็น bruce
.
แต่ไม่มี! ถ้าฉัน (ดังกล่าวข้างต้น) เปิด bruce
เทอร์มินัล login
ทุบตีของ batman
และเรียกใช้
sudo -i -u bruce /Users/bruce/test.sh
ฉันเข้าใจ bruce
, /Users/bruce
และ ls: : Permission denied
.
อีกอย่าง ซ้ำกันเป็นไปได้ (b) กล่าวว่า sudo -H -u bruce
ใช้บ้านของบรูซ
เมื่อฉันเปิดอีกครั้ง bruce
เทอร์มินัล login
ทุบตีของ batman
และเรียกใช้
sudo -H -u bruce bash /Users/bruce/test.sh
ฉันก็รับเช่นกัน bruce
, /Users/bruce
และ ls: : Permission denied
.
ผู้อ่านอาจคิดว่าคำขอของฉันไม่สมเหตุสมผล แต่ฉันแค่อยากรู้ว่ามันเป็นไปได้ที่จะให้สิทธิ์ sudo แก่พนักงานเป็นการชั่วคราวหรือไม่
ตัวอย่างเช่นถ้าสิ่งนี้สามารถทำได้เมื่อฉันทำสคริปต์สั้น ๆ ฉันไม่จำเป็นต้องหลีกเลี่ยงอีกต่อไป $(whoami)
หรือ ~
ทำให้มีความยืดหยุ่นมากขึ้น
หรือเมื่อฉันเรียกใช้สคริปต์สั้น ๆ ว่าไซต์ใดที่ฉัน googled แนะนำและไม่ต้องแทนที่ $(whoami)
โดย bruce
และ / หรือ ~
โดย /Users/bruce
.
ครั้งสุดท้ายที่ฉันจำได้ว่าฉันรู้สึกหงุดหงิดโดยการ จำกัด สิทธิ์อาจเป็นเมื่อฉันเรียกใช้สคริปต์ที่สร้างโดยคนทั่วไปที่ฉันไปเพื่อติดตั้งแบบอักษร LaTeX
อย่างไรก็ตามในปัจจุบันฉันสามารถจำได้หนึ่งอินสแตนซ์เท่านั้น
นั่นคือหลังจากที่ฉันในขณะที่เข้าสู่ระบบแบทแมน brew
-ed สิ่งที่ใช้ homebrew
(เพราะต้องใช้สิทธิ์ sudo) และ logout
-ed กลับเป็นบรูซและ brew
-ed อย่างอื่น
Homebrew ร้องเรียนสิทธิ์ที่ไม่ถูกต้องเป็นจำนวนมากในบางโฟลเดอร์ภายใต้ /usr/local
และกระตุ้นให้ฉันวิ่ง sudo chown -R $(whoami) blablabla
.
สำหรับฉันแล้วมันดูเหมือนว่า brew
ได้กำหนดสิทธิ์บางอย่างเป็น batman
เป็นของตัวเองและมันทำให้ฉันเป็นบ้าที่จะซ่อมพวกมันทีละคน
คุณจะทำอย่างไรเพื่อให้ได้ช่วงเวลาตัวอย่างเช่นนั้น brew
ต้องใช้ sudo ในขณะที่ใช้บัญชีพนักงานหรือไม่?
หรือในท้ายที่สุดการปฏิบัติที่บัญชีที่ใช้ในชีวิตประจำวันควรมีสิทธิ์น้อยที่สุดไม่สมจริงเพียงใด?
chown /Users/bruce/Library/Preferences/Preferences/
และก็ไม่เป็นไร!
sudo
ฉันมีเพียงเพื่อsu
แต่อย่างที่คุณพูดhomebrew
เป็นการออกแบบผู้ใช้คนเดียว