Традиционным способом будет использование групп. Пользователь Jenkins добавляется в группу minecraft (группа, отвечающая за коррозию пользовательского minecraft). Затем пользователь minecraft дает разрешение на запись для данной директории (например, chmod g+w ~minecraft/some_directory
). Конечно, также возможно (для root) создать пользовательскую группу, которая будет просто использоваться с этим каталогом (например, новая группа minewriters или что-то в этом роде). Если minecraft-user является администратором группы minecraft, то он может добавлять пользователей в группу с помощью gpasswd -a user group
( gpasswd -a jenkins minecraft
) - иначе корень должен добавлять пользователей в группу.
Более новым, лучшим и тонким способом (хотя и немного сложным) является использование Access Control Lists (acl), где владелец файла или каталога может предоставить определенным пользователям и/или группам доступ к файлу или каталогу. Пользователь minecraft просто добавит jenkins в "список доступа" соответствующей директории и даст jenkins права на запись в эту директорию.
setfacl -m user:jenkins:rwx ~minecraft/some_directory
Это даст пользователю jenkins право создавать новые файлы (w), прослушивать содержимое с помощью ls (r) и переходить в каталог (x).
+++
Доступ к файлам и каталогам в некоторой степени зависит от доступа пользователей к вышеперечисленным каталогам. Если пользователь jenkins не может войти в домашний каталог пользователя minecraft (/home/minecraft), то он также не может получить доступ ни к каким каталогам под ним... даже если ему было дано разрешение с помощью chmod
или setfacl
к конкретному каталогу.
Таким образом, пользователь minecraft должен имплицитно или явно также дать пользователю jenkins , по крайней мере, выполнить (x) разрешение на его домашний каталог (и все каталоги между его домашним каталогом и каталогом jenkins должны быть разрешены к записи). Выполнить разрешение на директорию, дает право "вводить" директорию (например, командой cd
). Большинство пользователей также получит разрешение на чтение (r) - что дает им право перечислять содержимое каталога командами типа ls
- чтобы они могли ориентироваться.
Если разрешения домашнего каталога minecraft уже есть 'rwxr-x---' или 'rwxr-xr-x' (что часто бывает), то этого достаточно. ... если это 'rwx------', то доступ должен быть изменен, чтобы дать доступ хотя бы членам группы minecraft - или пользователю jenkins.
+++
Также хорошей идеей является добавление sticky-бита в каталог, в который jenkins должно быть разрешено записывать (т.е. chmod a+t ~minecraft/some_directory
). Это не позволяет пользователям с разрешениями на запись в каталог удалять файлы, принадлежащие пользователям другим пользователям (за исключением владельца каталога, который все еще может удалять любые файлы).