Comments 39
mv /home/hostuser/vhosts/sitename.ru/logs /home/hostuser/vhosts/sitename.ru/pwned
+2
[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.
0
Что я сделал не так?
Скрытый текст
На 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
0
Ну вообще-то я считаю, что это правильное поведение. Мы всего лишь меняем путь до папки test, при этом мы ни как не изменяем запись о файле .keep.
Всё, что изменилось это поле name для inode описывающего директорию test.
Так что перемещение работает и это логично. Но почему оно не сработало у AgentSIB мне не ясно.
Всё, что изменилось это поле name для inode описывающего директорию test.
Так что перемещение работает и это логично. Но почему оно не сработало у AgentSIB мне не ясно.
0
Просто назначьте логи в другое место, в которое у гостей доступа не будет, а это другое место просто примонтируйте к локальной директории гостя через
-o bind
. Если удалит — сам себе злобный буратино, но зато никто больше не пострадает.+3
Согласен, об этого сделал приписку ниже. Но согласитесь, bind по хорошему нужно прописывать в fstab, а это лишний шаг. Если изобретать коммерческий хостинг, то это сделать нужно. Но так как у меня на сервере хостятся доверенные люди — достаточно простой защиты от удаления. Цель данной статьи показать, что есть такая возможность.
0
Вы на спичках экономите, на самом деле. Это не «лишний шаг», это одноразовое действие при загрузке машины, которое решает вашу проблему с «удалили директорию, покрешился демон» в полном объеме, без костылей с попытками предотвратить
И да, immutable для mount-а не нужен вообще в данном случае — зачем запрещать модификацию структуры директории? Пусть меняют, это их директория и их личные проблемы.
mv
, о котором писал kekekeks.И да, immutable для mount-а не нужен вообще в данном случае — зачем запрещать модификацию структуры директории? Пусть меняют, это их директория и их личные проблемы.
+2
Да, логи можно хранить отдельно. Но создавать папку логово под каждого пользователя (или хост) и отдельно монтировать для каждого пользователя (или хоста) это лишний шаг. В таком случае уж лучше сделать как я предложил в примечании: сделать бинд на папку /srv/www/site.ru, где /srv/www — root:root, а site.ru — имеет флаг immutable.
0
Простите, а не лучше ли было задать этот вопрос на специализированном форуме?
-2
Угу, и получить в ответ «Юзай Гугл». А если серьезно, то даже на хабре не встретил информацию по поводу этих атрибутов. Все советы по данной теме сводятся к chown, chmod, более продвинутые говорят использовать acl либо bind.
+2
Илюх, а не проще разделить права до папки sitename.ru?
0
Угу, и получить в ответ «Юзай Гугл». А если серьезно, то даже на хабре не встретил информацию по поводу этих атрибутов
ви таки не поверите, но даже вы не осветили атрибуты:
lsattr /home/hostuser/vhosts/sitename.ru
Ну или man chattr. К слову, информация по chattr +i будет в первых строках гугла
0
А еще симлинк /var/log/apache/site.com можно сделать в папку юзера, и тогда да, удалит симлинк — его проблемы, логи не увидит.
+2
UFO just landed and posted this here
Вот вроде бы уже не детский сад, а все равно «папка».
Да еще и в заголовке.
Фу! Как безграмотно!!!
P.S. И, кстати, этот ваш chattr работает совсем не на всех файловых системах! Скажем, на кошерном Reiserfs — нет.
Да еще и в заголовке.
Фу! Как безграмотно!!!
P.S. И, кстати, этот ваш chattr работает совсем не на всех файловых системах! Скажем, на кошерном Reiserfs — нет.
-1
Монокль не уроните.
На рейзере работает, читайте выше.
На рейзере работает, читайте выше.
0
Хотя в посте я сразу написал о файловых системах ext*
0
А зачем логи в хомяке? en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
0
Может проще было бы сделать хардлинк на директорию в другом месте или, как уже преложили выше, примонтировать с -o bind?
0
Научите, как хардлинк на директорию сделать?
0
Прочитайте, пожалуйста комментарии… habrahabr.ru/post/243889/#comment_8155571 — вот отсюда
0
При использовании симлинка, пользователь может его сам удалить, это его проблемы.
Запрещать что-то делают руту это вообще абсурд.
Зато, может произойти такая ситуация, что вы забудете, что ставили этот этот особый атрибут на файл или каталог, когда вам надо будет срочно что-то исправить или удалить, на вспоминание может уйти время, что в итоге выльется в простой. Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
Профит в том, что когда выполняете удаление, забыв о том, что путь является критическим — система не даст это сделать. Ни конечному пользователю, ни суперпользователю.
Запрещать что-то делают руту это вообще абсурд.
Зато, может произойти такая ситуация, что вы забудете, что ставили этот этот особый атрибут на файл или каталог, когда вам надо будет срочно что-то исправить или удалить, на вспоминание может уйти время, что в итоге выльется в простой. Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
0
Запрещать что-то делают руту это вообще абсурд.
Ошибиться может простой пользователь, а вот серьезно накосячить может только суперпользователь. Выскажите свою точку зрения людям, которые добавили параметр --no-preserve-root в команду rm.
Если что то нужно исправить или удалить, снять атрибут пара секунд.
Т.е. хочу сказать, что тут на лицо излишнее усложнение, можно, вполне, обойтись штатными и привычными средствами.
Если бы все так рассуждали, до сих пор писали бы на асме или вообще использовали бы перфокарты.
0
Sign up to leave a comment.
«Защита от дурака» или как запретить изменение/удаление важных папок