Faith Evans feat. Stevie J – "A Minute" [Official Music Video]
สารบัญ:
- สิทธิ์การใช้งานไฟล์ Linux
- การใช้
chmod
- วิธีสัญลักษณ์ (ข้อความ)
- วิธีตัวเลข
- การใช้ไฟล์อ้างอิง
- เปลี่ยนการอนุญาตของไฟล์ซ้ำ ๆ
- ปฏิบัติการบนลิงค์สัญลักษณ์
- การเปลี่ยนการอนุญาตของไฟล์เป็นกลุ่ม
- ข้อสรุป
ใน Linux การเข้าถึงไฟล์นั้นได้รับการจัดการผ่านการอนุญาตไฟล์คุณสมบัติและความเป็นเจ้าของ สิ่งนี้ทำให้มั่นใจได้ว่าผู้ใช้และกระบวนการที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงไฟล์และไดเรกทอรี
บทช่วยสอนนี้ครอบคลุมถึงวิธีการใช้คำสั่ง
chmod
เพื่อเปลี่ยนสิทธิ์การเข้าถึงของไฟล์และไดเรกทอรี
สิทธิ์การใช้งานไฟล์ Linux
ก่อนที่จะดำเนินการต่อไปให้อธิบายรูปแบบการอนุญาตพื้นฐานของ Linux
ใน Linux ไฟล์แต่ละไฟล์จะเชื่อมโยงกับเจ้าของและกลุ่มและได้รับมอบหมายสิทธิ์การเข้าถึงสำหรับผู้ใช้สามประเภทที่แตกต่างกัน:
- เจ้าของไฟล์สมาชิกกลุ่มอื่น ๆ (ทุกคน)
ความเป็นเจ้าของไฟล์สามารถเปลี่ยนแปลงได้โดยใช้คำสั่ง
chown
และ
chgrp
มีประเภทการอนุญาตไฟล์สามประเภทที่ใช้กับแต่ละคลาส:
- สิทธิ์ในการอ่านอนุญาตการเขียนอนุญาตการดำเนินการ
แนวคิดนี้อนุญาตให้คุณระบุผู้ใช้ที่ได้รับอนุญาตให้อ่านไฟล์เขียนไปยังไฟล์หรือเรียกใช้ไฟล์
สามารถดูไฟล์สิทธิ์ได้โดยใช้
ls
สั่ง
ls
:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
อักขระตัวแรกแสดงประเภทไฟล์ สามารถเป็นไฟล์ปกติ (
-
), ไดเรกทอรี (
d
), ลิงก์สัญลักษณ์ (
l
) หรือไฟล์ชนิดพิเศษอื่น ๆ
อักขระเก้าตัวถัดไปแสดงสิทธิ์ของไฟล์โดยแต่ละสามในสามของอักขระแต่ละตัว Triplet แรกแสดงสิทธิ์ของเจ้าของสิทธิ์กลุ่มที่สองและสิทธิ์ล่าสุดแสดงให้เห็นการอนุญาตสำหรับทุกคน การอนุญาตอาจมีความหมายแตกต่างกันไปขึ้นอยู่กับประเภทของไฟล์
ในตัวอย่างด้านบน (
rw-r--r--
) หมายความว่าเจ้าของไฟล์มีสิทธิ์อ่านและเขียน (
rw-
) กลุ่มและคนอื่น ๆ มีสิทธิ์อ่านเท่านั้น (
r--
)
ทริปเปิสิทธิ์สามอย่างแต่ละอย่างสามารถสร้างอักขระต่อไปนี้และมีเอฟเฟกต์ต่างกันขึ้นอยู่กับว่าพวกเขาถูกตั้งค่าเป็นไฟล์หรือไปที่ไดเรกทอรี:
ผลกระทบของการอนุญาตต่อไฟล์
การอนุญาต | ตัวละคร | ความหมายในไฟล์ |
---|---|---|
อ่าน |
-
|
ไฟล์ไม่สามารถอ่านได้ คุณไม่สามารถดูเนื้อหาไฟล์ |
r
|
ไฟล์สามารถอ่านได้ | |
เขียน |
-
|
ไม่สามารถเปลี่ยนแปลงหรือแก้ไขไฟล์ได้ |
w
|
ไฟล์สามารถเปลี่ยนแปลงหรือแก้ไขได้ | |
ปฏิบัติ |
-
|
ไม่สามารถเรียกใช้ไฟล์ |
x
|
ไฟล์สามารถดำเนินการได้ | |
s
|
หากพบใน
user
triplet จะตั้งค่าบิต
setuid
หากพบใน
group
triplet มันตั้งบิต
setgid
นอกจากนี้ยังหมายถึงการตั้งค่าสถานะ
x
เมื่อตั้งค่าสถานะ
|
|
S
|
เหมือนกับ
s
แต่ไม่ได้ตั้งค่า
x
การตั้งค่าสถานะนี้ไม่ค่อยได้ใช้กับไฟล์ |
|
t
|
หากพบใน triplet
others
มันตั้งค่าบิตที่
sticky
นอกจากนี้ยังหมายถึงการตั้งค่าสถานะ
|
|
T
|
เหมือนกับ
t
แต่ไม่ได้ตั้งค่าแฟล็ก
x
การตั้งค่าสถานะนี้ไม่มีประโยชน์ในไฟล์ |
ผลของการอนุญาตในนาม (โฟลเดอร์)
ใน Linux ไดเรกทอรีเป็นไฟล์ประเภทพิเศษที่มีไฟล์และไดเรกทอรีอื่น ๆ
การอนุญาต | ตัวละคร | ความหมายในไดเรกทอรี |
---|---|---|
อ่าน |
-
|
ไม่สามารถแสดงเนื้อหาของไดเรกทอรี |
r
|
เนื้อหาของไดเรกทอรีสามารถแสดงได้
(เช่นคุณสามารถแสดงรายการไฟล์ในไดเรกทอรีด้วย
|
|
เขียน |
-
|
เนื้อหาของไดเรกทอรีไม่สามารถเปลี่ยนแปลงได้ |
w
|
เนื้อหาของไดเรกทอรีสามารถเปลี่ยนแปลงได้
(เช่นคุณไม่สามารถสร้างไฟล์ใหม่ลบไฟล์.. เป็นต้น) |
|
ปฏิบัติ |
-
|
ไม่สามารถเปลี่ยนไดเรกทอรีเป็น |
x
|
ไดเรกทอรีสามารถสำรวจได้โดยใช้
cd
|
|
s
|
หากพบใน
user
triplet มันตั้งบิต
setuid
หากพบใน
group
triplet มันตั้งบิต
setgid
นอกจากนี้ยังหมายถึงการตั้งค่าสถานะ
x
เมื่อมีการตั้งค่าสถานะ
setgid
ในไดเรกทอรีไฟล์ใหม่ที่สร้างขึ้นภายในจะสืบทอด ID กลุ่มไดเรกทอรี (GID) แทนรหัสกลุ่มหลักของผู้ใช้ที่สร้างไฟล์
|
|
S
|
เหมือนกับ
s
แต่ไม่ได้ตั้งค่า
x
การตั้งค่าสถานะนี้ไม่มีประโยชน์ในไดเรกทอรี |
|
t
|
หากพบใน triplet
others
มันตั้งค่าบิตที่
sticky
นอกจากนี้ยังหมายถึงการตั้งค่าสถานะ
|
|
T
|
เหมือนกับ
t
แต่ไม่ได้ตั้งค่าแฟล็ก
x
การตั้งค่าสถานะนี้ไม่มีประโยชน์ในไดเรกทอรี |
การใช้
chmod
คำสั่ง
chmod
ใช้รูปแบบทั่วไปต่อไปนี้:
chmod MODE FILE…
คำสั่ง
chmod
อนุญาตให้คุณเปลี่ยนการอนุญาตบนไฟล์โดยใช้โหมดสัญลักษณ์หรือตัวเลขหรือไฟล์อ้างอิง เราจะอธิบายโหมดในรายละเอียดเพิ่มเติมในภายหลัง คำสั่งสามารถยอมรับไฟล์และ / หรือไดเรกทอรีหนึ่งไฟล์ขึ้นไปโดยคั่นด้วยช่องว่างเป็นอาร์กิวเมนต์
เฉพาะ root เจ้าของไฟล์หรือผู้ใช้ที่มีสิทธิ์ sudo สามารถเปลี่ยนการอนุญาตของไฟล์ได้ ระมัดระวังเป็นพิเศษเมื่อใช้
chmod
โดยเฉพาะอย่างยิ่งเมื่อมีการเปลี่ยนแปลงการอนุญาตซ้ำ ๆ
วิธีสัญลักษณ์ (ข้อความ)
ไวยากรณ์ของคำสั่ง
chmod
เมื่อใช้โหมดสัญลักษณ์มีรูปแบบต่อไปนี้:
chmod perms… FILE…
ชุดธงแรก (
), ค่าสถานะผู้ใช้, กำหนดว่าผู้ใช้คลาสใดที่อนุญาตให้มีการเปลี่ยนแปลงไฟล์
-
u
- เจ้าของไฟล์g
- ผู้ใช้ที่เป็นสมาชิกของกลุ่มo
- ผู้ใช้อื่นทั้งหมดa
- ผู้ใช้ทั้งหมดเหมือนกับugo
หากไม่ระบุค่าสถานะผู้ใช้ค่าเริ่มต้นคือ
a
และสิทธิ์ที่กำหนดโดย umask จะไม่ได้รับผลกระทบ
ชุดธงที่สอง (
) การตั้งค่าสถานะการดำเนินการกำหนดว่าจะอนุญาตให้ลบเพิ่มหรือตั้งค่าสิทธิ์:
-
-
ลบสิทธิ์ที่ระบุ+
เพิ่มสิทธิ์ที่ระบุ=
เปลี่ยนสิทธิ์ปัจจุบันเป็นสิทธิ์ที่ระบุ หากไม่มีการระบุสิทธิ์หลังจากสัญลักษณ์=
อนุญาตทั้งหมดจากคลาสผู้ใช้ที่ระบุจะถูกลบออก
สิทธิ์ (
perms…
) สามารถตั้งค่าได้อย่างชัดเจนโดยใช้ศูนย์หรือตัวอักษรอย่างน้อยหนึ่งตัวต่อไปนี้:
r
,
w
,
x
,
X
,
X
,
s
และ
t
ใช้ตัวอักษรเดียวจาก set
u
,
g
และ
o
เมื่อคัดลอกการอนุญาตจากคลาสหนึ่งไปยังคลาสผู้ใช้อื่น
เมื่อตั้งค่าการอนุญาตสำหรับคลาสผู้ใช้มากกว่าหนึ่งคลาส (
) ใช้เครื่องหมายจุลภาค (ไม่มีช่องว่าง) เพื่อแยกโหมดสัญลักษณ์
ด้านล่างเป็นตัวอย่างบางส่วนของวิธีการใช้คำสั่ง
chmod
ในโหมดสัญลักษณ์:
-
ให้สมาชิกกลุ่มได้รับอนุญาตในการอ่านไฟล์ แต่ไม่ต้องเขียนและดำเนินการ:
chmod g=r filename
ลบสิทธิ์ดำเนินการสำหรับผู้ใช้ทั้งหมด:
chmod ax filename
ลบการอนุญาตการเขียนสำหรับผู้ใช้รายอื่นอย่างชัดเจน:
chmod -R ow dirname
ลบสิทธิ์การอ่านเขียนและดำเนินการสำหรับผู้ใช้ทั้งหมดยกเว้นเจ้าของไฟล์:
chmod og-rwx filename
สิ่งเดียวกันสามารถทำได้โดยใช้แบบฟอร์มต่อไปนี้:
chmod og= filename
ให้สิทธิ์ในการอ่านเขียนและดำเนินการกับเจ้าของไฟล์อ่านสิทธิ์สำหรับกลุ่มของไฟล์และไม่ให้สิทธิ์แก่ผู้ใช้รายอื่น:
chmod u=rwx, g=r, o= filename
เพิ่มสิทธิ์ของเจ้าของไฟล์ในการอนุญาตที่สมาชิกของกลุ่มไฟล์มี:
chmod g+u filename
เพิ่มเหนียวเล็กน้อยไปยังไดเรกทอรีที่กำหนด:
chmod o+t dirname
วิธีตัวเลข
ไวยากรณ์ของคำสั่ง
chmod
เมื่อใช้วิธีตัวเลขมีรูปแบบต่อไปนี้:
chmod NUMBER FILE…
เมื่อใช้โหมดตัวเลขคุณสามารถตั้งค่าการอนุญาตสำหรับคลาสผู้ใช้ทั้งสาม (เจ้าของกลุ่มและอื่น ๆ ทั้งหมด) ในเวลาเดียวกัน
NUMBER
สามารถเป็นตัวเลข 3 หรือ 4 หลัก
เมื่อใช้ตัวเลข 3 หลักตัวเลขตัวแรกจะแสดงถึงการอนุญาตของเจ้าของไฟล์กลุ่มที่สองของกลุ่มไฟล์และผู้ใช้รายอื่นทั้งหมด
สิทธิ์ในการเขียนอ่านและเรียกใช้แต่ละครั้งมีค่าหมายเลขต่อไปนี้:
-
r
(read) = 4w
(เขียน) = 2x
(ดำเนินการ) = 1 ไม่อนุญาต = 0
หมายเลขสิทธิ์ของคลาสผู้ใช้ที่ระบุจะแสดงด้วยผลรวมของค่าสิทธิ์สำหรับกลุ่มนั้น
ในการค้นหาการอนุญาตของไฟล์ในโหมดตัวเลขเพียงคำนวณผลรวมสำหรับคลาสผู้ใช้ทั้งหมด ตัวอย่างเช่นในการให้สิทธิ์ในการอ่านเขียนและดำเนินการให้กับเจ้าของไฟล์ให้อ่านและดำเนินการอนุญาตให้กับกลุ่มของไฟล์และอ่านเฉพาะการอนุญาตแก่ผู้ใช้อื่น ๆ ทั้งหมดที่คุณต้องทำดังต่อไปนี้:
- เจ้าของ: rwx = 4 + 2 + 1 = 7 กลุ่ม: rx = 4 + 0 + 1 = 5 อื่น ๆ: rx = 4 + 0 + 0 = 4
การใช้วิธีการด้านบนทำให้เกิดจำนวน
754
ซึ่งหมายถึงการอนุญาตที่ต้องการ
ในการตั้งค่าแฟล็ก
setuid
,
setgid
และ
sticky bit
ใช้ตัวเลขสี่หลัก
เมื่อใช้ตัวเลข 4 หลักเลขตัวแรกจะมีความหมายดังต่อไปนี้:
- setuid = 4setgid = 2sticky = 1 ไม่มีการเปลี่ยนแปลง = 0
ตัวเลขสามหลักถัดไปมีความหมายเหมือนกับเมื่อใช้หมายเลข 3 หลัก
หากตัวเลขตัวแรกคือ 0 จะสามารถละเว้นได้และโหมดนั้นสามารถแสดงด้วยตัวเลข 3 หลัก โหมดตัวเลข
0755
เหมือนกับ
755
ในการคำนวณโหมดตัวเลขคุณสามารถใช้วิธีอื่น (วิธีฐานสอง) ได้ แต่มันก็ซับซ้อนกว่าเล็กน้อย การรู้วิธีคำนวณโหมดตัวเลขโดยใช้ 4, 2 และ 1 นั้นเพียงพอสำหรับผู้ใช้ส่วนใหญ่
คุณสามารถตรวจสอบการอนุญาตของไฟล์ในรูปแบบตัวเลขโดยใช้คำสั่ง
stat
:
stat -c "%a" filename
644
นี่คือตัวอย่างของวิธีใช้คำสั่ง
chmod
ในโหมดตัวเลข:
-
ให้สิทธิ์การอ่านและเขียนแก่เจ้าของไฟล์และอ่านเฉพาะการอนุญาตแก่สมาชิกกลุ่มและผู้ใช้อื่น ๆ ทั้งหมด:
chmod 644 dirname
มอบสิทธิ์การอ่านเขียนและดำเนินการให้เจ้าของไฟล์อ่านและดำเนินการอนุญาตแก่สมาชิกกลุ่มและไม่ให้สิทธิ์ผู้ใช้รายอื่น:
chmod 750 dirname
ให้สิทธิ์ในการอ่านเขียนและดำเนินการและบิตไปยังไดเร็กทอรีที่กำหนด:
chmod 1777 dirname
ตั้งค่าการอ่านเขียนและดำเนินการอนุญาตซ้ำกับเจ้าของไฟล์และไม่มีสิทธิ์สำหรับผู้ใช้รายอื่นในไดเรกทอรีที่กำหนด:
chmod -R 700 dirname
การใช้ไฟล์อ้างอิง
ตัวเลือก
--reference=ref_file
อนุญาตให้คุณตั้งค่าการอนุญาตของไฟล์ให้เหมือนกับของไฟล์อ้างอิงที่ระบุ (
ref_file
)
chmod --reference=REF_FILE FILE
ตัวอย่างเช่นคำสั่งต่อไปนี้จะกำหนดสิทธิ์ของ
file1
ให้กับ
file2
เปลี่ยนการอนุญาตของไฟล์ซ้ำ ๆ
ในการเรียกใช้ซ้ำบนไฟล์และไดเรกทอรีทั้งหมดภายใต้ไดเรกทอรีที่กำหนดให้ใช้ตัวเลือก
-R
(
--recursive
):
chmod -R MODE DIRECTORY
ตัวอย่างเช่นหากต้องการเปลี่ยนการอนุญาตของไฟล์และไดเรกทอรีย่อยทั้งหมดภายใต้ไดเรกทอรี
/var/www
เป็น
755
คุณจะต้องใช้:
ปฏิบัติการบนลิงค์สัญลักษณ์
ลิงก์สัญลักษณ์มักมีการอนุญาต
777
ครั้ง
โดยค่าเริ่มต้นเมื่อเปลี่ยนการอนุญาตของ symlink
chmod
จะเปลี่ยนการอนุญาตในไฟล์ที่ลิงก์ชี้ไป
chmod 755 symlink
โอกาสที่จะเปลี่ยนความเป็นเจ้าของเป้าหมายคุณจะได้รับข้อผิดพลาด“ ไม่สามารถเข้าถึง 'symlink': การอนุญาตที่ถูกปฏิเสธ”
ข้อผิดพลาดเกิดขึ้นเนื่องจากโดยค่าเริ่มต้นบน symlink การกระจาย Linux ส่วนใหญ่ได้รับการคุ้มครองและคุณไม่สามารถทำงานกับไฟล์เป้าหมายได้ ตัวเลือกนี้มีการระบุไว้ใน
/proc/sys/fs/protected_symlinks
1
หมายถึงเปิดใช้งานและปิดใช้งาน
0
ขอแนะนำไม่ให้ปิดการใช้งานการป้องกัน symlink
การเปลี่ยนการอนุญาตของไฟล์เป็นกลุ่ม
บางครั้งมีสถานการณ์ที่คุณจะต้องเปลี่ยนไฟล์และการอนุญาตเป็นจำนวนมาก
สถานการณ์ที่พบบ่อยที่สุดคือการเปลี่ยนการอนุญาตซ้ำของเว็บไซต์เป็น
644
และการอนุญาตของไดเรกทอรีเป็น
755
ใช้วิธีตัวเลข:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
ใช้วิธีสัญลักษณ์:
find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ;
find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;
คำสั่ง
find
จะค้นหาไฟล์และไดเร็กทอรีภายใต้
/var/www/my_website
และส่งแต่ละไฟล์ที่พบและไดเร็กทอรีไปยังคำสั่ง
chmod
เพื่อตั้งค่าการอนุญาต
ข้อสรุป
คำสั่ง
chmod
เปลี่ยนสิทธิ์ของไฟล์ การอนุญาตสามารถตั้งค่าได้โดยใช้โหมดสัญลักษณ์หรือตัวเลข
เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ
chmod
เยี่ยมชมหน้าคน chmod
คำสั่ง linux พื้นฐาน
การรู้วิธีใช้บรรทัดคำสั่งจะมีประโยชน์มาก ในบทความนี้เราจะดำเนินการตามคำสั่ง Linux ที่ใช้บ่อยที่สุดที่ผู้ดูแลระบบ Linux ใช้เป็นประจำทุกวัน
คำสั่ง Chgrp ใน linux (เปลี่ยนกลุ่ม)
ใน Linux แต่ละไฟล์จะเชื่อมโยงกับเจ้าของและกลุ่มและมีสิทธิ์ที่กำหนดว่าผู้ใช้คนใดสามารถอ่านเขียนหรือดำเนินการไฟล์ คำสั่ง chgrpc เปลี่ยนความเป็นเจ้าของกลุ่มของไฟล์ที่กำหนด
คำสั่ง Cp ใน linux (คัดลอกไฟล์)
cp เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับการคัดลอกไฟล์และไดเรกทอรีบนระบบ Unix และ Linux