ปฏิเสธการอนุญาตสำหรับไฟล์เดียวในไดเรกทอรีในฐานะผู้ใช้รูทบนระบบไฟล์ ext3 ภายใต้ RAIDiator OS


9

ฉันมีกล่อง ReadyNAS ชื่อ "พื้นที่เก็บข้อมูล" ที่ฉันเชื่อว่าเป็นไปตาม Debian ฉันสามารถ ssh เป็นราก ฉันพยายามกำหนดค่าเว็บเซิร์ฟเวอร์ใหม่ แต่ฉันพบปัญหาการอนุญาตไฟล์ที่ฉันไม่เข้าใจ ฉันไม่สามารถทำอะไร/etc/frontview/apache/apache.pemได้แม้จะหยั่งราก! ดูเหมือนว่าจะไม่มีสิทธิ์พิเศษใด ๆ เมื่อเทียบกับไฟล์อื่น ๆ ในไดเรกทอรีเดียวกันและฉันสามารถทำงานกับไฟล์เหล่านั้นได้

storage:~# whoami 
root
storage:~# cd /etc/frontview/apache/   
storage:/etc/frontview/apache# ls -lah apache.pem*         
-rw-------    1 admin    admin        4.0k Jul 10  2013 apache.pem
-rw-------    1 admin    admin        4.0k Jun  9 05:57 apache.pem.2017-02-04
-rw-------    1 admin    admin        1.5k Jun  9 05:57 apache.pem.orig
storage:/etc/frontview/apache# touch apache.pem            
touch: creating `apache.pem': Permission denied
storage:/etc/frontview/apache# touch apache.pem.2017-02-04 
storage:/etc/frontview/apache# rm -f apache.pem
rm: cannot unlink `apache.pem': Operation not permitted

มีอะไรพิเศษเกี่ยวกับไฟล์นี้ที่ไม่สามารถสัมผัสได้? ฉันไม่สามารถลบได้ ฉันไม่สามารถเปลี่ยนการอนุญาตบน ฉันไม่สามารถเปลี่ยนเจ้าของได้

ไดเรกทอรีดูเหมือนว่าจะดี มีพื้นที่เหลืออยู่ไม่ได้ติดตั้งแบบอ่านอย่างเดียว อันที่จริงฉันสามารถแก้ไขไฟล์อื่น ๆ ในไดเรกทอรีเดียวกัน

# ls -ld /etc/frontview/apache
drwxr-xr-x    8 admin    admin        4096 Jun  9 05:44 /etc/frontview/apache
# df /etc/frontview/apache
Filesystem           1k-blocks      Used     Available Use% Mounted on
/dev/hdc1            2015824        504944   1510880   26% /

โปรดแสดงการส่งออกของและls -ld /etc/frontview/apache df /etc/frontview/apacheบางทีโฟลเดอร์อยู่ในพื้นที่ดิสก์ที่เมาท์roหรือไม่
Ned64

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

@RunCMD ฉันเพิ่มข้อมูลเฉพาะเพิ่มเติมให้กับชื่อและแท็ก ระบบไฟล์ถูกระบุว่าเป็น ext3 ดังนั้น ext3 จึงดูเหมือนว่าจะสนับสนุนไม่เปลี่ยนรูปแบบ # mount::/dev/hdc1 on / type ext3 (rw,noatime)
Stephen Ostermiller

1
Solaris ไม่รองรับ ext3 หรือ ARM cpu ของดังนั้นอาจไม่ได้ขึ้นอยู่กับ Solaris
alanc

1
ฉันลบ Solaris ออกจากคำถาม ในการอ่านเพิ่มเติมอาจเป็นไปตาม Debian Etch
สตีเฟ่น Ostermiller

คำตอบ:


9

ฉันเพิ่งพบปัญหา มีการตั้งค่าแอตทริบิวต์ "ไม่เปลี่ยนรูป" ในไฟล์นั้น lsไม่แสดง คุณต้องการคำสั่งอื่นเพื่อดู:

# lsattr apache.pem*
----i--------- apache.pem
-------------- apache.pem.2017-02-04
-------------- apache.pem.orig

เมื่อฉันลบบิตที่ไม่เปลี่ยนรูปฉันสามารถแก้ไขไฟล์นั้นได้:

# chattr -i apache.pem
# touch apache.pem

