Score:1

ผู้ใช้ทั่วไปสามารถมองเห็นไฟล์ได้ แต่ไม่มีอยู่จริงในรูทได้อย่างไร

ธง de

ฉันได้ถามคำถามนี้เมื่อวานนี้ แต่ถูกทำเครื่องหมายว่าซ้ำและถูกปิดเนื่องจากบริบท เนื่องจากคิดว่าเป็นคำถาม 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 บล็อก
ราก@บรรจบกัน:~#

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

ng flag
`mount` พูดอะไรเป็นพิเศษเกี่ยวกับ `/tmp` หรือไม่ กล่าวอีกนัยหนึ่งคุณสามารถอธิบายรายละเอียดเกี่ยวกับโครงสร้างระบบไฟล์ของระบบได้หรือไม่? ฉันก็อยากรู้เหมือนกันว่าจะเกิดอะไรขึ้นถ้าคุณ `fsck` มัน; บางทีมันอาจจะเสียหาย?
mbernard avatar
de flag
@Halfgaar ผลลัพธ์ของ `mount` จะเหมือนกันสำหรับ `root` หรือ `user` และดูเหมือนจะไม่แสดงอะไรเกี่ยวกับ `/tmp` ฉันจะอัปเดตโพสต์ของฉันด้วยผลลัพธ์ดังกล่าว
mbernard avatar
de flag
@Halfgaar ฉันอัปเดตคำตอบด้วยสิ่งที่เกิดขึ้นกับ `fsck` โชคไม่ดีที่มันไม่ได้ทำอะไรเลย
ng flag
คุณเรียกใช้ fsck อีกครั้งหรือไม่ ก่อนหน้านี้ฉันพบปัญหาที่ต้องเรียกใช้ซ้ำจนกว่าข้อผิดพลาดทั้งหมดจะหายไป
mbernard avatar
de flag
@Halfgaar ขออภัย ฉันไม่คุ้นเคยกับเว็บไซต์นั้นและไม่เห็นฉันได้รับคำตอบจากคุณ ฉันวิ่ง `fsck` หลายครั้งจริงๆ มันบอกว่าไม่มีข้อผิดพลาดอีกหลังจากอันแรกเหล่านั้น

โพสต์คำตอบ

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