Пытаюсь сделать веб-интерфейс для игрового сервера.
У меня есть пользователь / группа «игровой сервер», у которого есть игровые файлы и конфигурации (не sudoer). И пользователь / группа "www-data", о которых вы все знаете, предназначены для веб-приложения.
Теперь, к сожалению, я видел сообщения людей, которые просили или предлагали добавить www-данные в группу «sudo», чтобы позволить ей изменять файлы где-нибудь еще. Очень плохая практика по соображениям безопасности.
Я хочу разрешить www-data изменять файлы внутри файлов / папок пользователя «игровой сервер» без прав «root».
Насколько я знаю, есть несколько способов сделать это:
Первые два потребуют изменения разрешений или владельца для каждого вновь создаваемого файла или папки. Поэтому последний способ кажется наиболее вероятным. Однако после выполнения:
usermod -a -G gameserver www-data
чтобы добавить пользователя "www-data" в группу "gameserver", я больше не могу использовать SSH для пользователя "gameserver". И получите ошибку:
Permission denied (publickey).
Похоже, в этом посте есть похожая проблема: Ошибка сбоя канала SSH после добавления пользователя в группу
Но на самом деле вопрос не решает.
Почему добавление другого пользователя в мою группу пользователей не позволяет мне получить доступ к моему пользователю через SSH? И как я могу решить эту проблему?
Обратите внимание, что «www-data» действительно может записывать файлы, принадлежащие пользователю «gameserver».
Чтобы обратить эффект, я SSH к "root" и выполняю:
gpasswd -d www-data gameserver
Удалить пользователя www-data из группы gameserver
Изменить 01:
Как указал в 1-м комментарии Райан Бабчишин, у него это работает. Я пробовал на другом сервере, и он работает. На данный момент эта проблема характерна только для серверов OVH. Они указали, что используют собственное ядро в ответ на более раннюю проблему, когда я не мог использовать команды SystemV для запуска, остановки или перезапуска службы. Я подал еще один билет. Но до сих пор не понимаю, какое отношение это имеет к разрешениям Linux.
Какие разрешения на ~gameserver/.ssh/authorized_keys
? Если они доступны для групповой записи, SSH-сервер откажется их использовать, потому что кто-то, кроме целевого пользователя, может добавить произвольные ключи. Я могу заставить свой домашний компьютер отказываться принимать мою пару ключей с chmod g+w .ssh/authorized_keys
.
Теперь, в вашем случае вы не изменили биты разрешений (предположительно), но, возможно, ваше собственное ядро или просто другая реализация sshd, чем мой компьютер, будет принимать ключи с возможностью групповой записи до тех пор, пока нет других пользователей в группа? Тогда если ты делать имеют странные разрешения, такие как 664, sshd будет принимать вход в систему, пока вы не измените членство в группе. Немного укол в темноте, но звучит наполовину правдоподобно.