Задать вопрос

Как получить доступ к файлу в пользовательской папке внутри рутовой в Ubuntu?

Есть shell-скрипты и конфиги к ним, которые должны исполняться по крону, но не должны быть видимыми для пользователя, от имени которого будут исполняться - по крайней мере, он не должен наткнуться на них, гуляя по файловой системе.

Это нужно для того, чтобы потенциальный злоумышленник, получив доступ к системе от имени пользователя, не смог выкрасть пароли из конфигов, которые идут к shell-скриптам.

Пусть файлы будут такими:
/root/.crons/user_folder/user_script.sh
/root/.crons/user_folder/config.sh


Пользователь пусть будет dummy.

При этом /root и /root/.crons - принадлежат root:root.
А user_folder, user_script.sh и config.sh - принадлежат пользователю/группе dummy:dummy, и для упрощения пока поставил им всем 777.

Предполагается, что крон будет исполняться рутовый, но от имени пользователя:
* * * * * dummy /root/.crons/user_folder/user_script

Прежде чем установить такой крон, пробую от имени dummy запустить скрипт - Permissions denied.
Пытаюсь просто прочесть файл при помощи cat - Permissions denied.
Пытаюсь посмотреть содержимое папки user_folder - Permissions denied.

Мне казалось, что если моя, как пользователя, папка и файлы лежат внутри чужой, то я все равно смогу иметь к ним доступ.
Возможно, это не так. Если да, то почему?

Как можно решить задачу с сокрытием моей папки внутри папки рута (или другого пользователя)?
Как можно решить задачу иначе?
  • Вопрос задан
  • 2989 просмотров
Подписаться 4 Средний 1 комментарий
Ответ пользователя CityCat4 К ответам на вопрос (4)
CityCat4
@CityCat4 Куратор тега Информационная безопасность
Дома с переломом ноги
Не трожьте домашку рута!

Домашка рута должна быть с правами 0700 root:root и ни одна собака не должна в ней рыться! Равно как и пользователи (если их несколько) с обычными правами не должны заходить в домашки друг друга! Это "личная жилплощадь" каждого.

Пароли в конфигах - это очень плохо. Это допустимо только тогда, когда невозможно никак иначе, и то я в таокм случае пишу скриптец, который пароль тривиально кодирует-раскодирует. Для общего скрипта в таком случае выделяется папка например в /usr/share, где можно для блезиру сделать еще пару уровней с ничего не говорящими названиями :), а внутри нее уже делать что надо.

Чтобы открыть файл даже на чтение у пользователя должны быть права на чтение каталога всех элементов пути. То есть, если у Вас файл лежит в /usr/share/systemscripts/default/usersettings/zhopa/zhopa.txt, то на все шесть элементов пути должны быть права по чтению.

man getfacl, man setfacl
Ответ написан