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).

Другие вопросы по тегам