В конфигурации SSHD есть группа Match:
cat /etc/ssh/sshd_config
...
Match Group FOOGROUP
ForceCommand /bin/customshell
...
На машине много пользователей, входящих в «FOOGROUP».
Мой вопрос:Как исключить определенного пользователя, входящего в «FOOGROUP», из «Match Group»?
решение1
Оператор Match
может принимать несколько аргументов, что позволяет использовать очень гибкие правила. В этом случае вы можете сделать что-то вроде этого, чтобы добиться желаемого.
Match Group FOOGROUP User !username
ForceCommand /bin/customshell
Отменяет !
аргумент, переданный критерию User
, поэтому даже если пользователь username
входит в группу FOOGROUP
, попытка Match
не будет успешной и ему username
не будет предоставлена пользовательская оболочка при входе в систему.
решение2
Вам нужно использовать несколько предложений в записи файла конфигурации, но очень определенным образом. В некоторых настройках есть ошибка, из-за которой рекомендуемый и самый простой синтаксис ( "Match Group FOOGROUP User !username" ) либо приводит к тому, что все остальные в группе не могут выполнить Match, либо позволяет им избежать своей chroot-тюрьмы.
На Debian Jessie с использованием OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.2d я получаю результат, что все остальные в группе больше не могут подключиться. Другиесообщать о побегах из тюрьмы. В обоих случаях синтаксис
Match Group FOOGROUP User *,!username
Кажется, работает без побочных эффектов. Какой-то баг в парсере, без сомнения.
решение3
с помощью приведенной ниже опции я могу изолировать пользователя sftp в указанном каталоге, а также разрешить указанному пользователю входить в систему через ssh.
Match Group groupname User *,!username
Спасибо.