คำถามติดแท็ก readonly

3
ทำไม rm สามารถลบไฟล์แบบอ่านอย่างเดียวได้?
หากฉันสร้างไฟล์แล้วเปลี่ยนการอนุญาตเป็น444(อ่านอย่างเดียว) จะrmสามารถลบไฟล์ได้อย่างไร ถ้าฉันทำสิ่งนี้: echo test > test.txt chmod 444 test.txt rm test.txt ... rmจะถามว่าฉันต้องการลบไฟล์ที่ป้องกันการเขียนหรือtest.txtไม่ ฉันคาดว่าrmจะไม่สามารถลบไฟล์ดังกล่าวและฉันจะต้องทำchmod +w test.txtก่อน ถ้าฉันทำrm -f test.txtแล้วrmจะลบไฟล์โดยไม่ต้องถามแม้ว่าจะเป็นแบบอ่านอย่างเดียว ทุกคนสามารถอธิบายได้หรือไม่ ฉันใช้ Ubuntu 12.04 / bash


3
เหตุใดการเมานท์จึงไม่เคารพตัวเลือกแบบอ่านอย่างเดียวสำหรับการเชื่อมการเชื่อมโยง?
บนระบบ Arch Linux ของฉัน (Linux Kernel 3.14.2) การเชื่อมต่อผูกไม่เคารพตัวเลือกอ่านอย่างเดียว # mkdir test # mount --bind -o ro test/ /mnt # touch /mnt/foo /mnt/fooสร้างไฟล์ รายการที่เกี่ยวข้องใน/proc/mountsคือ /dev/sda2 /mnt ext4 rw,noatime,data=ordered 0 0 ตัวเลือกการติดตั้งไม่ตรงกับตัวเลือกที่ร้องขอของฉัน แต่ทำตรงทั้งพฤติกรรมการอ่าน / เขียนของผูกติดและตัวเลือกที่ใช้ในการติดเดิม/dev/sda2บน/ /dev/sda2 / ext4 rw,noatime,data=ordered 0 0 อย่างไรก็ตามถ้าฉันเมานต์ใหม่ก็จะเคารพตัวเลือกการอ่านอย่างเดียว # mount --bind -o remount,ro test/ /mnt # touch /mnt/bar …

3
ฉันจะทำให้ไฟล์ไม่สามารถแก้ไขได้อย่างไร
ในขณะที่เข้าสู่ระบบฉันสามารถทำสิ่งต่อไปนี้: mkdir foo touch foo/bar chmod 400 foo/bar chmod 500 foo จากนั้นฉันสามารถเปิดเป็นกลุ่ม (ไม่เป็นroot) แก้ไขbarบังคับให้เขียนด้วยw!และไฟล์จะถูกแก้ไข ฉันจะทำให้ระบบปฏิบัติการไม่อนุญาตให้แก้ไขไฟล์ได้อย่างไร? อัพเดท 02 มี.ค. 2560 chmod 500 foo เป็นปลาเฮอริ่งแดง: สิทธิ์ในการเขียนในไดเรกทอรีไม่มีส่วนเกี่ยวข้องกับความสามารถในการปรับเปลี่ยนเนื้อหาของไฟล์ - เฉพาะความสามารถในการสร้างและลบไฟล์ chmod 400 foo/barในความเป็นจริงจะป้องกันเนื้อหาของไฟล์จากการเปลี่ยนแปลง แต่ไม่ได้ป้องกันการอนุญาตของไฟล์จากการเปลี่ยนแปลง - เจ้าของไฟล์สามารถเปลี่ยนแปลงการอนุญาตของไฟล์ได้ตลอดเวลา (สมมติว่าพวกเขาสามารถเข้าถึงไฟล์ได้เช่นเรียกใช้งานการอนุญาตในไดเรกทอรีบรรพบุรุษทั้งหมด) ในความเป็นจริง strace (1) แสดงให้เห็นว่านี่คือสิ่งที่กลุ่ม (7.4.576 Debian Jessie) กำลังทำอยู่ - vim เรียก chmod (2) เพื่อเพิ่มสิทธิ์การเขียนสำหรับเจ้าของไฟล์ชั่วคราวแก้ไขไฟล์แล้วเรียก chmod ( 2) …

