ฉันได้ถามคำถามนี้เมื่อวานนี้ แต่ถูกทำเครื่องหมายว่าซ้ำและถูกปิดเนื่องจากบริบท เนื่องจากคิดว่าเป็นคำถาม X/Y ในขณะที่ฉันสนใจแค่เรื่องทั่วไปของ "สิ่งนี้เป็นไปได้อย่างไร" ในขณะที่ฉัน การค้นหาข้อมูลส่วนตัว (บนเว็บไซต์นี้และบนอินเทอร์เน็ต) ไม่พบสิ่งใดเลย และฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการตรวจจับและจัดการกับปัญหาที่แปลกประหลาดประเภทนั้น
เมื่อวานฉันพบไฟล์บางไฟล์ในเซิร์ฟเวอร์ Debian ของเราซึ่งผู้ใช้ทั่วไปมองเห็นได้โดยไม่มีบริบท ราก
ทั้งๆที่มีเจ้าของแล้ว ราก
.
มันลองใช้คำสั่งมากมายกับไฟล์เหล่านั้น และอะไรก็ตามที่ฉันพยายาม ผู้ใช้
ถือว่าไฟล์เป็นไฟล์ปกติ แต่ ราก
ตอบสนองเหมือนไฟล์เหล่านั้นไม่มีอยู่จริง (แต่ไม่สามารถเขียนทับได้) นั่นคือ ไม่ ไฟล์จุด.
นี่คือผลลัพธ์ของคำสั่งเหล่านี้:
เนื่องจาก ผู้ใช้
user@debian:/tmp$group
ผู้ใช้ cdrom ฟล็อปปี้ดิสก์ audio dip video plugdev netdev
user@debian:/tmp$pwd
/tmp
user@debian:/tmp$ ls -lai
รวม 320
1048577 drwxrwxrwt 11 รูท 4096 7 ก.ย. 13:04 น.
2 drwxr-xr-x 23 รูท 4096 6 ก.ย. 17:34 ..
5901230 -rw-r----- 1 รูท 0 7 ก.ย. 12:59 ที่มองไม่เห็น_ไฟล์
<other_files>
user@debian:/tmp$ แตะที่มองไม่เห็น_file
สัมผัส: ไม่สามารถสัมผัส 'invisible_file': ปฏิเสธการอนุญาต
user@debian:/tmp$ rm มองไม่เห็น_file
rm: ลบไฟล์ว่างปกติที่ป้องกันการเขียน 'invisible_file' หรือไม่ ย
rm: ไม่สามารถลบ 'invisible_file': ไม่อนุญาตให้ดำเนินการ
user@debian:/tmp$ stat ที่มองไม่เห็น_file
ไฟล์:invisible_file
ขนาด: 0 บล็อก: 0 บล็อก IO: 4096 ไฟล์เปล่าปกติ
อุปกรณ์: 801h/2049d ไอโหนด: 5901230 ลิงค์: 1
การเข้าถึง: (0640/-rw-r-----) Uid: ( 0/ root) Gid: ( 0/ root)
เข้าถึง: 2021-09-07 12:59:54.859124530 +0200
แก้ไข: 2021-09-07 12:59:54.859124530 +0200
เปลี่ยน: 2021-09-07 13:04:03.063441285 +0200
การเกิด: -
user@debian:/tmp$ ติดตั้ง /dev/null modified_file
ติดตั้ง: ไม่สามารถลบ 'invisible_file': ไม่อนุญาตให้ดำเนินการ
user@debian:/tmp$ cat มองไม่เห็น_file
แมว: มองไม่เห็น_ไฟล์: ปฏิเสธการอนุญาต
user@debian:/tmp$ ค้นหา /tmp/ -iname "*invisible_file*"
/tmp/invisible_file
user@debian:/tmp$
เนื่องจาก ราก
root@debian:/tmp# กลุ่ม
ราก
root@debian:/tmp# pwd
/tmp
root@debian:/tmp# ls -lai
รวม 308
1048577 drwxrwxrwt 11 รูท 4096 7 ก.ย. 13:04 น.
2 drwxr-xr-x 23 รูท 4096 6 ก.ย. 17:34 ..
<other_files>
root@debian:/tmp# แตะที่มองไม่เห็น_ไฟล์
root@debian:/tmp# ls -lai
รวม 308
1048577 drwxrwxrwt 11 รูท 4096 7 ก.ย. 13:04 น.
2 drwxr-xr-x 23 รูท 4096 6 ก.ย. 17:34 ..
<other_files>
root@debian:/tmp# rm ที่มองไม่เห็น_ไฟล์
rm: ไม่สามารถลบ 'invisible_file': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
root@debian:/tmp# สถานะที่มองไม่เห็น_file
stat: ไม่สามารถ stat 'invisible_file': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
root@debian:/tmp# ติดตั้ง /dev/null modified_file
ติดตั้ง: ไม่สามารถสร้างไฟล์ปกติ 'invisible_file': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
root@debian:/tmp# cat มองไม่เห็น_file
แมว: มองไม่เห็น_ไฟล์: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
root@debian:/tmp# ค้นหา /tmp/ -iname "*invisible_file*"
รูท@เดเบียน:/tmp#
สังเกตว่าแม้ใน ล
คำสั่งจำนวนของบล็อกที่ใช้ทั้งหมดจะแตกต่างกัน ความแตกต่างที่สอดคล้องกับ ไฟล์ที่มองไม่เห็น
ขนาด.
วิธีเดียวที่ฉันสามารถเขียนทับไฟล์ได้คือการสร้างไฟล์ด้วยชื่ออื่น (และแม้กระทั่งสิทธิ์อื่นๆ) และเป็น ราก
, เอ็มวี
มันจบแล้ว ไฟล์ที่มองไม่เห็น
, แต่ ไฟล์ที่มองไม่เห็น
ยังคงถูกซ่อนไว้ ราก
.
คำถามของฉันคือ: ในโลกของลินุกซ์ เราจะสร้างรูทโดยไม่สนใจไฟล์ปกติบางไฟล์ได้อย่างไร ราวกับว่ามันไม่ได้อยู่ที่นั่นตั้งแต่แรก เช่นในกรณีของฉัน และฉันจะตรวจสอบเรื่องนั้นได้อย่างไร ทำให้ไฟล์เหล่านั้นมองเห็นได้อีกครั้ง และแน่ใจได้อย่างไรว่าไม่มีไฟล์อื่นที่มองไม่เห็นให้รูท
แก้ไข :
นี่ ภูเขา
ผลลัพธ์ มันไม่ได้แสดงอะไรพิเศษสำหรับฉัน:
root@debian:~# เมานต์
sysfs บน /sys พิมพ์ sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc ประเภท proc (rw,nosuid,nodev,noexec,relatime)
udev บน /dev ประเภท devtmpfs (rw,nosuid,relatime,size=4078644k,nr_inodes=1019661,mode=755)
devpts บน /dev/pts ประเภท devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs เปิด / เรียกใช้ประเภท tmpfs (rw,nosuid,noexec,relatime,size=817960k,mode=755)
/dev/sda1 เปิด / พิมพ์ ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs บน /sys/เคอร์เนล/ประเภทความปลอดภัย securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs บน /dev/shm พิมพ์ tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock ประเภท tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs บน /sys/fs/cgroup ประเภท tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup บน /sys/fs/cgroup/systemd ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore บน /sys/fs/pstore ประเภท pstore (rw,nosuid,nodev,noexec,relatime)
cgroup บน /sys/fs/cgroup/devices ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup บน /sys/fs/cgroup/net_cls,net_prio ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup บน /sys/fs/cgroup/pids ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup บน /sys/fs/cgroup/cpu, cpuacct ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup บน /sys/fs/cgroup/ประเภทหน่วยความจำ cgroup (rw,nosuid,nodev,noexec,relatime,หน่วยความจำ)
cgroup บน /sys/fs/cgroup/cpuset ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup บน /sys/fs/cgroup/perf_event ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup บน /sys/fs/cgroup/blkio ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup บน /sys/fs/cgroup/freezer ประเภท cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
systemd-1 บน /proc/sys/fs/binfmt_misc ประเภท autofs (rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9463)
Hugetlbfs บน /dev/hugepages พิมพ์ hugetlbfs (rw,relatime)
debugfs บน /sys/kernel/debug ประเภท debugfs (rw,relatime)
mqueue บน /dev/mqueue ประเภท mqueue (rw,relatime)
tmpfs บน /run/user/1000 พิมพ์ tmpfs (rw,nosuid,nodev,relatime,size=817956k,mode=700,uid=1000,gid=1000)
binfmt_misc บน /proc/sys/fs/binfmt_misc ประเภท binfmt_misc (rw,relatime)
ผลลัพธ์ของ fsck -nf
มีดังต่อไปนี้:
root@debian:~# fsck -nf
fsck จาก util-linux 2.29.2
e2fsck 1.43.4 (31-ม.ค.-2560)
คำเตือน! /dev/sda1 ติดตั้งแล้ว
คำเตือน: ข้ามการกู้คืนเจอร์นัลเนื่องจากทำการตรวจสอบระบบไฟล์แบบอ่านอย่างเดียว
ผ่าน 1: ตรวจสอบไอโหนด บล็อก และขนาด
ไอโหนดที่ถูกลบ 524799 มี dtime เป็นศูนย์ แก้ไข? ไม่
พบ Inodes ที่เป็นส่วนหนึ่งของรายการลิงก์ orphan ที่เสียหาย แก้ไข? ไม่
ไอโหนด 1441794 เป็นส่วนหนึ่งของรายการไอโหนดที่ถูกละเลย ไม่สนใจ
ผ่าน 2: การตรวจสอบโครงสร้างไดเร็กทอรี
ผ่าน 3: ตรวจสอบการเชื่อมต่อไดเร็กทอรี
ผ่าน 4: ตรวจสอบจำนวนอ้างอิง
ผ่าน 5: ตรวจสอบข้อมูลสรุปของกลุ่ม
บล็อกความแตกต่างของบิตแมป: -(11108512--11108538)
แก้ไข? ไม่
บล็อคฟรีนับผิด (16886612, count=16857986)
แก้ไข? ไม่
ความแตกต่างของบิตแมป Inode: -524799 -1441794
แก้ไข? ไม่
ไอโหนดฟรีนับผิด (5867140, นับ=5866555)
แก้ไข? ไม่
/dev/sda1: ********** คำเตือน: ระบบไฟล์ยังมีข้อผิดพลาด **********
/dev/sda1: 162172/6029312 ไฟล์ (0.3% ไม่ติดกัน), 7230636/24117248 บล็อก
ราก@บรรจบกัน:~#
ในที่สุดฉันก็วิ่งได้เต็มที่ ฟค
บนระบบไฟล์ มันแก้ไขข้อผิดพลาดที่แสดงด้านบน แต่ไม่มีประโยชน์เนื่องจากไฟล์ยังคงมองไม่เห็น