ความแตกต่างระหว่าง umask และ chmod คืออะไร


13

ฉันสับสนอย่างสมบูรณ์ระหว่าง umask และ chmod ทั้งสองถูกใช้เพื่อให้สิทธิ์กับไฟล์ แต่ตรงไหนคือความแตกต่างและเมื่อใดควรใช้

ฉันได้อ่านเอกสารออนไลน์แล้ว แต่ทั้งคู่ก็ดูเหมือนฉัน

umask: umask ใช้เพื่อตั้งค่าการอนุญาตไฟล์เริ่มต้น สิทธิ์เหล่านี้จะถูกใช้กับไฟล์ที่ตามมาทั้งหมดในระหว่างการสร้าง chmod: ใช้เพื่อเปลี่ยนการอนุญาตไฟล์และไดเรกทอรี

ตามความเข้าใจของฉันหากไฟล์ test.doc ตัวอย่างถูกสร้างขึ้น

โดยค่าเริ่มต้น unix ให้รหัส 022 umask ไฟล์

ตอนนี้เมื่อฉันเปลี่ยนเป็นchmod 666 test.doc ฉันสามารถเปลี่ยนระดับการอนุญาตของไฟล์นี้ได้

ตอนนี้ถ้าฉันใช้umask 666สำหรับไฟล์เดียวกัน

จะเกิดอะไรขึ้นเมื่อฉันใช้chmod 666 และ umask 666


2
umaskกำหนดตัวแปรสภาพแวดล้อมซึ่งจะกำหนดสิทธิ์ของแฟ้มสำหรับไฟล์ที่สร้างขึ้นใหม่ chmodการเปลี่ยนแปลงสิทธิ์ของไฟล์ที่มีอยู่
DavidPostill

1
@DavidPostill ไม่umaskไม่ได้ตั้งค่า "ตัวแปรสภาพแวดล้อม" สิ่งที่ทำทำคือตั้งค่ามาสก์การสร้างโหมดไฟล์ของสภาพแวดล้อมการประมวลผลเชลล์ปัจจุบัน
fpmurphy

@ fpmurphy1 ขอขอบคุณสำหรับความกระจ่าง :)
DavidPostill

คำตอบ:


11

แตกต่างก็คือumaskสร้างความเฉพาะไฟล์ใหม่ ตามที่คุณระบุไว้ umask ตั้งค่าการอนุญาตเริ่มต้นที่ไฟล์ / ไดเรกทอรีจะมีเวลาในการสร้าง แต่หลังจากนั้นumaskจะไม่ส่งผลกระทบต่อพวกเขาอีกต่อไป

chmodอย่างไรก็ตามต้องการสร้างไฟล์ก่อนที่จะเรียกใช้

ดังนั้นหากคุณเรียกใช้umaskจะไม่มีผลกระทบใด ๆ ต่อไฟล์ที่มีอยู่


2
คุณไม่สามารถใช้umaskไฟล์มันไม่มีfileข้อโต้แย้ง
DavidPostill

ถูกต้องเขียนส่วนนั้นอีกครั้ง
nKn

4

umaskแตกต่างจากchmodจริง ๆ

  1. แตกต่างที่สำคัญยังไม่ได้รับการกล่าวถึงเลย: chmodชุด แต่umask เคลียร์ (ข้อกำหนดด้าน) บิตได้รับอนุญาต นั่นเป็นสาเหตุที่เรียกว่า "หน้ากาก" (ดังเช่นใน "bitmask")

  2. ขณะที่เดวิดเขียน , umaskเป็น (ระดับกระบวนการ) การตั้งค่าการกำหนดค่าดังนั้นจึงไม่ได้นำมาใช้ในไฟล์เฉพาะเจาะจงใด ๆ (เมื่อเทียบกับchmod)

  3. ซึ่งนำเราไปสู่อีกจุดสำคัญ: umaskไม่ จำกัด เฉพาะไฟล์ มันยังใช้เมื่อสร้างไดเรกทอรี (ดูเพิ่มเติมที่เช่นคำตอบนี้)

  4. ที่สำคัญนอกจากนี้ว่าคำสั่งตัวเองไม่ได้รับผลกระทบจากการกำหนดค่าในขณะนี้chmodumask

จากตัวอย่างของสิ่งที่คุณจะumask 666ทำ:

มันจะบอกกระบวนการปัจจุบัน (ตัวอย่างเช่นเชลล์ของคุณ) ว่าควรสร้างวัตถุระบบไฟล์ใหม่โดยลบR+ Wบิต (4 + 2 = 6) ออก (จากสิทธิ์ใด ๆ ที่ร้องขอโดยนัยหรือโดยชัดแจ้งเมื่อสร้าง) (ดังนั้น 666 ไม่ใช่ค่าที่ใช้ประโยชน์ได้จริงเพราะมันอนุญาตให้Xบิต (รัน) ตั้ง แต่สำหรับไฟล์ที่อ่านไม่ได้ ... )

เช่น:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here

0

UMASK = chmod 777 - ขอสิทธิ์ umask

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

อะไรแบบนั้น.


0

สิทธิ์เริ่มต้นสำหรับไดเรกทอรี / ไฟล์คือ umask 022 ดังนั้นไดเรกทอรีจะถูกตั้งค่าตามค่าเริ่มต้นพร้อมด้วยสิทธิ์ 755 ( drwx-rw-rw) และไฟล์จะถูกตั้งค่าเป็น 644 ( -rw-r--r--) โดยทั่วไปคุณจะลบค่าเลขฐานแปดของสิทธิ์ที่คุณต้องการจาก 777 สำหรับไดเรกทอรีและจาก 666 สำหรับไฟล์ ดังนั้นจากตัวอย่างด้านบน:

(directory) umask 022 => 777 - 022 = 755

(file) umask 022 => 666 - 022 = 644

คุณสามารถค้นหาผลลัพธ์ของumask octalคำสั่งในแหล่งเมื่อใช้ umaskขึ้นอยู่กับฐานแปดและถ้ามันเป็นไฟล์หรือไดเรกทอรี

แหล่ง

อย่างไรก็ตามหากคุณchmod 022 <file>เป็นไดเรกทอรีคุณควรได้รับสิ่งนี้d----w--w-ซึ่งไม่สมเหตุสมผลนัก

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

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.