Рейтинг:1

Как файл может быть виден обычному пользователю, но не существовать для root?

флаг de

Я задал этот вопрос вчера, но он был помечен как дубликат и закрыт из-за его контекста, поскольку считалось, что это вопрос X/Y, тогда как меня просто интересовал общий вопрос о том, «как это могло быть», поскольку мой личные исследования (на этом веб-сайте, а также в Интернете) ничего не дали, и я хотел бы узнать больше о том, как обнаружить и справиться с такой специфической проблемой.

Итак, без всякого контекста, вчера я обнаружил несколько файлов на одном из наших серверов Debian, которые были видны обычному пользователю, но не корень, несмотря на то, что они принадлежат корень.

Он перепробовал множество команд над этими файлами, и что бы я ни пытался, пользователь обрабатывает файлы как обычные файлы, но корень реагирует так, как будто этих файлов вообще не существует (но, тем не менее, не может их перезаписать). Это НЕТ точечные файлы.

Вот результаты этих команд:

Как пользователь

группы user@debian:/tmp$
пользовательский cdrom дискета audio dip video plugdev netdev

пользователь@debian:/tmp$ pwd
/tmp

user@debian:/tmp$ ls -lai
всего 320
1048577 drwxrwxrwt 11 root root 4096 7 сен 13:04 .
      2 drwxr-xr-x 23 root root 4096 6 сентября 17:34 ..
5901230 -rw-r----- 1 root root 0 7 сентября 12:59 invisible_file
<другие_файлы>

user@debian:/tmp$ touch invisible_file
touch: нельзя трогать 'invisible_file': разрешение отклонено

user@debian:/tmp$ rm invisible_file
rm: удалить защищенный от записи обычный пустой файл 'invisible_file'? у
rm: невозможно удалить 'invisible_file': операция не разрешена

user@debian:/tmp$ stat invisible_file
  Файл: invisible_file
  Размер: 0 Блоков: 0 Блок ввода-вывода: 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$ install /dev/null invisible_file
установить: невозможно удалить 'invisible_file': операция не разрешена

user@debian:/tmp$ cat invisible_file
cat: invisible_file: Отказано в доступе

user@debian:/tmp$ find /tmp/ -iname "*invisible_file*"
/tmp/невидимый_файл

пользователь@debian:/tmp$

Как корень

группы root@debian:/tmp#
корень

root@debian:/tmp# pwd
/tmp

root@debian:/tmp# ls -lai
всего 308
1048577 drwxrwxrwt 11 root root 4096 7 сен 13:04 .
      2 drwxr-xr-x 23 root root 4096 6 сентября 17:34 ..
<другие_файлы>

root@debian:/tmp# touch invisible_file

root@debian:/tmp# ls -lai
всего 308
1048577 drwxrwxrwt 11 root root 4096 7 сен 13:04 .
      2 drwxr-xr-x 23 root root 4096 6 сентября 17:34 ..
<другие_файлы>

root@debian:/tmp# rm invisible_file
rm: невозможно удалить 'invisible_file': нет такого файла или каталога

root@debian:/tmp# stat invisible_file
stat: не может stat 'invisible_file': нет такого файла или каталога

root@debian:/tmp# install /dev/null invisible_file
установка: невозможно создать обычный файл 'invisible_file': нет такого файла или каталога

root@debian:/tmp# cat invisible_file
cat: invisible_file: Нет такого файла или каталога

root@debian:/tmp# find /tmp/ -iname "*invisible_file*"

root@debian:/tmp#

Заметьте, что даже в лс команда общее количество используемых блоков отличается, разница соответствует невидимый_файл размер.

Единственный способ перезаписать файл — создать файл с другим именем (и даже с другими разрешениями) и как корень, мв все кончено невидимый_файл, но невидимый_файл продолжает скрываться от корень.

Мой вопрос: как в мире Linux можно заставить root полностью игнорировать некоторые обычные файлы, как будто их просто нет, как в моем случае? И как я могу исследовать этот вопрос, сделать эти файлы снова видимыми и убедиться, что нет других невидимых файлов для рутирования?

РЕДАКТИРОВАТЬ :

Вот устанавливать output, он не показывает мне ничего особенного:

root@debian:~# смонтировать
sysfs в /sys типа sysfs (rw,nosuid,nodev,noexec,relatime)
proc в /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 в /run введите tmpfs (rw,nosuid,noexec,relatime,size=817960k,mode=755)
/dev/sda1 на / введите ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs в /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs в /dev/shm введите tmpfs (rw,nosuid,nodev)
tmpfs в /run/lock type 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 type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup в /sys/fs/cgroup/memory типа cgroup (rw,nosuid,nodev,noexec,relatime,memory)
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 type 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)

Результат фск -нф заключается в следующем:

root@debian:~# fsck -nf
fsck из util-linux 2.29.2
e2fsck 1.43.4 (31 января 2017 г.)
Предупреждение! /dev/sda1 смонтирован.
Предупреждение: пропуск восстановления журнала из-за проверки файловой системы только для чтения.
Проход 1: проверка индексных дескрипторов, блоков и размеров
Удаленный индекс 524799 имеет нулевое время ожидания. Исправить? нет

Найдены индексные дескрипторы, которые были частью поврежденного связанного списка потерянных файлов. Исправить? нет

Инод 1441794 был частью списка потерянных индексов. ИГНОРИРУЕТСЯ.
Проход 2: проверка структуры каталогов
Шаг 3: проверка подключения к каталогу
Шаг 4: проверка счетчиков ссылок
Шаг 5: Проверка сводной информации о группе
Различия в растровых изображениях блоков: -(11108512--11108538)
Исправить? нет

Неверный подсчет свободных блоков (16886612, counted=16857986).
Исправить? нет

Различия в растровых изображениях inode: -524799 -1441794
Исправить? нет

Неверный подсчет свободных инодов (5867140, counted=5866555).
Исправить? нет


/dev/sda1: ********** ВНИМАНИЕ: в файловой системе все еще есть ошибки **********

/dev/sda1: 162172/6029312 файлов (0,3% несмежных), 7230636/24117248 блоков
root@Confluence:~#

Наконец-то я смог запустить полный fsck в файловой системе. Он исправил показанные выше ошибки, но безрезультатно, так как файлы по-прежнему невидимы.

флаг ng
Говорит ли mount что-нибудь особенное о `/tmp`? Другими словами, можете ли вы уточнить структуру файловой системы системы? Мне также любопытно, что произойдет, если вы `fsck`; возможно он испорчен?
mbernard avatar
флаг de
@Halfgaar Вывод «mount» одинаков для «root» или «user» и, похоже, ничего не показывает относительно «/ tmp». Я обновлю свой пост с указанным выводом.
mbernard avatar
флаг de
@Halfgaar Я обновил свой ответ тем, что произошло с `fsck`. Это ничего не дало, к сожалению.
флаг ng
Вы снова запускали fsck? Раньше я сталкивался с проблемами, поэтому мне приходилось запускать его несколько раз, пока все ошибки не исчезли.
mbernard avatar
флаг de
@Halfgaar Извините, я не привык к этому сайту и не видел, что получил от вас ответ. Я действительно запускал `fsck` несколько раз. Он сказал, что после этих первых ошибок больше не было.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.