Как запретить пользователю изменять файлы с помощью разрешения Linux

8

Возможно ли, используя схему разрешений linux, разрешать пользователям создавать файлы, но не редактировать и не удалять их позднее? Я имею в виду, что у нас есть папка доставки, в которую пользователи помещают артефакты, и мы не хотим, чтобы эти артефакты были изменены после доставки, т.е. отредактированы или удалены.

Жиль "ТАК - перестань быть злым"
источник
4
См. Stackoverflow.com/questions/869536/…
Фредрик Пихл

Ответы:

2

Вы не можете этого сделать: если пользователь может создавать файлы, они будут принадлежать ему, и он сможет их изменять и стирать.

Я собирался предложить простую схему, чтобы иметь промежуточный каталог (где пользователь может делать то, что он хочет) и входящий каталог (недоступный для пользователя) с небольшой привилегированной программой для перемещения файлов из промежуточного каталога во входящий каталог. Но на самом деле это сложно сделать правильно: помимо всего прочего вам нужно позаботиться о том, чтобы привилегированная программа не перемещала файлы в другие каталоги (остерегаясь условий гонки, символических ссылок ../), не перезаписывала существующие файлы ( rename(3)атомарно, но может стереть место назначения), не позволит пользователю держать дескриптор файла открытым и изменять файл после его перемещения (поэтому лучше скопировать, чем переместить). Вместо этого я рекомендую взять существующее надежное решение:

  • Попросите пользователя загрузить файл по HTTP.
  • Попросите пользователя зафиксировать систему контроля версий. Он также сможет фиксировать новые версии.
Жиль "ТАК - перестань быть злым"
источник
1

Возможно ли, используя схему разрешений linux, разрешать пользователям создавать файлы, но не редактировать и не удалять их позднее?

НЕТ

Но у вас есть другие варианты, предложенные @Fredrik в комментарии к вашему вопросу. Посмотреть здесь.

ssapkota
источник
0

Вот подход, который теоретически должен работать. Для меня слишком много усилий, чтобы разработать даже доказательство концепции; Вы можете отклонить его по той же причине. И, строго говоря, это не «использование схемы разрешений Linux».

  • Получите файловый сервер с открытым исходным кодом.
  • Измените его, чтобы обеспечить соблюдение необходимых правил (т. Е. Пользователи могут создавать файлы в каталогах, к которым у них есть права на запись, и могут записывать в файл сразу после его создания, но после этого никто, кроме root, не сможет открыть файл для записи или отмены связи Это).
  • Настройте хост сервера, на котором работает ваше модифицированное программное обеспечение сервера. Теоретически это может быть ваш локальный хост; просто убедитесь, что каталог, из которого он работает, не является общедоступным.
  • Смонтируйте NFS /mnt/deliveryи попросите пользователей поместить туда свои файлы.
Скотт
источник
0

Простой ответ состоит в том, чтобы запускать сценарий с заданным интервалом, который вы выбираете (скажем, каждые 15 минут), который переназначает владение всеми файлами в каталоге «upload» заранее определенному пользователю «admin» и устанавливает права доступа «644». Это позволит всем пользователям доступ только для чтения ко всем файлам в каталоге загрузки, включая те, которые они загрузили сами. Конечно, вы можете оптимизировать скрипт после первого запуска, чтобы искать только те файлы с датами создания после предыдущего запуска скрипта (скажем, за последние 17 минут).

Майкл Ягер
источник