ฉันจะบอก sudo ให้เขียนไฟล์ด้วย umask 0022 ได้อย่างไร


11

ฉันเพิ่งอัพเกรดเป็น Snow Leopard ฉันสังเกตว่าไฟล์บางไฟล์ที่เขียนโดย MacPort นั้นได้รับการติดตั้งโดยไม่ได้รับอนุญาต - ไฟล์นั้นเขียนด้วย umask 0077 ฉันคิดว่าฉันได้ จำกัด ปัญหา:

  1. คำสั่งจะถูกเรียกผ่านportsudo
  2. .bashrcไฟล์ของฉันระบุ umask เป็น 0077
  3. ใน OS X เวอร์ชั่นเก่า (10.5 และต่ำกว่า) sudo ใช้ umask ของผู้ใช้รูท (ซึ่งคือ 0022) อย่างไรก็ตามตอนนี้มันใช้umask ของฉัน 0077

อย่างไรก็ตามมีการsudoใช้พฤติกรรมเก่าหรือไม่? ตอนนี้มันเป็นชนิดที่น่ารำคาญเพราะผมต้องใช้sudoในการเรียกใช้คำสั่งง่ายๆเช่นport installed, port outdatedฯลฯ

(ปัญหาอธิบายไว้ในรายละเอียดเพิ่มเติมในตั๋ว MacPortนี้)

แก้ไข

ฉันค้นพบumaskตัวเลือกสำหรับ sudo และใน/etc/sudoersฉันเพิ่มบรรทัดต่อไปนี้:

Defaults umask=0022

อย่างไรก็ตามสิ่งนี้ไม่ได้ทำงานตามที่ต้องการเพราะumask จริงที่ใช้โดยsudoเป็นสหภาพของหน้ากากผู้ใช้ที่มีหน้ากากเริ่มต้นนี้ เพื่อแทนที่พฤติกรรมของsudoumask และใช้ค่าเริ่มต้นโดยตรง (เช่นไม่ใช่สหภาพของผู้ใช้และหน้ากาก sudo เริ่มต้น) เราสามารถเพิ่มสิ่งต่อไปนี้ได้:

Defaults umask_override

คำตอบ:


7

ในที่สุด Mac OS X 10.7 (Lion) ก็มีรุ่น sudo ที่รองรับ umask_override สำหรับบันทึกนี้ใช้ได้กับฉัน:

Defaults umask_override
Defaults umask=0022

1
คุณสามารถทำให้งานนี้เป็นแบบต่อคำสั่งได้หรือไม่? ฉันต้องการ umask 0022 ตามปกติ แต่จากนั้นเรียกใช้ umask 0006 ในสถานการณ์เดียว แต่ข้างต้นไม่สนใจสิ่งนั้น
Michael

6

ฉันสิ้นสุดการเพิ่ม.bashrcสคริปต์การกำหนดค่าของฉันต่อไปนี้:

# Mimic old behavior of `sudo` on OS X Snow Leopard
sudo() {
    old=$(umask)
    umask 0022
    command sudo "$@"
    umask $old
}


2

ด้วย. bashrc ของคุณ

if [[ $EUID -eq 0 ]]; then
   umask 0022
else
   umask 0077
fi

2
ความคิดที่ดี! โชคไม่ดีที่การสืบสวนเล็กน้อยแสดงให้เห็นว่า Snow Leopard นั้นsudoไม่ได้มาจากแหล่งที่มา.bashrcจริง แต่สืบทอดการตั้งค่าปัจจุบันจากผู้ใช้ที่เรียกใช้ sudo
mipadi

คุณจะต้องใช้ฟังก์ชั่นการแก้ปัญหาตามที่ระบุไว้ในคำตอบอื่น ๆ แล้ว
Darren Hall

2

สำหรับบันทึก: เวอร์ชั่นปัจจุบันของ sudo เป็นตัวเลือกใหม่ 'umask_override' ซึ่งควรป้องกันการรวมของ umask ดังนั้นคุณควรลด umask ได้เช่นกัน น่าเศร้าที่ Mac OS X 10.6.6 ดูเหมือนจะไม่เล่นกีฬา sudo รุ่นนี้ ...

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