ทำไมต้องเปลี่ยนเจ้าของลิงค์สัญลักษณ์ใน linux


12

ใน linux เป็นไปได้ที่จะเปลี่ยนเจ้าของหรือเจ้าของกลุ่มของลิงก์สัญลักษณ์ (symlink) ฉันสงสัยว่าทำไมบางคนต้องการทำเช่นนั้นเนื่องจากสิทธิ์ของ symlink ไม่ได้ถูกใช้เมื่อเข้าถึงไฟล์ผ่านมัน

ฉันสามารถจินตนาการกรณีการใช้งานเพียงหนึ่งกรณีซึ่งอาจมีประโยชน์: เพื่อให้ผู้ใช้สามารถลบ symlink ในไดเรกทอรีที่มีบิตเหนียว

คุณรู้กรณีอื่น ๆ ที่อาจมีประโยชน์ในการเปลี่ยนเจ้าของหรือเจ้าของกลุ่มของ symlink หรือไม่?

คำตอบ:


6

สมมติว่ารูททำงานในไดเรกทอรีที่ Eve สามารถเขียนได้ มีไฟล์fooในไดเรกทอรีนี้ที่จะต้องเปลี่ยนเป็นของอีฟ chown eve fooดังนั้นประเภทราก ln -sf /etc/passwd fooแต่ก่อนที่จะฮิตรากใส่อีฟวิ่ง ตอนนี้/etc/passwdเป็นของอีฟ! หากรูทสามารถรันchown -h eve fooเพื่อให้แน่ใจว่าจะไม่ติดตาม symlinks ความเสียหายที่สามารถทำได้คือไฟล์อื่น ๆ ในไดเรกทอรีเดียวกันนั้นถูกเปลี่ยนเป็นของอีฟ

lchownยังสะดวกเมื่อคุณเปลี่ยนเจ้าของแผนผังไดเรกทอรี คุณไม่ต้องกังวลเกี่ยวกับไฟล์ที่อยู่นอกต้นไม้โดยไม่ได้ตั้งใจเพราะคุณโทรมาchownที่ลิงก์สัญลักษณ์


ถ้ารูทสามารถรัน chown -h bob foo เพื่อให้แน่ใจว่าไม่ได้ติดตาม symlinks สิ่งที่อันตรายที่สุดที่สามารถทำได้คือไฟล์อื่น ๆ ในไดเรกทอรีเดียวกันนั้นถูกเปลี่ยนเป็นของอีฟ ". ฉันเดาว่าคุณหมายถึง "chown -h eve foo" ไฟล์อื่นที่อาจมีการเปลี่ยนแปลงมันเป็นลิงค์สัญลักษณ์ใช่ไหม?
user368507

@ user5528 ไฟล์อื่น ๆ ที่อาจจะไม่ symlink A: อีฟยังคงสามารถทำงานและรากจะสิ้นสุดการเปลี่ยนเจ้าของmv myfile foo myfileแต่myfileต้องเป็นไฟล์ที่ Eve สามารถสร้างหรือย้ายไปยังไดเรกทอรีนั้นไม่สามารถเป็นไฟล์ใด ๆ ในระบบ
Gilles 'SO- หยุดความชั่วร้าย'

2
ในขณะที่น่าสนใจและเห็นได้ชัดว่าได้รับการอนุมัติจากผู้ถามฉันไม่เห็นว่าคำตอบนี้ตอบคำถามอย่างไร ดูเหมือนจะอธิบายได้มากขึ้นว่าเหตุใดจึงควรใช้chown -hมาตรการเตือนเมื่อเปลี่ยนความเป็นเจ้าของไฟล์ที่ไม่ควรเป็น symlink แต่อาจเป็น (กรณีขอบ, IMO) มันไม่ได้อธิบายว่าทำไมคนเราอาจต้องการเปลี่ยนความเป็นเจ้าของไฟล์ที่จริงแล้วมีวัตถุประสงค์เพื่อเป็น symlink ซึ่งเป็นคำถามที่ถาม
Ivan X

ทำไมจะchownเปลี่ยนเจ้าของ "ไฟล์นอกต้นไม้" คือสิ่งที่คุณกำลังเปลี่ยนเป็นเจ้าของไดเรกทอรี?
Melab

