ฉันเชื่อ (ไม่แน่ใจ) ว่าเจ้าของไฟล์ / ไดเรกทอรีและผู้ใช้รูทเป็นผู้ใช้เพียงคนเดียวที่ได้รับอนุญาตให้เปลี่ยนสิทธิ์ของไฟล์ / ไดเรกทอรี ฉันแก้ไขหรือมีผู้ใช้รายอื่นที่ได้รับอนุญาตให้เปลี่ยนสิทธิ์หรือไม่
ฉันเชื่อ (ไม่แน่ใจ) ว่าเจ้าของไฟล์ / ไดเรกทอรีและผู้ใช้รูทเป็นผู้ใช้เพียงคนเดียวที่ได้รับอนุญาตให้เปลี่ยนสิทธิ์ของไฟล์ / ไดเรกทอรี ฉันแก้ไขหรือมีผู้ใช้รายอื่นที่ได้รับอนุญาตให้เปลี่ยนสิทธิ์หรือไม่
คำตอบ:
เฉพาะเจ้าของและroot
(ผู้ใช้ขั้นสูง) เท่านั้นที่ได้รับอนุญาตให้เปลี่ยนสิทธิ์ของไฟล์หรือไดเรกทอรี ซึ่งหมายความว่าเจ้าของและผู้ใช้ขั้นสูงสามารถตั้งค่าการอ่าน ( r
) เขียน ( w
) และเรียกใช้ ( x
) ได้ แต่เปลี่ยนเป็นเจ้าของ (ผู้ใช้ / กลุ่ม) ของไฟล์และไดเรกทอรีที่มีคำสั่งchown
/ ที่ได้รับอนุญาตเท่านั้นที่จะchgrp
root
เพื่อวัตถุประสงค์ในการดำเนินงานตามปกติจะมีเพียงรูทและเจ้าของchmod
เท่านั้น นอกจากนี้รูทสามารถchown
และchgrp
และยิ่งไปกว่านั้นเจ้าของสามารถchgrp
ตราบเท่าที่เจ้าของเป็นสมาชิกของกลุ่มเป้าหมาย
เพื่อวัตถุประสงค์ด้านความปลอดภัยมีกรณีอื่น: ผู้ใช้ใด ๆ ที่มีสิทธิ์เขียนไปยังไดเรกทอรีที่มีไฟล์สามารถแทนที่ไฟล์ด้วยสำเนาจึงกลายเป็นเจ้าของได้รับความสามารถในการปรับเปลี่ยนการอนุญาตและเนื้อหา
ชอบมาก
14:14 mybox:~ mkdir mydir
14:14 mybox:~ cd mydir/
14:14 mybox:mydir echo foo | sudo tee yourfile
foo
14:14 mybox:mydir ls -ld . yourfile
drwxr-xr-x 3 me staff 102 Apr 11 14:14 .
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile
เราสร้างไดเรกทอรีและเขียนไฟล์เป็นรูท เนื่องจาก root เป็นเจ้าของไฟล์เราไม่สามารถเขียนได้และไม่สามารถ chmod:
14:15 mybox:mydir echo bar > yourfile
-bash: yourfile: Permission denied
14:15 mybox:mydir chmod a+x yourfile
chmod: Unable to change file mode on yourfile: Operation not permitted
อย่างไรก็ตามเรามีสิทธิ์เขียนไปยังไดเรกทอรีดังนั้นเราจึงสามารถแทนที่ไฟล์เพื่อให้ได้กรรมสิทธิ์:
14:15 mybox:mydir mv yourfile yourfile2
14:15 mybox:mydir cp yourfile2 yourfile
14:15 mybox:mydir ls -ld . yourfile
drwxr-xr-x 4 me staff 136 Apr 11 14:15 .
-rw-r--r-- 1 me staff 4 Apr 11 14:15 yourfile
และตอนนี้เราเป็นเจ้าของเราสามารถทำสิ่งที่เราต้องการด้วยไฟล์นั้น:
14:15 mybox:mydir echo bar > yourfile
14:15 mybox:mydir chmod a+x yourfile
14:16 mybox:mydir cat yourfile
bar
ในทำนองเดียวกันผู้ใช้ที่มีสิทธิ์เขียนไปยังไดเรกทอรีใด ๆในเส้นทางแบบเต็มที่นำไปสู่ไฟล์สามารถแทนที่โครงสร้างไดเรกทอรีจากจุดนั้นจึงได้รับกรรมสิทธิ์ของไฟล์ด้วยชื่อที่กำหนด ความเป็นเจ้าของหรือการอนุญาตของไฟล์ต้นฉบับจริง (ซึ่งเราเปลี่ยนชื่อเป็น "yourfile2") จะไม่เปลี่ยนแปลงแน่นอน
14:17 mybox:mydir ls -l yourfile2
-rw-r--r-- 1 root staff 4 Apr 11 14:14 yourfile2
getfacl / setfacl
) ซึ่งให้ความยืดหยุ่นมากกว่าการอนุญาตไฟล์สไตล์ "คลาสสิค" การลบไฟล์ใน * nix ทำงานโดยการลบลิงค์ไปยังไฟล์ออกจากไดเรกทอรีดังนั้นการลบไฟล์จะถูกควบคุมโดยการอนุญาตของไดเรกทอรี; การอนุญาตไฟล์เองไม่มีบทบาทใด ๆ
chmod
คำสั่งอย่างเป็นธรรมโดยตรงเรียกเรียกระบบที่มีชื่อเดียวกัน; man page สำหรับการchmod(2)
เรียกของระบบ (บน Linux 4.10) พูดว่า:
UID ที่มีประสิทธิภาพของกระบวนการที่เรียกจะต้องตรงกับเจ้าของไฟล์หรือกระบวนการนั้นต้องได้รับสิทธิพิเศษ (Linux: ต้องมี
CAP_FOWNER
ความสามารถ)หากกระบวนการเรียกไม่ได้รับสิทธิพิเศษ (Linux: ไม่มี
CAP_FSETID
ความสามารถ) และกลุ่มของไฟล์ไม่ตรงกับ ID กลุ่มที่มีประสิทธิภาพของกระบวนการหรือหนึ่งใน ID กลุ่มเสริมของมันS_ISGID
บิตจะถูกปิด แต่สิ่งนี้ จะไม่ทำให้เกิดข้อผิดพลาดในการส่งคืน
ใช่กระบวนการที่ทำงานในฐานะรูทสามารถเปลี่ยนแปลงการอนุญาตของไฟล์ใด ๆ หากไม่ได้ลดCAP_FOWNER
ความสามารถลง
อีกอย่างที่น่าสนใจคือchown
; หน้าคนสำหรับchown(2)
พูดว่า:
เฉพาะกระบวนการที่ได้รับสิทธิพิเศษ (Linux: หนึ่งที่มี
CAP_CHOWN
ความสามารถ) อาจเปลี่ยนเจ้าของไฟล์ เจ้าของไฟล์อาจเปลี่ยนกลุ่มของไฟล์เป็นกลุ่มใดก็ได้ที่เจ้าของนั้นเป็นสมาชิก กระบวนการพิเศษ (Linux: withCAP_CHOWN
) อาจเปลี่ยนแปลงกลุ่มโดยพลการ