Разрешить пользователю удалять файл, но не читать его

Есть ли какая-либо конфигурация разрешений, которая позволяет пользователю удалять файл, но не читать или писать?

2 Solutions collect form web for “Разрешить пользователю удалять файл, но не читать его”

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

Таким образом, файл может быть нечитаемым и невоспроизводимым, но любой, кто может писать в своем родительском каталоге, сможет удалить его:

 mkdir a chmod 777 a touch a/b chmod 000 a/b 

создает файл b в каталоге a , так что никто, кроме root может читать или писать b , но любой может удалить b .

(Обратите внимание, что любой может также заменить b .)

Да, это возможно. Единственное действие для записи, которое необходимо удалить, это удалить соответствующий индекс, который требует разрешения для записи в родительском каталоге (он определен как POSIX ).

Вам не нужно ничего менять о файле. Файл считается удаляемым после того, как его счетчик ссылок равен 0. Счетчик ссылок равен количеству указателей на него, а также количеству открытых обработчиков файлов этого файла. Последний будет равен 0, если файл не используется. Поэтому, как только вы удалите этот 1 inode, файл имеет (если нет других жестких ссылок), он удаляется.

Пример:

Создайте в нем новый каталог и cd:

 mkdir /tmp/test cd /tmp/test 

Затем станьте root :

 sudo su 

Обратите внимание, что запись sudo перед следующей командой не будет работать, потому что это действие записи, которое должно выполняться root . Пользователь, выполняющий echo не имеет большого значения.

Затем создайте новый файл, измените его разрешение и снова запустите корневую оболочку.

 echo some content > someFile chmod 600 someFile exit 

Позвольте вам показать содержимое каталога:

 ll 

Результат будет таким, только с вашим именем пользователя вместо christoph :

 total 12 drwxrwxr-x 2 christoph christoph 4096 Oct 8 14:27 ./ drwxrwxrwt 13 root root 4096 Oct 8 14:25 ../ -rw------- 1 root root 13 Oct 8 14:27 someFile 

1 – последняя строка означает, что в файле имеется только 1 индексный дескриптор. Поэтому после удаления этой 1 записи файл исчезнет, ​​если он не будет открыт никакими программами (и если это так, оно исчезнет после того, как эти программы завершат его или будут завершены). Это обычно, но не всегда. См. https://en.wikipedia.org/wiki/Hard_link для получения дополнительной информации.

Как вы можете видеть, у вас нет права на чтение и запись на этот файл, но у вас есть разрешение на запись в каталоге (текущий каталог отмечен как период ( . )). Это означает, что вы можете удалить файл через

 rm someFile 

Но будет предупрежден, что этот файл защищен от записи:

 rm: remove write-protected regular file 'someFile'? 

Просто введите y для «yes» и нажмите enter.

Затем файл пропал:

 $ ll total 8 drwxrwxr-x 2 christoph christoph 4096 Oct 8 14:27 ./ drwxrwxrwt 13 root root 4096 Oct 8 14:27 ../ 
  • groupadd при записи изменений в / etc / group
  • доступ к USB-накопителю, поврежденный после смены uid
  • Есть ли папка, доступная всем процессам и пользователям в любое время?
  • Понимание пользователя unix
  • Установка общего доступа NFS из клиента Linux в домене Windows
  • Невозможно изменить разрешения файлов / каталогов в chrooted файловой системе
  • использование chown в linux
  • suid-root не влияет
  • Анонимный файл и папка / владелец
  • Есть ли способ увидеть разрешения всех промежуточных каталогов пути.?
  • Установить видимые каталоги для доступа SFTP?
  • Interesting Posts

    файлы, созданные на внутреннем жестком диске, всегда принадлежат root

    wpa_supplicant wifi-direct соединение между Linux и Android

    Продолжайте запускать скрипт через ssh

    Есть ли утилита командной строки, которая копирует файлы с информацией о ходе работы?

    Как обновить приложения Gnome 3

    Как изменить определенные привязки клавиш в Tmux?

    Нужно: простой способ удаленного мониторинга процесса на моем сервере

    Как выполнять переадресацию портов между localhost и localhost на двух машинах?

    Все зависимости для сторонних компиляторов

    Автоматически отключать сенсорную панель при запуске

    linux – отключить все видеовыходы

    Bash: слияние имени папки из переменной с именем файла

    dovecot смущает сертификат сайта с почтовым сертификатом

    Сценарий для отображения только файлов типа ASCII в текущем каталоге?

    Удалить несколько регулярных выражений из переменной с помощью sed

    Linux и Unix - лучшая ОС в мире.