@Melab เมื่อคุณเปลี่ยนเจ้าของแผนผังไดเรกทอรีเช่นยกเลิกการติดตั้งยูทิลิตี้chown -Rที่เรียกการ(l)chownเรียกระบบในแต่ละรายการไดเรกทอรี หากรายการไดเร็กทอรีเป็นลิงก์สัญลักษณ์คุณจะต้องไม่เรียกการเรียกของchownระบบเพราะจะส่งผลต่อเป้าหมายของลิงก์ซึ่งอาจอยู่นอกแผนผัง
Gilles 'หยุดความชั่วร้าย'

8

Apache สามารถกำหนดค่าให้ติดตาม symlink ได้ก็ต่อเมื่อเจ้าของลิงก์ตรงกับเจ้าของปลายทาง สิ่งนี้สามารถช่วยป้องกันผู้ใช้จากการสร้างลิงก์สำหรับการเข้าถึงเว็บไปยังไฟล์ที่พวกเขาไม่ได้เป็นเจ้าของ (เช่น / etc / passwd)

... ดังนั้นสมมติว่าคุณในฐานะ root ต้องการให้ Apache ติดตามลิงก์เพื่อแสดงไฟล์บันทึกบางไฟล์ซึ่งเป็นเจ้าของโดย xymon หรือบางอย่าง แต่คุณไม่ต้องการที่จะผ่อนคลายความปลอดภัยของ apache โดยอนุญาตให้ทำตามลิงก์ได้โดยไม่ต้องคำนึงถึงเจ้าของ . จากนั้นคุณอาจต้องการทำให้ xymon เป็นเจ้าของ symlink


1
ตกลง. ฉันรู้ว่ามันไม่เกี่ยวข้อง แต่จุดประสงค์ของพฤติกรรมนี้ใน apache คืออะไร? ฉันหมายความว่าหากผู้ใช้สามารถอ่านไฟล์ทำไมต้องอ่านจากการเข้าถึงเว็บ? ขอบคุณ
user368507

ไม่ใช่แค่ผู้ใช้ภายในเท่านั้นที่อ่านไฟล์ หาก apache สามารถอ่านได้ทุกคนก็สามารถอ่านได้ และหากช่องโหว่ของ Apache บางช่องอนุญาตให้สร้าง symlink ได้/etc/passwdดังนั้น badguy อาจเข้าถึงการอ่านไฟล์นั้นโดยไม่ต้องมีการเข้าถึงอื่น ๆ ในท้องถิ่น แต่จะถูกขัดขวางโดย symlink ที่ apache เป็นเจ้าของ
Lars Rohrbach

4

คำตอบแรกดูเหมือนจะไม่อยู่คำถามและคำตอบที่สองใช้กับ Apache เท่านั้น

สิ่งหนึ่งที่ฉันนึกถึงได้คือ linux โดยทั่วไปคือผู้ใช้ทั่วไปสามารถสร้างลิงก์ถาวรไปยังลิงก์สัญลักษณ์ได้หากผู้ใช้เป็นเจ้าของลิงก์สัญลักษณ์ ทำไมฉันถึงต้องการสร้างลิงก์ดังกล่าวฉันไม่รู้

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

อย่างน้อยบน Ubuntu ทุกคนสามารถอัปเดตการประทับเวลาของลิงก์สัญลักษณ์ได้ อย่างไรก็ตามอาจมีบางระบบที่อนุญาตเฉพาะเจ้าของเท่านั้น สิ่งที่ดีในการประทับเวลาสำหรับลิงก์สัญลักษณ์ฉันไม่แน่ใจ แต่อาจให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับจำนวนการใช้งาน

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


0

ฉันมีโปรแกรมที่ต่อท้ายไฟล์บันทึก ไฟล์บันทึกเหล่านี้สร้างขึ้นทุกเดือนโดยมีชื่อแตกต่างกัน แทนที่จะให้ซอฟต์แวร์หาชื่อไฟล์ที่ถูกต้องฉันใช้ชื่อไฟล์ "ทั่วไป" (พูด data.log) ซึ่งเป็นลิงก์สัญลักษณ์ที่ชี้ไปที่ไฟล์ปัจจุบันในเดือนนั้น นี่เป็นระบบอัตโนมัติในงาน cron

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


0

หากคุณต้องการมีลิงค์ไปยังไฟล์บนหน้าจอเปิดของคุณลิงค์สัญลักษณ์จะต้องอยู่ใน

"/ home / ชื่อผู้ใช้ / Desktop"

ไดเรกทอรี

และลิงก์สัญลักษณ์นั้นจะต้องมีความเป็นเจ้าของ root: root (0: 0) มิฉะนั้นลิงก์จะไม่ทำงาน

(Ubuntu / Debian เป็นต้น)

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