ограничить доступ пользователей сервера к определенному каталогу в Linux

Thank you for reading this post, don't forget to subscribe!

Нуж­но забло­ки­ро­вать сер­вер Linux, что­бы опре­де­лен­ные уда­лен­ные поль­зо­ва­те­ли мог­ли полу­чить доступ толь­ко к опре­де­лен­но­му ката­ло­гу и толь­ко для загруз­ки и выгруз­ки файлов

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

Что вы може­те сде­лать, так это огра­ни­чить этих поль­зо­ва­те­лей с помо­щью chroot jail.

Этим вы суще­ствен­но огра­ни­чи­ва­е­те воз­мож­но­сти этих поль­зо­ва­те­лей в вашей системе.

Фак­ти­че­ски, любой поль­зо­ва­тель, огра­ни­чен­ный chroot jail, может:

  • Полу­чить доступ к сер­ве­ру толь­ко через sftp
  • полу­чить доступ толь­ко к опре­де­лен­но­му каталогу

Как создать группу с ограниченным доступом и добавить пользователей на сервере Linux

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

Создай­те группу:

sudo groupadd restricted

Затем добавь­те поль­зо­ва­те­ля в груп­пу с помо­щью команды:

sudo usermod -g restricted USERNAME

Где USERNAME – поль­зо­ва­тель, кото­ро­го вы хоти­те доба­вить в груп­пу с огра­ни­чен­ным доступом.

Как настроить SSH

Открой­те файл кон­фи­гу­ра­ции демо­на SSH с помощью:

sudo nano /etc/ssh/sshd_config

Най­ди­те стро­ку (рядом с ниж­ней частью):

Subsystem sftp /usr/lib/openssh/sftp-server

Изме­ни­те эту стро­ку на:

Subsystem sftp internal-sftp

В ниж­ней части фай­ла добавь­те следующее:

Сохра­ни­те и закрой­те файл.

Пере­за­пу­сти­те SSH с помощью:

sudo systemctl restart ssh

Теперь вер­ни­тесь на дру­гую маши­ну и попы­тай­тесь вой­ти на сер­вер по SSH с поль­зо­ва­те­лем, например:

ssh olivia@192.168.1.147

Вы уви­ди­те предупреждение:

This service allows sftp connections only. Connection to 192.168.1.147 closed.

Что­бы любой поль­зо­ва­тель из груп­пы с огра­ни­чен­ным досту­пом мог вой­ти на сер­вер, он дол­жен исполь­зо­вать sftp сле­ду­ю­щим образом:

Где USERNAME – имя поль­зо­ва­те­ля, а SERVER – IP-адрес или домен сервера.

После успеш­но­го вхо­да в систе­му они ока­жут­ся в при­гла­ше­нии sftp, где смо­гут пере­да­вать фай­лы туда и обрат­но с помо­щью команд put и get.

Огра­ни­чен­ные поль­зо­ва­те­ли могут загру­жать фай­лы толь­ко в свои домаш­ние каталоги.

Когда поль­зо­ва­тель с огра­ни­чен­ны­ми пра­ва­ми вхо­дит в систе­му, он нахо­дит­ся в ката­ло­ге /home.

Поэто­му для успеш­ной загруз­ки им при­дет­ся перей­ти в свой домаш­ний ката­лог, выпол­нив такую коман­ду, как:

cd olivia

Попав в свой домаш­ний ката­лог, мож­но выпол­нить коман­ду типа:

put file1

Пока этот файл нахо­дит­ся в теку­щем рабо­чем ката­ло­ге маши­ны, с кото­рой они вошли на сер­вер, он будет загру­жать­ся нормально.

Если этим поль­зо­ва­те­лям нуж­но толь­ко загру­зить фай­лы на локаль­ную маши­ну, они могут исполь­зо­вать такую коман­ду, как:

get file1

это очень огра­ни­чен­ная кон­фи­гу­ра­ция с очень огра­ни­чен­ны­ми слу­ча­я­ми использования