1
ฉันคลิกที่คำถามนี้ใน "คำถามเครือข่ายยอดนิยม" เพื่อบอกให้คุณตรวจสอบคุณสมบัติเพิ่มเติม แต่ฉันเดาว่าคุณทำไปแล้ว (IDK ทำไม GNU lsไม่ได้มีตัวเลือกในการแอตทริบิวต์รายการฉันลืม แต่แม้กระทั่งเรียกระบบสำหรับการสอบถามพวกเขาไม่ได้เป็นแบบพกพาเพื่อให้มันเป็นเพียงแค่อาจจะง่ายที่จะใช้พวกเขาในยูทิลิตี้ที่แยกต่างหาก..)
ปีเตอร์ Cordes

@PeterCordes ฉันเห็นด้วย ฉันแน่ใจว่าฉันตั้งค่าบิตนี้หลังจาก Googling บางอย่างเช่น "หยุดอัปเกรดจากไฟล์เขียนทับ" แต่นั่นก็เป็นเวลาหลายปีที่ผ่านมาและฉันก็ลืมทำเช่นนั้นอย่างชัดเจน มันจะดีถ้าlsพบว่าบิตนั้นหรือถ้าคำสั่งอื่น ๆ ที่ฉันใช้มีข้อผิดพลาดที่เป็นประโยชน์มากขึ้น (และเฉพาะเจาะจง) เกี่ยวกับสาเหตุที่สิทธิ์ถูกปฏิเสธ
สตีเฟ่น Ostermiller

ทั้งหมดtouchรู้ว่าเป็นที่ระบบเรียกว่าพยายาม ( open("apache.pem", O_WRONLY|O_CREAT|..., 0666)) EACCESSล้มเหลวด้วย (ใช้strace -efile touch apache.pemเพื่อดูการเรียกระบบที่เกี่ยวข้องกับไฟล์) ในฐานะที่เป็นหน้าคนสำหรับการโทรระบบที่บอกว่ามีเหตุผลที่เป็นไปได้มากสำหรับ eAccess และมากของพวกเขาเกี่ยวข้องกับไดเรกทอรีผู้ปกครองมากกว่าไฟล์ตัวเอง การเขียนโค้ดอย่างถูกต้องอนุมานว่าทำไมระบบโทรกลับข้อผิดพลาดมันก็จะยากมากเนื่องจากระบบไฟล์ที่แตกต่างกันและระบบปฏิบัติการที่แตกต่างกัน ...
ปีเตอร์ Cordes

อย่างไรก็ตามข้อตกลงสากลคือเมื่อบางสิ่งล้มเหลวคุณค้นหาสตริงข้อผิดพลาดสำหรับรหัสข้อผิดพลาด ( errno) และพิมพ์ (การใช้perrorฟังก์ชันไลบรารีมาตรฐาน C หรือเทียบเท่า) นี่เป็นหนึ่งในกรณีที่ไม่ค่อยเกิดขึ้นซึ่งไม่เพียงพอสำหรับผู้ใช้ในการค้นหาปัญหาอย่างรวดเร็ว แต่ส่วนใหญ่แล้วก็ใช้งานได้ดีมาก (โดยเฉพาะอย่างยิ่งเมื่อรวมกับstraceในกรณีที่มีข้อสงสัยเกี่ยวกับการดำเนินการใดที่ทำให้เกิดข้อผิดพลาด) มันไม่สมบูรณ์ แต่อาจแย่กว่านั้นมาก (เทียบกับ MS Windows ที่ดีที่สุดที่คุณได้รับรหัสข้อผิดพลาดไปยัง google)
Peter Cordes

เป็นเพียงการเล่นรอบกับchattr +iและสังเกตเห็นว่าrm foo(ไม่-f) rm: remove write-protected regular file ‘foo’แจ้ง: faccessat(AT_FDCWD, "/var/tmp/foo", W_OK) = -1 EACCES (Permission denied)เพราะ POSIX ต้องการrmให้พรอมต์โดยค่าเริ่มต้นก่อนที่จะลบไฟล์ที่ป้องกันการเขียนและนั่นคือเหตุผลที่มันตรวจสอบในสถานที่แรก rm -fดังนั้นคุณจะได้รับเบาะแสใหญ่เร็วขึ้นถ้าคุณไม่ได้ใช้ : / access(3)ขอให้เคอร์เนลตรวจสอบการอนุญาตราวกับว่ามันกำลังเปิดจริงๆสำหรับการเขียนดังนั้นมันจึงเลือก ACLs และคุณสมบัติ
Peter Cordes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.