Мне нужно создать пользователя в Linux, используя putty, который может получить доступ только к определенной папке. Я создал пользователя с помощью useradd, но пользователь может получить доступ ко всем папкам в основной учетной записи.

1 ответ1

1

Вам нужно установить ssh chroot jail.

Смотрите эту инструкцию.

Как спросил @Romeo , я включил здесь важные части со связанной страницы.

Создать каталог для пользователя:

# mkdir -p /home/test

Этот каталог должен содержать необходимые файлы и каталоги для поддержки сеанса пользователя, для этого требуются по крайней мере оболочки, обычно sh, и базовые /dev-узлы, такие как устройства null, zero, stdin, stdout, stderr и tty:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

Изучите два числа из списка - есть старшие и младшие номера. Создайте команду /dev с mknod (не копируйте и не вставляйте команды ниже, это только пример, используйте правильные числа):

# mkdir -p /home/test/dev/      
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8`

Установить разрешения:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

Создайте каталог bin и скопируйте в него файлы /bin /bash:

# mkdir -p /home/test/bin
# cp /bin/bash /home/test/bin/

Определите bash необходимые общие библиотеки и скопируйте их(не копируйте и не вставляйте команды ниже, это только пример) в директорию lib:

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2}  /home/test/lib64/

Создайте пользователя SSH с помощью команды useradd и установите для него безопасный пароль:

# useradd tecmint
# passwd tecmint

Создайте каталог общих настроек тюрьмы chroot, /home /test /etc и скопируйте обновленные файлы учетной записи (/etc /passwd и /etc /group) в этот каталог:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

Откройте файл sshd_config и добавьте строки ниже в файл.

# vi /etc/ssh/sshd_config
    #define username to apply chroot jail to
    Match User tecmint
    #specify chroot jail
    ChrootDirectory /home/test

Сохраните файл, выйдите и перезапустите SSHD:

 # systemctl restart sshd

Проверьте, работает ли установка chroot jail как ожидалось. Теперь пользователь может выполнять только команды bash и его встроенные команды, такие как (pwd, history, echo и т.д.).

 # ssh tecmint@192.168.0.10

Создайте домашний каталог для пользователя SSH:

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

Установите несколько пользовательских команд, таких как ls, date, mkdir, в каталог bin:

# cp /bin/ls /home/test/bin/
# cp /bin/date /home/test/bin/
# cp /bin/mkdir /home/test/bin/

Проверьте общие библиотеки на наличие команд выше и переместите их в каталог chrooted jail library:

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Это конец. Но если вам нужно разрешить только соединения sftp, добавьте строку ниже в файл /etc /ssh /sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Сохраните файл и выйдите. Затем перезапустите службы SSHD:

# systemctl restart sshd

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