UNIX - Как передать права пользователя другому пользователю, и мне не нужно вводить sudo или вводить пароль?
У меня есть 2 пользователя в вопросе
• git user - используется для gitosis - так что это пользователь без пароля и доступ к нему возможен только через root...
• user user - где находятся мои файлы
так что я хотел бы дать пользователю права git для перехода в папку luddico, подобную этой
git@domain.me:~/respositories# cd /home/user/websites/domain.com
а затем выполнить любое действие внутри пользовательских пользовательских файлов (любой файл / папка), чтобы таким образом я мог, например,
git@domain.com:/home/user/websites/domain.com# git pull
потому что на самом деле действие, упомянутое выше, возвращает:
error: cannot open .git/FETCH_HEAD: Permission denied
поэтому, когда я спрашиваю о таких действиях, он запрашивает пароль git, которого, кстати, нет, или сразу отменяет его
Итак, как я могу настроить пользователя git так, чтобы он имел права root / admin на пользователя, без необходимости указывать пароль или sudo перед командами? так же, как если бы это был root
- Было бы еще лучше, если бы можно было просто разрешить использование определенных команд из git для пользователя.
заранее спасибо
2 ответа
В соответствии с просьбой, немного учебник по группам. Надеюсь, это не слишком элементарно.
По умолчанию большинство учетных записей пользователей также входят в группу с тем же именем. Чтобы определить, к каким группам относится учетная запись, используйте команду groups.
# groups root
root : root bin daemon sys adm disk wheel
Первая из перечисленных является основной группой и будет владельцем группы по умолчанию для всех файлов, которые создает пользователь. Это указано в выводе ls как вторая запись root.
# touch testfile
# ls -l testfile
-rw-r--r-- 1 root root 19 Jan 29 08:37 testfile
Чтобы добавить пользователя в группу, вы используете usermod, как показано. Флаг "-g" в нижнем регистре, который вы ему дали, меняет основную группу. Может быть лучше изменить только вторичный, используя флаги "-G" и "-a". А именно, поместить пользователя git в группу luddico.
# usermod -G luddico -a git
# groups git
git : git luddico
Это должно дать git доступ ко всем файлам, которые принадлежат группе luddico, и имеют соответствующие разрешения группы. Групповые разрешения - это второй набор "rwx", указанный в ls. Тестовый файл, который я показал выше, разрешает доступ только для чтения корневой группе. Если вы хотите предоставить всем членам этой группы права на запись, вам придется использовать для этого chmod.
# ls -l testfile
-rw-r--r-- 1 root root 19 Jan 29 08:37 testfile
# chmod g+w testfile
# ls -l testfile
-rw-rw-r-- 1 root root 19 Jan 29 08:37 testfile
Теперь любой пользователь в корневой группе может читать или писать в тестовый файл. Примените ту же концепцию к файлам Луддико.
Если вы хотите предоставить пользователю (например, git в ваших примерах) доступ к пространству другого пользователя, поместите его в ту же группу и соответственно установите права группы.
Если вам нужна более сложная функциональность списка контроля доступа, вы должны изучить списки ACL для POSIX, как это предусмотрено в getfacl(1) и setfacl(1).