รากไม่สามารถ chmod?


12

ในแผนกของฉันเรามีไฟล์เซิร์ฟเวอร์ขนาดเล็กที่มี CentOS และ samba ฉันมีสิทธิ์ใช้งานรูทเพื่อให้สามารถทำการบำรุงรักษาเบื้องต้นได้

วันนี้ฉันกำลังสร้างโฟลเดอร์แบบอ่านอย่างเดียวดังนั้นฉันจึงไปข้างหน้าและทำ a chmod -R -w some-folder/แต่สำหรับไฟล์บางไฟล์ฉันได้รับคำตอบ:

chmod: ./somefile.pdf: การอนุญาตใหม่คือ r-xrwxr-x ไม่ใช่ r-xr-xr-x

หลังจากเพิ่ม-vฉันไม่ได้รับข้อมูลจำนวนมาก:

โหมด `./somefile.pdf 'เก็บไว้ที่ 0575 (r-xrwxr-x)

ฉันพยายามต่อไปนี้เพื่อให้แน่ใจว่า:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

ฉันไม่สามารถคิดเหตุผลที่ดีว่าทำไมรากไม่สามารถทำ chmod ได้?

เกร็ดความรู้บางอย่าง:

  • ระบบไฟล์ไม่ได้ เป็นแบบอ่านอย่างเดียว (มีเพียงบางไฟล์เท่านั้นที่ปฏิเสธที่จะแก้ไข)
  • ฉันรันคำสั่ง chmod ในฐานะ rootแต่ไม่มีผลกระทบ
  • พาร์ติชันที่ไฟล์นั้นอยู่ ext4

UPDATES : นี่คือผลลัพธ์สำหรับlsattrในไฟล์และโฟลเดอร์ที่มี:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

ไม่มีของขวัญ setuid ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf

คุณกำลัง acessing ไฟล์นี้จากระยะไกล?
Luciano Andress Martini

1
ผลลัพธ์ของlsattrไฟล์เดียวกันคืออะไรและไดเรกทอรีด้านบนคืออะไร
ไรเดอร์

คำตอบ:


17

ตามแหล่งที่มาคุณมีโหมดคาดว่าไร้เดียงสา หลังจากคิดมากขึ้นฉันคิดว่าสาเหตุคือ-wตัวเลือกซึ่งไม่ใช่สิ่งที่คุณคาดหวัง คุณควรให้g-wหรือugo-w(ตามความต้องการของคุณ)

หากไม่ให้เป้าหมายที่ชัดเจน (a, o, g, u) อาจมีการให้ผลลัพธ์ที่ไม่คาดคิดตามค่า umask ฉันคิดว่าข้อความพิเศษดังกล่าวเกิดขึ้นเนื่องจากการเปลี่ยนแปลงที่ไม่คาดคิด

แก้ไข: แหล่งข้อมูลในhttp://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

นำมาจากแคช Google ความคิดเห็นในรหัสที่ไม่มีอีกต่อไป:

/ * หากเป็นจริงให้วินิจฉัยความประหลาดใจจากการใช้ผิดวิธีที่ไร้เดียงสาเช่น "ไฟล์ chmod -r" POSIX อนุญาตการวินิจฉัยที่นี่เนื่องจากควรใช้รหัสแบบพกพา "chmod - -r ไฟล์" * /


ใช่นี่คือมัน ฉันเปลี่ยนเป็นugo-wและจะไม่บ่นอีกต่อไป ฉันจะรอสักครู่ก่อนจะยอมรับความสุภาพของผู้ตอบคำถาม
Roflo

1
และฉันยินดีต้อนรับการแก้ไขหรือคำตอบที่ดีกว่าเพราะฉันยังไม่เข้าใจว่าทำไม chmod ทำงานในลักษณะที่แปลกประหลาดนี้
Giacomo Catenazzi

5
man chmod: "การรวมกันของตัวอักษร ugoa ควบคุมการเข้าถึงไฟล์ของผู้ใช้ที่จะถูกเปลี่ยน [... ] หากไม่มีสิ่งเหล่านี้จะได้รับผลกระทบเป็นถ้า (a) ได้รับ แต่บิตที่ตั้งอยู่ใน umask จะไม่ได้รับผลกระทบ " ดังนั้นคุณสามารถทำสิ่งต่างๆเช่นไฟล์ chmod + w และให้สิทธิ์การเขียนแก่ผู้ที่จะได้รับเมื่อสร้างไฟล์ใหม่เท่านั้น พฤติกรรมเชิงลบดูเหมือนจะสับสนเล็กน้อยดังนั้นคำเตือนจึงเป็นความคิดที่ดี
ilkkachu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.