sshd с несколькими разделами соответствия, переопределить настройки

У меня есть ситуация, когда sshd должен разрешать доступ sftp только группе пользователей.

Это легко сделать, добавив раздел соответствия, например

Match Group groupname
    ChrootDirectory /srv/ftp
    ForceCommand internal-sftp

Теперь мне нужно исключить одного пользователя, который является членом этой группы. У него должен быть нормальный доступ к оболочке.

Match User username
    ChrootDirectory ???
    ForceCommand ???

Что я здесь устанавливаю? Можно ли отменить директивы конфигурации, ранее установленные с другим соответствующим разделом?


person gurubert    schedule 31.05.2012    source источник


Ответы (3)


Сначала примените настройки к группе, за исключением имени пользователя, затем примените (другие) настройки к имени пользователя. Если вы не используете параметр «ForceCommand» для имени пользователя, он не применяется.

Match Group groupname User !username
   ChrootDirectory /srv/ftp
   ForceCommand internal-sftp
Match User username
   PasswordAuthentication yes

Другой пример: вам могут понадобиться разные настройки, если пользователь входит в систему с разных IP-адресов.

#all users except username1 and username2 default to sftp
Match User *,!username1,!username2
    PasswordAuthentication yes
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp -f LOCAL0 -l INFO

#normal ssh allowed for users username1 and username2 from the local network
Match User username1,username2 Address 192.168.0.0/16
    PasswordAuthentication yes

#users username1 and username2 not allowed from other networks
Match User username1,username2 Address *,!192.168.0.0/16
    PasswordAuthentication yes
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/sbin/nologin
person anneb    schedule 17.03.2016
comment
Ваш второй пример - это именно то, что мне нужно, и поэтому я очень ценю. Чтобы сгруппировать плохих пользователей вместе, я ввел группу, например, badusers: Match Group badusers Address *,!192.168.0.0/16 PasswordAuthentication no - person Atafar; 06.04.2021

Не добавляйте раздел Match User. Вместо этого исключите пользователя, исключив его из исходного совпадения.

Match Group groupname User !username
    ChrootDirectory /srv/ftp
    ForceCommand internal-sftp

Все критерии в строке Match должны быть удовлетворены для применения раздела.

Я не уверен в точном синтаксисе. Вам могут понадобиться цитаты.

Match Group groupname User "!username"
    ChrootDirectory /srv/ftp
    ForceCommand internal-sftp
person dave4420    schedule 31.05.2012
comment
цитаты не нужны - person Nicolas Mommaerts; 21.12.2018
comment
Для всех остальных, кто натыкается на это, я просто не мог заставить его работать, пока не прочитал bbs.archlinux.org/viewtopic.php?id=121945. Оказывается, в сопоставлении с образцом есть ошибка, и вам нужно выполнить сопоставление имени группы, пользователя *,! имя пользователя, после того, как я это сделал, он сразу же заработал, как и ожидалось. - person Nicolas Mommaerts; 21.12.2018
comment
@NicolasMommaerts С конфигурацией SSH, говорит документ Критерии можно отменить, поставив перед ними восклицательный знак ('!'). Можно ли сделать это и с SSHD? Match Group foo !User bar baz - person Michael; 08.04.2019

Что сработало для меня, так это поставить правило пользователя на первое место:

Match user lee
    ChrootDirectory /mnt/s3
    ForceCommand internal-sftp

Match group ftp
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
person Lee Tickett    schedule 24.02.2021