Невозможно сделать это в общих чертах. Например, если файл экспортируется через сетевую файловую систему, такую как NFS или Samba, вам необходимо знать об учетных записях на авторизованных клиентах. Если файл виден через веб-сервер или FTP-сервер, потенциально весь мир может получить к нему доступ.
Даже без участия других машин (реальных или виртуальных) файл может быть жестко связан в другом каталоге.Дерево каталогов могло быть доступно где-нибудь еще из-за bind mount . Файл может быть расположен на образе диска, к которому некоторые пользователи также имеют прямой доступ. И так далее.
В номинальном случае, когда к файлу можно получить доступ только по одному пути, файл доступен только для процессов, которые могут пройти по всему дереву каталогов от корня до этого файла. Или из их текущего каталога в этот файл (это необычно, но возможно организовать процесс, чтобы иметь текущий каталог, в который он не сможет chdir, либо изменив разрешения каталога, либо снизив привилегии процесса после операции chdir) - но мы уходим от номинального корпуса. Итак, в номинальном случае возьмите пользователей, у которых есть требуемые разрешения для файла, и удалите пользователей, у которых нет разрешения x, ни в одном из каталогов в цепочке, ведущей от корня к этому файлу. Например, чтобы писать на / one / two / three
, пользователь должен иметь разрешение x на /
, / one
и / one / two.
и должны иметь разрешение на запись в / один / два / три
.
Чтобы определить, у кого какие права доступа к файлу, большинство вариантов Unix предоставляют команду getfacl
. Эта команда доступна в Linux, но не всегда является частью установки по умолчанию.В нем перечислены разрешения пользователей и групп; разрешения пользователя на файл определяются списком пользователей, если пользователь указан явно, а если нет, то у пользователя есть все разрешения, предоставленные любой группой, в которой он находится, и если пользователь не входит ни в одну из перечисленных групп тогда у пользователя есть «другой» набор разрешений.
Обратите внимание, что пользовательские процессы не всегда имеют точный набор групп, предоставленный записями в / etc / group
или аналогичных сетевых базах данных, но мы снова попадаем на территорию крайнего случая. Одна вещь, которая не является столь уж крайним случаем, заключается в том, что инфраструктуры безопасности, такие как SELinux и AppArmor, могут добавлять дополнительные ограничения. Вы можете определить, действуют ли такие ограничения, посмотрев на вывод ls -ld / path / to / file
: если после разрешений стоит знак препинания, это означает, что разрешения не говорят вся история ( +
указывает записи ACL, .
указывает контекст SELinux, который вы можете отобразить с помощью ls -Z
и т. д.).
Я не знаю инструмента, который бы собирал для вас всю эту информацию.
Псевдонимы использовались для разрешения множественных адресов до появления IPv6. Множественные адреса являются ключевой частью IPv6, поэтому псевдонимы теперь устарели.
Я не знаю, почему именно они могут вызвать путаницу, но поскольку вы определили, что это так, решение заключается в том, чтобы не использовать псевдонимы.
Вы должны быть в состоянии буквально заменить eth0:1
на eth0
в вашей конфигурации, и это будет работать. (Существует также более ручная альтернатива с использованием скриптовых крючков).
https://wiki.debian.org/NetworkConfiguration#iproute2_method
Критика: очевидно, в ваших адресах отсутствует часть U в UL.
Пример работы /etc/network/interfaces:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address aaa.aaa.aaa.aaa
netmask 255.255.255.0
broadcast aaa.aaa.aaa.255
gateway aaa.aaa.aaa.254
dns-nameservers aaa.aaa.aaa.254
post-up /etc/firewallup.sh
auto eth0
iface eth0 inet6 static
address fc00::6666
netmask 64
autoconf 1