1
อ่านระบบไฟล์รูทเท่านั้น
เดเบียนของฉันไปอ่านในระบบไฟล์รูทเท่านั้น ฉันไม่รู้ว่าจะเกิดอะไรขึ้น ตัวอย่างเช่นเมื่อฉันอยู่ใน/rootโฟลเดอร์และพิมพ์คำสั่งnanoและหลังจากนั้นกดTabเพื่อแสดงรายการไฟล์ที่เป็นไปได้ในโฟลเดอร์นั้นฉันได้รับข้อความ: root@debian:~# nano -bash: cannot create temp file for here-document: Read-only file system เหมือนกันสำหรับcdคำสั่งเมื่อฉันพิมพ์cd /homeและกดTabเพื่อแสดงรายการเส้นทางฉันมีสิ่งนี้: root@debian:~# cd /home -bash: cannot create temp file for here-document: Read-only file system ฉันยังมีปัญหากับซอฟต์แวร์เช่นaptและอื่น ๆ ไม่สามารถรับการอัพเดทที่ทำได้ ฉันมีข้อผิดพลาดมากมายเช่นนี้: Err http ://ftp.de.debian.org wheezy-updates/main Sources 406 Not Acceptable W: Not using locking for read only lock …

3
Rm ไม่สามารถลบไฟล์ได้
chmod 777 -R /mnt rm -rf /mnt/* rm: cannot remove 'omitted': Read-only file system rm: cannot remove 'omitted': Read-only file system โปรดแสดงให้ฉันดูว่าฉันจะทำสิ่งนี้ได้อย่างไร
22 rm  readonly 

4
เมานต์ระบบไฟล์เป็นแบบอ่านอย่างเดียวและเปลี่ยนเส้นทางการเขียนไปที่ RAM หรือไม่
เป็นไปได้หรือไม่ที่จะเมานต์ไฟล์ลูปแบ็คเป็นแบบอ่านอย่างเดียวและเปลี่ยนเส้นทางการเขียนทั้งหมดไปยัง RAM?

2
เมานต์ดิสก์ที่ไม่ว่างเป็นโหมดอ่านอย่างเดียว
ฉันต้องการบังคับให้พาร์ติชันดิสก์อ่านโหมดอย่างเดียวและเก็บไว้เป็นแบบอ่านอย่างเดียวนานกว่า 30 นาที สิ่งที่ฉันได้ลอง: mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem) ปัญหา : สิ่งนี้ทำให้อุปกรณ์เกิดข้อผิดพลาดเนื่องจากบางกระบวนการใช้พาร์ติชัน ฉันไม่ต้องการฆ่ากระบวนการโดยใช้ดิสก์ ฉันต้องการจำลองดิสก์ในทันทีที่อ่านอย่างเดียวเมื่อกระบวนการยังคงใช้งานอยู่ ใช้คีย์ sysrq magic ดังด้านล่าง echo u > /proc/sysrq-trigger ปัญหา : สิ่งนี้จะทำให้พาร์ติชันดิสก์ทั้งหมดเป็นแบบอ่านอย่างเดียว (แม้ว่าอุปกรณ์จะไม่ว่าง) แต่หลังจาก 20-30 นาทีเครื่องจะรีบูตตัวเอง เครื่องบางเครื่องกำลังรีบูตทันทีเมื่อคำสั่งนี้ถูกดำเนินการ ไม่แน่ใจว่าเกิดจากการรีบูตครั้งนี้หรือไม่ ฉันไม่ต้องการให้เครื่องรีบูตตัวเองและต้องการให้ดิสก์อยู่ในโหมดอ่านอย่างเดียวเป็นเวลา 30+ นาที คำถาม : มีวิธีใดที่ดีกว่าที่ฉันสามารถบังคับให้พาร์ติชันดิสก์เดียวอ่านอย่างเดียวและอยู่ในสถานะนั้นเป็นเวลาครึ่งชั่วโมงและนำมันกลับไปที่โหมดอ่าน - เขียนโดยไม่ทำให้กระบวนการรีบูตใด ๆ ?

4
Linux, วิธีเปลี่ยนสถานะ HDD จาก ReadOnly หลังจากเกิดข้อผิดพลาดชั่วคราว?
ในเวลานี้ไม่มีคำตอบสำหรับปัญหานี้ โดยปกติหลังจากเกิดปัญหากับการอ่านหรือการเขียนเพื่อบล็อกอุปกรณ์เคอร์เนลตัดสินใจที่จะสลับการตั้งค่าสถานะสำหรับอุปกรณ์ทั้งหมดเป็นการอ่านอย่างเดียว หลังจากนี้การเขียนใด ๆ ไปยังพาร์ติชัน / ระบบไฟล์ใด ๆ ที่อยู่บนอุปกรณ์นี้ทำให้เกิดการสลับเป็นแบบอ่านอย่างเดียวพร้อมกับสถานะอุปกรณ์เนื่องจากการเขียนใด ๆ เป็นไปไม่ได้ ตัวอย่างจาก dmesg นี่คือการจำลองสำหรับ guest linux บน windows8 โดยใช้ VirtualBox เมื่อ defrag ใช้อิมเมจอุปกรณ์แขก: [11903.002030] ata3.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x6 frozen [11903.003179] ata3.00: failed command: READ FPDMA QUEUED [11903.003364] ata3.00: cmd 60/08:00:a8:77:57/00:00:00:00:00/40 tag 0 ncq 4096 …
17 linux  readonly  mount 

2
การใช้ระบบไฟล์รูทแบบอ่านอย่างเดียวเป็นความคิดที่ดีสำหรับการตั้งค่าแบบฝังหรือไม่
ฉันได้รับมอบหมายให้ทำงานลีนุกซ์เป็นระบบปฏิบัติการบนอุปกรณ์ฝังตัว เป้าหมายมีโปรเซสเซอร์ x86 และมีอุปกรณ์ CompactFlash 8 GB สำหรับจัดเก็บ ฉันมีการจัดการเพื่อใช้ buildroot เพื่อสร้างภาพเคอร์เนลและเครื่องมือการรวบรวมข้าม ฉันแบ่งพาร์ติชันอุปกรณ์ CF ออกเป็นพาร์ติชัน FAT ขนาดเล็กซึ่งมีเคอร์เนลอิมเมจอยู่รวมถึงsyslinuxการกำหนดค่าการบู๊ตและext3ระบบไฟล์ที่ฉันทำการแตกระบบไฟล์รูทที่สร้างโดย buildroot บูตระบบสำเร็จโดยใช้syslinuxโดยการตั้งค่าไดเรกทอรีรากเป็นพาร์ติชัน CF ext3 ซึ่งเป็นที่ตั้งของระบบไฟล์ buildroot ของฉัน คำถามของฉันมีศูนย์กลางอยู่ที่ความต้องการความทนทานในการเผชิญกับการสูญเสียพลังงานในทันที (และบ่อยครั้ง) เนื่องจากเป็นสิ่งสำคัญสำหรับอุปกรณ์ที่จะบู๊ตได้สำเร็จหลังจากไฟดับ ฉันได้อ่านแล้วว่าการติดตั้งระบบไฟล์รูตเนื่องจากการอ่านอย่างเดียวเป็นวิธีการตรวจสอบความถูกต้องของข้อมูล นี่เป็นวิธีที่เหมาะสมหรือไม่สำหรับฉันที่จะดำเนินการต่อ ฉันได้อ่านเกี่ยวกับความเป็นไปได้ของการโหลดระบบไฟล์รูทลงใน RAM เพื่อให้ได้สิ่งเดียวกัน แต่ยังไม่ทราบว่าต้องทำอย่างไร มีวิธีที่ต้องการในการบรรลุเป้าหมายนี้หรือไม่และถ้าเป็นเช่นนั้นวิธีที่ดีที่สุดสำหรับฉันในการดำเนินการคืออะไร?

4
ไม่สามารถนับใหม่ / ย้อนกลับเป็นอ่านอย่างเดียวหลังจากอัปเกรดแพ็คเกจ
ฉันกำลังใช้ Debian Stretch read-onlyพาร์ทิชันรากของฉันคือการติดตั้ง เฉพาะเมื่อฉันติดตั้งหรืออัปเกรดแพ็คเกจจะ/ติดตั้งใหม่read-write(โดยใช้ apt hook) แล้วจึงติดตั้งใหม่อีกroครั้ง บางครั้งหลังจากอัปเกรดแพ็คเกจฉันไม่สามารถนับใหม่/เป็นอ่านอย่างเดียว: mount -o remount,ro / mount: / is busy สำหรับ Debian เวอร์ชั่นเก่า (Wheezy) ฉันสามารถแสดงรายการไฟล์ที่ไม่ได้ลิงก์กับlsof: lsof +L1 หรือโดยเฉพาะอย่างยิ่งไฟล์ที่ป้องกันไม่ให้/ถูกนับใหม่กลับไปเป็น ro: { lsof +L1 ; lsof|sed -n '/SYSV/d; /DEL|(path /p;' ; } | grep -Ev '/(dev|home|tmp|var)' อย่างไรก็ตามใน Debian Stretch lsof +L1จะไม่มีรายการไฟล์ใด ๆ ฉันไม่เห็นการเปลี่ยนแปลงใด ๆ+|-Lในman lsofที่จะอธิบายว่าทำไมมันหยุดทำงาน …
13 debian  files  apt  readonly  lsof 

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

3
bash: ปัญหาบางอย่างเมื่อใช้การอ่าน <<<“ $ VARIABLE” บนพาร์ติชันรูทแบบอ่านอย่างเดียว การแก้ไขปัญหาใด ๆ ที่รู้จักกัน?
โดยบังเอิญฉันต้องใช้สคริปต์ ATA-ID-to-device-name (อยู่ที่นี่: /server/244944/linux-ata-errors-translating-to-a-device-name/ 426561 # 426561 ) ในพาร์ติชันแบบอ่านอย่างเดียว /ในกรณีที่คุณอยากรู้อยากเห็นมันเป็นคอนโซลการกู้คืนของ Ubuntu ซึ่งจะช่วยให้คุณเข้าถึง/พาร์ติชันของคุณแต่จะติดตั้งเป็นอ่านอย่างเดียวโดยค่าเริ่มต้น ฉันดีใจที่เป็นเช่นนั้นเพราะไม่เช่นนั้นฉันอาจไม่เคยพบว่าสคริปต์ของฉันทำงานผิดปกติในระบบ R / O เนื่องจากบรรทัดที่เฉพาะเจาะจงอันนี้: IFS=: read HostMain HostMid HostSub &lt;&lt;&lt; "$HostFull" วิธีนี้ใช้ไม่ได้หากไม่มีสิทธิ์ในการเขียน ฉันไม่คิดเลยว่ามันจะล้มเหลว แต่เห็นได้ชัดว่า&lt;&lt;&lt;ผู้ประกอบการไม่จำเป็นต้องเขียนไฟล์ชั่วคราวบางส่วนไปยังที่อื่น แต่มีวิธีใดที่จะหลีกเลี่ยงการสร้างไฟล์ชั่วคราวหรือมีวิธีใดที่จะระบุตำแหน่งของไฟล์ที่ถูกเขียนไป? ในคอนโซลการกู้คืนของอูบุนตูมี - ผิดปกติพอ --- เขียนสิทธิ์ใน/runไดเรกทอรีดังนั้นถ้าฉันสามารถ "บอก" readเพื่อเขียนไฟล์ชั่วคราวไปที่อื่นที่ไม่ใช่ปกติ

1
ทำให้อ่านได้อย่างเดียว / etc เขียนได้
ฉันกำลังจัดการกับอุปกรณ์ฝังตัวที่ใช้ Linux ผู้ผลิตอุปกรณ์นี้ได้ทำการตั้งค่าเพื่อให้โหลดระบบไฟล์รูทเป็นแบบอ่านอย่างเดียว จาก / etc / mtab: rootfs / rootfs rw 0 0 /dev/root / squashfs ro,relatime 0 0 หมายความว่าฉันไม่สามารถแก้ไขไฟล์ภายใน / etc เช่นการเพิ่มผู้ใช้ใหม่ ฉันได้ลองติดตั้งไดเรกทอรีรากใหม่แล้ว: mount -o remount,rw -t squashfs /dev/root / แต่ฉันเพิ่งได้รับข้อผิดพลาด mount: cannot remount block device /dev/root read-write, is write-protected ฉันค้นหาข้อผิดพลาดนี้และมีคนพูดว่าใช้ blockdev ระบบไม่ได้ติดตั้ง blockdev ดังนั้นฉันจึงรวบรวมและคัดลอกมันข้าม จากนั้นฉันก็วิ่ง blockdev --setrw …

3
เหตุใดไฟล์ที่มีสิทธิ์ 400 รายการที่รูทเครื่องสามารถอ่านได้ แต่อ่านอย่างเดียวโดยผู้ใช้
หากฉันสร้างไฟล์ในฐานะผู้ใช้ที่ไม่มีสิทธิ์และเปลี่ยนโหมดการอนุญาต400เป็นผู้ใช้นั้นจะเห็นว่าเป็นแบบอ่านอย่างเดียวอย่างถูกต้อง: $ touch somefile $ chmod 400 somefile $ [ -w somefile ] &amp;&amp; echo rw || echo ro ro ทั้งหมดเป็นอย่างดี. แต่แล้วรากก็มาพร้อม: # [ -w somefile ] &amp;&amp; echo rw || echo ro rw ห่า? แน่นอนว่ารูทสามารถเขียนไปยังไฟล์แบบอ่านอย่างเดียวได้ แต่ไม่ควรทำให้เป็นนิสัย: แนวปฏิบัติที่ดีที่สุดมีแนวโน้มที่จะกำหนดว่าฉันควรจะสามารถทดสอบบิตการอนุญาตการเขียนได้และถ้าไม่ใช่ก็เป็นไปได้ ทางนั้นด้วยเหตุผล ผมคิดว่าผมต้องการที่จะเข้าใจทั้งสองเหตุผลนี้เกิดขึ้นและวิธีการที่ฉันจะได้รับเท็จรหัสการส่งคืนเมื่อการทดสอบไฟล์ที่ไม่ได้มีการเขียนชุดบิตหรือไม่?

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