Я хочу разрешить Бобу получать доступ только к файлам в каталоге /var/www/main/open через sftp.

Я отредактировал /etc/ssh/sshd_config и изменил Subsystem sftp /usr/libexec/openssh/sftp-server на Subsystem sftp internal-sftp , а также добавил следующее:

Match Group allow_sftp
    ChrootDirectory /var/www/main/open
    ForceCommand internal-sftp
    AllowTcpForwarding no

Затем я добавил Боба:

useradd bob -d /var/www/main/open
passwd bob 
groupadd allow_sftp
usermod -G allow_sftp bob 
usermod -s /bin/false bob 

Затем я использовал FileZilla для доступа к серверу, используя учетные данные Боба. Он открылся в новом домашнем каталоге Боба /var/www/main/open , однако я все же смог получить доступ ко всем каталогам на сервере.

Как ограничить Боба только файлами в каталоге /var/www/main/open?

РЕДАКТИРОВАТЬ. Добавлены ответы на комментарии

[root@devserver ~]# cat /etc/centos-release
CentOS release 6.5 (Final)
[root@devserver ~]# sshd -V
sshd: illegal option -- V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-f config_file] [-g login_grace_time] [-h host_key_file]
            [-k key_gen_time] [-o option] [-p port] [-u len]
[root@devserver ~]# sshd -d -d -d -d -p 9999
sshd re-exec requires execution with an absolute path
[root@devserver ~]#

РЕДАКТИРОВАТЬ 2

[root@devserver ~]# /usr/sbin/sshd -d -d -d -d -p 9999
debug2: load_server_config: filename /etc/ssh/sshd_config
debug2: load_server_config: done config len = 694
debug2: parse_server_config: config /etc/ssh/sshd_config len 694
debug3: /etc/ssh/sshd_config:21 setting Protocol 2
debug3: /etc/ssh/sshd_config:36 setting SyslogFacility AUTHPRIV
debug3: /etc/ssh/sshd_config:42 setting PermitRootLogin no
debug3: /etc/ssh/sshd_config:66 setting PasswordAuthentication yes
debug3: /etc/ssh/sshd_config:70 setting ChallengeResponseAuthentication no
debug3: /etc/ssh/sshd_config:81 setting GSSAPIAuthentication yes
debug3: /etc/ssh/sshd_config:83 setting GSSAPICleanupCredentials yes
debug3: /etc/ssh/sshd_config:97 setting UsePAM yes
debug3: /etc/ssh/sshd_config:100 setting AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
debug3: /etc/ssh/sshd_config:101 setting AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
debug3: /etc/ssh/sshd_config:102 setting AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
debug3: /etc/ssh/sshd_config:103 setting AcceptEnv XMODIFIERS
debug3: /etc/ssh/sshd_config:109 setting X11Forwarding yes
debug3: /etc/ssh/sshd_config:133 setting Subsystem sftp internal-sftp
debug3: checking syntax for 'Match Group allow_sftp'
debug1: sshd version OpenSSH_5.3p1
debug3: Not a RSA1 key file /etc/ssh/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: rexec_argv[2]='-d'
debug1: rexec_argv[3]='-d'
debug1: rexec_argv[4]='-d'
debug1: rexec_argv[5]='-p'
debug1: rexec_argv[6]='9999'
debug3: oom_adjust_setup
Set /proc/self/oom_score_adj from 0 to -1000
debug2: fd 3 setting O_NONBLOCK
debug1: Bind to port 9999 on 0.0.0.0.
Server listening on 0.0.0.0 port 9999.
debug2: fd 4 setting O_NONBLOCK
debug1: Bind to port 9999 on ::.
Server listening on :: port 9999.

1 ответ1

1

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

Чтобы среда chroot работала для каталога /var/www/main/open каждый элемент пути должен принадлежать пользователю root и доступен для записи только пользователю root. Например

drwxr-xr-x. 6 root root 4.0K Apr  4 00:57 /var/www/

Кроме того, это должны быть настоящие каталоги, а не символические ссылки. Все это состоит в том, чтобы остановить кого-либо, вмешивающегося в среду chroot, например, переименовав один из каталогов вдоль пути и заменив его собственным.

Если компоненты каталога chroot не имеют достаточно ограниченных владений или разрешений, вы увидите ошибку следующего вида:

bad ownership or modes for chroot directory component "/a/b/"

Отладка следующим образом:

Запустите sshd в режиме отладки, работая на нестандартном порту. Преимущество этого состоит в том, что вам не нужно изменять конфигурацию sshd или останавливать / запускать sshd, который работает на стандартном порту 22. Кроме того, сообщения отладки выходят в том же окне, поэтому вам не нужно искать внешний файл сообщений.

/usr/sbin/sshd -d -d -d -d -p 9999

Подключитесь к "тестовому" sshd следующим образом:

sftp -oPort=9999 bob@localhost

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .