Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Как сделать папки и файлы доступными для изменений и запретить их удаление?  (Прочитано 7031 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн opensource

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Собственно сабж. Где-то читал, что можно файлы и папки сделать доступными для редактирования, но в то же время запретить возможность их удаления?

Оффлайн Malamut

  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Можно. Прочитай где-нибудь про права, всё станет понятно. Права на удаления файлов определяются правами на папку, в которой эти файлы лежат, а права на изменение - правами на сам файл. Собственно, достаточно поставить только чтение на папку, и из неё уже ничего нельзя будет удалить, в то время как редактировать можно будет всё что угодно. Правда и создать файлы тоже не получится. Есть ещё такая штука, как липкий бит, возможно, оно тебе поможет чем-то.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
я занялся этим вопросом
думаю что нужно копать в сторону "chattr +a name_file"
этот бит +a  описан как "append flag"
полностью решение топика я не нашел ... пока не нашел

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Как сделать папки и файлы доступными для и
« Ответ #3 : 11 Февраля 2009, 13:24:10 »
делаем "только добавить"

vasilisc@vasilisc:~/temp$ ls -laF
итого 4
-rw-r--r-- 1 vasilisc vasilisc 86 2009-02-11 13:21 file

vasilisc@vasilisc:~/temp$ sudo chattr +a file
vasilisc@vasilisc:~/temp$ lsattr
-----a-----------e- ./file

проверяем работу

vasilisc@vasilisc:~/temp$ date > file
bash: file: Operation not permitted
vasilisc@vasilisc:~/temp$ date >> file

перезатереть > нам не дают, а добавить >> можно
правда если файл редактировать в редакторе, то вообще не дают сохранить =(, думаю из-за особенностей редакторов, которое сохраняют весь текст целиком (я пробовал в редакторе Midnight Commander'a)
то есть трюк с chattr +a  подойдет для тех случаев, где в файл добавляют скрипты через конвееры.

думаем дальше как запретить удаление
у chattr есть флаг  +u   undeletable (u)
vasilisc@vasilisc:~/temp$ sudo chattr +u file
vasilisc@vasilisc:~/temp$ lsattr
-u---a-----------e- ./file
vasilisc@vasilisc:~/temp$ rm file
rm: невозможно удалить `file': Operation not permitted

« Последнее редактирование: 11 Февраля 2009, 13:26:48 от vasilisc »

Оффлайн opensource

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Как сделать папки и файлы доступными для и
« Ответ #4 : 11 Февраля 2009, 23:17:25 »
vasilisc
Спасибо за помощь и внимание, очень признателен. Изучаю Ваше решение, не до конца понял, но очень похоже, что это то, что надо. А я тем временем копал в сторону жестких ссылок и sticky-бита. Но жесткие ссылки не подходили из-за того, что должны храниться в одном каталоге, а sticky-бит из-за того, что пользователь все-равно может удалить файл, если это его файл. Очень хочется ещё найти способ монтирования файловых систем (напр. ntfs или fat), чтобы также была возможность изменения, но запретить удаление.

 

Страница сгенерирована за 0.051 секунд. Запросов: 23.