การตั้งค่า Umask แบบกำหนดเองใน macOS

ทุกไฟล์และโฟลเดอร์ใน Mac มีสิทธิ์อนุญาตอยู่หนึ่งชุด เมื่อคุณสร้างไฟล์หรือโฟลเดอร์ใหม่ Umask คือสิ่งที่กำหนดว่าการตั้งค่าสิทธิ์อนุญาตเหล่านี้จะเป็นเช่นไร

เกี่ยวกับสิทธิ์อนุญาตและค่า Umask

คำแนะนำต่อไปนี้เหมาะสำหรับผู้ใช้ระดับ Enterprise โปรดใช้ความระมัดระวังขณะเปลี่ยนสิทธิ์การใช้งานและค่า Umask ของไฟล์ เพราะหากคุณตั้งค่าเหล่านี้ไม่ถูกต้อง ความปลอดภัยของไฟล์ โฟลเดอร์ หรือแอพบน Mac อาจลดลง และอาจทำให้แอพบางส่วนใช้งานไม่ได้

สิทธิ์อนุญาต

ไฟล์ โฟลเดอร์ และแอพทั้งหมดที่คุณจัดเก็บไว้ในดิสก์เริ่มต้นระบบของ Mac หรือในโวลุ่มที่เชื่อมต่ออยู่มีการตั้งค่าสิทธิ์อนุญาต ซึ่งเป็นสิ่งที่กำหนดว่าบัญชีผู้ใช้บัญชีใดสามารถอ่าน เขียน หรือใช้ไฟล์ โฟลเดอร์ หรือแอพนั้นได้ และสิทธิ์อนุญาตเหล่านี้มีสิทธิ์อนุญาต POSIX และ Access Control List (ACL) รวมอยู่ด้วย 

คุณสามารถปรับค่า Umask ของผู้ใช้เพื่อให้สิทธิ์อนุญาต POSIX ของผู้ใช้มีข้อจำกัดมากขึ้นหรือน้อยลงได้

ค่า Umask

สิทธิ์อนุญาต POSIX สำหรับไฟล์อาจอยู่ในรูปแบบเลข 3 หลัก และคุณอาจเห็นสิทธิ์อนุญาตในรูปแบบนี้เมื่อดูจากเทอร์มินัล ซึ่งเลขแต่ละหลักมีค่าได้ตั้งแต่ 0 ถึง 7 เมื่อคุณสร้างไฟล์ใหม่ ระบบจะนำค่า Umask ไปหักลบจากค่าเริ่มต้น (ปกติจะเป็น 666 สำหรับไฟล์ และ 777 สำหรับโฟลเดอร์) เพื่อกำหนดสิทธิ์อนุญาตสำหรับไฟล์หรือโฟลเดอร์ใหม่

ตัวอย่างเช่น หากค่า Umask เริ่มต้นคือ 022 สิทธิ์อนุญาตจะเป็น 644 สำหรับไฟล์ใหม่ และ 755 สำหรับโฟลเดอร์ใหม่ สิทธิ์อนุญาตเหล่านี้อนุญาตให้กลุ่มและผู้ใช้รายอื่นๆ สามารถอ่านไฟล์และเปิดโฟลเดอร์ได้ แต่มีเฉพาะเจ้าของเท่านั้นที่เปลี่ยนแปลงแก้ไขได้ 

อย่าลืมทำความเข้าใจเกี่ยวกับค่า Umask ก่อนจะดำเนินการ เพราะหากคุณตั้งค่า Umask ไม่ถูกต้อง อาจส่งผลให้คุณเปิดไฟล์นั้นไม่ได้อีก หรือเป็นการให้สิทธิ์แก่ผู้ใช้อื่นโดยไม่ตั้งใจ ดูข้อมูลเพิ่มเติมในหัวข้อ MODES ของหน้าคู่มือการใช้คำสั่ง chmod(1)

คุณสามารถตั้งค่า Umask ได้หลายแห่ง ซึ่งแต่ละแห่งจะส่งผลต่อแอพแตกต่างกันไป

Umask สำหรับแอพพลิเคชั่นของผู้ใช้ใน macOS High Sierra, macOS Sierra, OS X El Capitan และ OS X Yosemite

ใน OS X Yosemite 10.10.3 และใหม่กว่า ให้เข้าสู่ระบบในฐานะผู้ดูแลระบบ และใช้คำสั่งนี้ในเทอร์มินัล

sudo launchctl config user umask nnn

เปลี่ยน nnn เป็นค่า Umask ที่คุณต้องการ เช่น 027 หรือ 002 หลังจากที่ใช้คำสั่งนี้ คุณอาจต้องเริ่มการทำงานของ Mac ใหม่

คำสั่งนี้เป็นการตั้งค่า Umask ของผู้ใช้สำหรับทุกแอพที่ผู้ใช้เปิด เช่น Finder, TextEdit หรือ Final Cut Pro และเป็นการตั้งค่า Umask สำหรับทุกแอพที่ผู้ใช้เปิดจากบรรทัดคำสั่ง นอกจากนี้ คำสั่งนี้ยังเป็นการควบคุมสิทธิ์อนุญาตที่ตั้งให้กับไฟล์ใหม่ที่แอพเหล่านี้สร้างขึ้นด้วย

