Comments 39
mv /home/hostuser/vhosts/sitename.ru/logs /home/hostuser/vhosts/sitename.ru/pwned
[root@woland /]# mv /home/siteuser/vhosts/site.ru/logs /home/siteuser/vhosts/site.ru/tlogs
mv: cannot move `/home/siteuser/vhosts/site.ru/logs' to `/home/siteuser/vhosts/site.ru/tlogs': Permission denied
Centos, reiserfs. Тоже самое на archlinux ext4.
Что я сделал не так?
Скрытый текст
На ext4 повторяется. Заметьте, что удалить я .keep не могу даже от рута, то есть, атрибут применился.kekekeks@KeksMPC:~/sometests$ ls -la
итого 16
drwxrwxr-x 2 kekekeks kekekeks 4096 нояб. 30 23:33 .
drwxr-xr-x 195 kekekeks kekekeks 12288 нояб. 30 23:33 ..
kekekeks@KeksMPC:~/sometests$ sudo mkdir test
kekekeks@KeksMPC:~/sometests$ sudo touch test/.keep
kekekeks@KeksMPC:~/sometests$ sudo chattr +i test/.keep
kekekeks@KeksMPC:~/sometests$ mv test test2
kekekeks@KeksMPC:~/sometests$ ls
test2
kekekeks@KeksMPC:~/sometests$ ls -la test2/
итого 8
drwxr-xr-x 2 root root 4096 нояб. 30 23:33 .
drwxrwxr-x 3 kekekeks kekekeks 4096 нояб. 30 23:33 ..
-rw-r--r-- 1 root root 0 нояб. 30 23:33 .keep
kekekeks@KeksMPC:~/sometests$ sudo mv test2 /tmp
mv: невозможно удалить «test2/.keep»: Отказано в доступе
kekekeks@KeksMPC:~/sometests$ mount|grep home
/dev/sda5 on /home type ext3 (rw)
kekekeks@KeksMPC:~/sometests$ uname -a
Linux KeksMPC 3.13.0-35-generic #62-Ubuntu SMP Fri Aug 15 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Ну вообще-то я считаю, что это правильное поведение. Мы всего лишь меняем путь до папки test, при этом мы ни как не изменяем запись о файле .keep.
Всё, что изменилось это поле name для inode описывающего директорию test.
Так что перемещение работает и это логично. Но почему оно не сработало у AgentSIB мне не ясно.
Всё, что изменилось это поле name для inode описывающего директорию test.
Так что перемещение работает и это логично. Но почему оно не сработало у AgentSIB мне не ясно.
Просто назначьте логи в другое место, в которое у гостей доступа не будет, а это другое место просто примонтируйте к локальной директории гостя через
-o bind
. Если удалит — сам себе злобный буратино, но зато никто больше не пострадает.Согласен, об этого сделал приписку ниже. Но согласитесь, bind по хорошему нужно прописывать в fstab, а это лишний шаг. Если изобретать коммерческий хостинг, то это сделать нужно. Но так как у меня на сервере хостятся доверенные люди — достаточно простой защиты от удаления. Цель данной статьи показать, что есть такая возможность.
Вы на спичках экономите, на самом деле. Это не «лишний шаг», это одноразовое действие при загрузке машины, которое решает вашу проблему с «удалили директорию, покрешился демон» в полном объеме, без костылей с попытками предотвратить
И да, immutable для mount-а не нужен вообще в данном случае — зачем запрещать модификацию структуры директории? Пусть меняют, это их директория и их личные проблемы.
mv
, о котором писал kekekeks.И да, immutable для mount-а не нужен вообще в данном случае — зачем запрещать модификацию структуры директории? Пусть меняют, это их директория и их личные проблемы.
Да, логи можно хранить отдельно. Но создавать папку логово под каждого пользователя (или хост) и отдельно монтировать для каждого пользователя (или хоста) это лишний шаг. В таком случае уж лучше сделать как я предложил в примечании: сделать бинд на папку /srv/www/site.ru, где /srv/www — root:root, а site.ru — имеет флаг immutable.
Простите, а не лучше ли было задать этот вопрос на специализированном форуме?
Угу, и получить в ответ «Юзай Гугл». А если серьезно, то даже на хабре не встретил информацию по поводу этих атрибутов. Все советы по данной теме сводятся к chown, chmod, более продвинутые говорят использовать acl либо bind.
Илюх, а не проще разделить права до папки sitename.ru?
Угу, и получить в ответ «Юзай Гугл». А если серьезно, то даже на хабре не встретил информацию по поводу этих атрибутов
ви таки не поверите, но даже вы не осветили атрибуты:
lsattr /home/hostuser/vhosts/sitename.ru
Ну или man chattr. К слову, информация по chattr +i будет в первых строках гугла
А еще симлинк /var/log/apache/site.com можно сделать в папку юзера, и тогда да, удалит симлинк — его проблемы, логи не увидит.
UFO just landed and posted this here
Вот вроде бы уже не детский сад, а все равно «папка».
Да еще и в заголовке.
Фу! Как безграмотно!!!
P.S. И, кстати, этот ваш chattr работает совсем не на всех файловых системах! Скажем, на кошерном Reiserfs — нет.
Да еще и в заголовке.
Фу! Как безграмотно!!!
P.S. И, кстати, этот ваш chattr работает совсем не на всех файловых системах! Скажем, на кошерном Reiserfs — нет.
Монокль не уроните.
На рейзере работает, читайте выше.
На рейзере работает, читайте выше.
Хотя в посте я сразу написал о файловых системах ext*
А зачем логи в хомяке? en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
Может проще было бы сделать хардлинк на директорию в другом месте или, как уже преложили выше, примонтировать с -o bind?
Научите, как хардлинк на директорию сделать?
Прочитайте, пожалуйста комментарии… habrahabr.ru/post/243889/#comment_8155571 — вот отсюда
При использовании симлинка, пользователь может его сам удалить, это его проблемы.
Запрещать что-то делают руту это вообще абсурд.
Зато, может произойти такая ситуация, что вы забудете, что ставили этот этот особый атрибут на файл или каталог, когда вам надо будет срочно что-то исправить или удалить, на вспоминание может уйти время, что в итоге выльется в простой. Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
Профит в том, что когда выполняете удаление, забыв о том, что путь является критическим — система не даст это сделать. Ни конечному пользователю, ни суперпользователю.
Запрещать что-то делают руту это вообще абсурд.
Зато, может произойти такая ситуация, что вы забудете, что ставили этот этот особый атрибут на файл или каталог, когда вам надо будет срочно что-то исправить или удалить, на вспоминание может уйти время, что в итоге выльется в простой. Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
Запрещать что-то делают руту это вообще абсурд.
Ошибиться может простой пользователь, а вот серьезно накосячить может только суперпользователь. Выскажите свою точку зрения людям, которые добавили параметр --no-preserve-root в команду rm.
Если что то нужно исправить или удалить, снять атрибут пара секунд.
Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
Если бы все так рассуждали, до сих пор писали бы на асме или вообще использовали бы перфокарты.
Sign up to leave a comment.
«Защита от дурака» или как запретить изменение/удаление важных папок