ความแตกต่างที่สำคัญระหว่าง chmod และ chown คืออะไร?


43

ในตัวอย่างบางส่วนผมเห็นว่าบางอย่างที่ใช้แทนchown chmodผมไม่ทราบว่าจะใช้และchmod chownโปรดอธิบายให้ฉันฟังถึงความแตกต่างระหว่างพวกเขาเมื่อใดและทำไมฉันจึงควรใช้อย่างใดอย่างหนึ่ง


18
ไม่มีใครทำให้มันชัดเจน: หนึ่งch anges mod e และchอื่น ๆanges เอ้อของตัวเอง นอกจากนี้อ่านผู้ชาย ual
หยุดทำร้ายโมนิก้า

1
และในขณะที่chownยังสามารถch Ange กรัมอูพีมีความchgrpทุ่มเทเป็นพิเศษเพื่องานนี้
หยุดทำร้ายโมนิก้า

6
อะไรคือความแตกต่างหลักระหว่างกล้วยกับเก้าอี้? อย่านั่งบนกล้วย
Shadur

คำตอบ:


48

มาสร้างไฟล์กัน

touch rainbow

มาดูข้อมูลเมตาของไฟล์กัน

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

ส่วนแรกของข้อมูลคือประเภทไฟล์ ( -ที่จุดเริ่มต้นหมายความว่าเป็นไฟล์ปกติ) และบิตสิทธิ์

หลังจากนั้นเราจะเห็นเจ้าของ (ซานา) และกลุ่ม (ซานนา) เราสามารถใช้chownคำสั่งเพื่อเปลี่ยนสิ่งเหล่านี้:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

และเราใช้chmodเพื่อเปลี่ยนบิตสิทธิ์

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

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


1
+1 สำหรับรูปภาพ .. ไม่มีการกำหนดฐานแปด หรือchmod a+wตัวอย่าง ซึ่งใช้เวลานานในการทำ แต่ได้รับคะแนนมากขึ้นฉันคิดว่า: D
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix haha ​​ขอบคุณ ... ฉันจงใจเลือกการตั้งค่าการอนุญาตที่ไร้ประโยชน์โดยเฉพาะ ถ้าฉันเริ่มอธิบายว่าเมื่อไรและทำไมต้องใช้การเปลี่ยนแปลงที่เป็นไปได้ทุกครั้งchmodและchown(ซึ่งกว้างเกินไปสำหรับคำถาม) คำตอบของฉันจะคงอยู่ตลอดไป พยายามทำให้มันง่าย
Zanna

96

กล่าวง่ายๆ chownคือใช้เพื่อเปลี่ยนความเป็นเจ้าของของไฟล์ในขณะที่chmodสำหรับการเปลี่ยนบิตโหมดไฟล์

  • chown กำหนดผู้ที่เป็นเจ้าของไฟล์
  • chmod กำหนดว่าใครสามารถทำอะไรได้บ้าง

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

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

ที่บรรทัดด้านบนเราจะเห็นว่าravexinaเป็นเจ้าของไฟล์และadminsเป็นกลุ่ม ฉันสามารถใช้: sudo chown dave:sudo fileเพื่อเปลี่ยนเจ้าของไฟล์เป็นdaveและกลุ่มเป็นsudo; ตอนนี้ไฟล์เป็นของ "เดฟ" และทุกคนในกลุ่ม "sudo"

อย่างไรก็ตามchmodเรากำหนดว่าใครสามารถทำอะไรได้บ้าง ผู้ที่มีสิทธิ์ในการอ่านไฟล์เขียนไปยังไฟล์หรือรันมัน เช่น:

chmod 777 file

ให้สิทธิ์ในการอ่านเขียนและดำเนินการกับทุกคนรวมถึงเจ้าของกลุ่มและทุกคนอื่น ๆ

จากturnoff.us : ป้อนคำอธิบายรูปภาพที่นี่


1
เจ้าของไม่สามารถทำสิ่งที่พวกเขาต้องการไฟล์ - ลบหรือย้ายต้องมีสิทธิ์เขียนในไดเรกทอรีที่มี
muru

2
@muru นั้นเป็นเรื่องจริง;) ฉันหมายถึงการอ่าน / เขียน / exec ยังมีchattrไฟล์ที่ฉันสามารถเดาได้
Ravexina

1
@ KamilMaciorowski คุณรู้ไหมฉันรู้เรื่องนั้น Ravexina รู้ดีว่า แต่คนส่วนใหญ่ไม่ชอบ
muru

2
@ KamilMaciorowski ฉันไม่ได้ขอให้คุณแกล้งอะไร สิ่งที่คุณขาดไปคือคนส่วนใหญ่ไม่คิดว่าจะลบหรือเปลี่ยนชื่อไฟล์ว่าเป็นการดำเนินการในไดเรกทอรี แต่เป็นการดำเนินการในไฟล์ นั่นเป็นเหตุผลที่เรามีคำถามเช่นนี้: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442เห็นได้ชัดว่าคุณรู้ว่าสิ่งเหล่านี้เป็นการดำเนินการในไดเรกทอรี (ขอแสดงความยินดี !) แต่มีความเข้าใจผิดทั่วไปเกี่ยวกับเรื่องนั้นดังนั้นฉันสังเกตว่าการเปลี่ยนชื่อหรือลบเกี่ยวข้องกับการอนุญาตในไดเรกทอรีไม่ใช่ไฟล์ ...
muru

1
@KamilMaciorowski ... คำถามนี้เกิดจากผู้ใช้ที่ไม่ทราบความแตกต่างระหว่าง chmod และ chown ดังนั้นดูเหมือนว่าสมเหตุสมผลสำหรับฉันที่พวกเขาไม่ทราบว่าการเปลี่ยนชื่อไฟล์จะต้องได้รับอนุญาตในไดเรกทอรี
muru

19

เมื่อพิจารณาถึงการอนุญาตของไฟล์ (หรือไดเรกทอรีหรืออะไรก็ตาม) มีสองปัจจัยดังนี้

  • ใครเป็นเจ้าของไฟล์ - ผู้ใช้และกลุ่มและ
  • สิ่งที่พวกเขาสามารถทำอะไรกับมัน - อ่านเขียนดำเนินการหรือการรวมกันดังกล่าว

chownเกี่ยวข้องกับการที่ chmodเกี่ยวข้องกับสิ่งที่ คุณไม่สามารถใช้อันใดอันหนึ่งแทนอันอื่นได้

สิทธิ์ Unix อย่างง่ายจำแนกผู้ใช้ที่พยายามเข้าถึงไฟล์เป็นสามประเภท:

  1. เจ้าของไฟล์
  2. ผู้ใช้ที่เป็นสมาชิกของกลุ่มที่เป็นเจ้าของไฟล์
  3. คนอื่น ๆ

chownจะใช้ในการเปลี่ยนสองคนแรก chmodใช้เพื่อเปลี่ยนสิทธิ์ที่ให้กับประเภทเหล่านี้


7

คะแนน / เคล็ดลับเล็กน้อยในการเพิ่มคำตอบที่ยอดเยี่ยมก่อนหน้า

  • คุณต้องมีสิทธิ์ดำเนินการในไดเรกทอรี (และทั้งหมดข้างต้น) เพื่อเข้าถึง
  • ใช้ตัวเลือก -R เพื่อใช้การเปลี่ยนแปลงแบบวนซ้ำกับทุกสิ่งรวมถึงและต่ำกว่าเป้าหมายเช่น chown -R www-data files/
  • คุณสามารถเปลี่ยนผู้ใช้และกลุ่มในเวลาเดียวกันโดยใช้ไวยากรณ์ chown user:group myfile
  • บ่อยครั้งการใช้ตัวเลือก '+' และ '-' ง่ายกว่าหรือดีกว่าการตั้งค่าการอนุญาตแบบสัมบูรณ์โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับไฟล์และไดเรกทอรีร่วมกัน ตัวอย่างเช่นถ้าคุณต้องการให้สิทธิ์ในการเขียนแบบกลุ่มกับไดเรกทอรีและทุกอย่างด้านล่างมันchmod -R 775 files/จะทำให้ 'files /' และทุกอย่างในและด้านล่างสามารถเรียกใช้และอ่านได้ทั้งหมดซึ่งอาจไม่ใช่ผลลัพธ์ที่ต้องการสำหรับทุกไฟล์ การใช้chmod -R g+w files/จะเพิ่มสิทธิ์ในการเขียนกลุ่มโดยไม่ต้องแตะสิ่งอื่นใด

6

คำตอบที่ดีมากอยู่แล้ว แต่ฉันต้องการบริจาคเพื่อช่วยให้เข้าใจได้ง่าย

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

วิธีนี้คุณสามารถต่อท้ายการอนุญาตไปยังไฟล์ได้อย่างง่ายดาย ในตัวอย่างด้านบน

user = read + write
other = read but not write
group = not read not write

และอย่าลืม-Rว่าถ้าคุณต้องการเปลี่ยนการอนุญาตซ้ำ


1

chownจะเปลี่ยนผู้ที่เป็นเจ้าของไฟล์และกลุ่มที่เป็นเจ้าของในขณะที่chmodเปลี่ยนวิธีการที่เจ้าของและกลุ่มสามารถเข้าถึงไฟล์ได้ (หรือถ้าพวกเขาสามารถเข้าถึงได้เลย)

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