หากคุณเห็นข้อความ "Could not write configuration: No such file or Directory" ให้ตรวจสอบว่าคุณมีโฟลเดอร์ /private/var/db/com.apple.xpc.launchd/config หากไม่มีโฟลเดอร์นี้ ให้ใช้คำสั่งนี้เพื่อสร้างโฟลเดอร์ขึ้นมา

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

หลังจากที่สร้างโฟลเดอร์นี้แล้ว ให้ใช้คำสั่ง sudo launchctl config user umask nnn อีกครั้ง หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่า Umask ใน OS X Yosemite ให้ใช้คำสั่ง man launchctl

ค่า Umask สำหรับกระบวนการทำงานของระบบใน OS X Yosemite

ใน OS X Yosemite 10.10.3 และใหม่กว่า ให้เข้าสู่ระบบในฐานะผู้ดูแลระบบ และใช้คำสั่งนี้ในเทอร์มินัล

sudo launchctl config system umask nnn

เปลี่ยน nnn เป็นค่า Umask ที่คุณต้องการ เช่น 027 หรือ 002 หลังจากที่ใช้คำสั่งนี้ คุณอาจต้องเริ่มการทำงานของ Mac ใหม่

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

หากคุณเห็นข้อความ "Could not write configuration: No such file or Directory" ให้ตรวจสอบว่าคุณมีโฟลเดอร์ /private/var/db/com.apple.xpc.launchd/config หากไม่มีโฟลเดอร์ดังกล่าว ให้ใช้คำสั่งนี้เพื่อสร้างโฟลเดอร์ขึ้นมา

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่า Umask ใน OS X Yosemite ให้ใช้คำสั่ง man launchctl

Umask สำหรับแอพพลิเคชั่นของผู้ใช้ใน OS X Mavericks และเก่ากว่า

ใน OS X Mavericks และเก่ากว่า ให้สร้างไฟล์ /etc/launchd-user.conf ที่มี umask nnn เปลี่ยน nnn เป็นค่า Umask ที่คุณต้องการ เช่น 027 หรือ 002 คำสั่งนี้เป็นการตั้งค่า Umask ของผู้ใช้สำหรับทุกแอพที่ผู้ใช้เปิด เช่น Finder, TextEdit หรือ Final Cut Pro นอกจากนี้ ยังเป็นการควบคุมสิทธิ์อนุญาตที่ตั้งให้กับไฟล์ใหม่ที่แอพเหล่านี้สร้างขึ้นด้วย

หากคุณใช้ OS X Lion คุณควรอัพเดทเป็น OS X Lion 10.7.4 หรือใหม่กว่า หลังจากที่อัพเดทแล้ว ค่า Umask ของผู้ใช้จะมีผลกับไฟล์และโฟลเดอร์ที่สร้างขึ้นใน Finder

Umask สำหรับกระบวนการทำงานของระบบใน OS X Mavericks และเก่ากว่า

ใน OS X เวอร์ชั่นเก่ากว่า Yosemite ให้สร้างไฟล์ /etc/launchd.conf ที่มี umask nnn เปลี่ยน nnn เป็นค่า Umask ที่คุณต้องการ เช่น 027 หรือ 002 คำสั่งนี้เป็นการตั้งค่า Umask สำหรับทุกกระบวนการทำงาน เราขอแนะนำให้คุณอย่าเปลี่ยนค่านี้หากไม่จำเป็นจริงๆ เพราะจะทำให้สิทธิ์อนุญาตของไฟล์ที่ซอฟต์แวร์ระบบต้องใช้เกิดการเปลี่ยนแปลงได้ กล่าวคือ หากคุณตั้งสิทธิ์อนุญาตให้มีข้อจำกัดมากเกินไป ซอฟต์แวร์ที่ต้องใช้ไฟล์ดังกล่าวอาจไม่สามารถทำงานได้ หรือหากคุณตั้งสิทธิ์อนุญาตให้เปิดกว้างมากเกินไป ก็อาจทำให้เกิดปัญหาด้านความปลอดภัยตามมาได้

Umask ที่เจาะจงเฉพาะ LaunchAgent หรือ LaunchDaemon ตัวใดตัวหนึ่ง

ใน Mac OS X 10.4 และใหม่กว่า ผู้ดูแลระบบที่มีความเชี่ยวชาญสามารถตั้งค่า Umask แยกสำหรับ LaunchAgent หรือ LaunchDaemon ตัวใดตัวหนึ่งได้ โดยการเพิ่มค่า Umask ลงในไฟล์ launchd plist การตั้งค่านี้จะมีผลเหนือการตั้งค่า Umask ใน /etc/launchd.conf หรือ /etc/launchd-user.conf เฉพาะสำหรับกระบวนการทำงานนั้นๆ หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกนี้ ให้ใช้คำสั่ง man launchd.plist

วันที่เผยแพร่: