Как создать менеджер пакетов

Строка sshd: username@ipaddressв /etc/hosts.allowприменяла бы ограничение к службе sshd(и только в том случае, если она была скомпилирована с поддержкой libwrapили настроена на использование оболочек TCP ). Это вообще ничего не делает для proftpd.

Если для подключения вы используете режим scpили SFTPWinSCP, вы фактически используете службу sshd, и proftpdвообще не будет задействован. Если вы используете режим FTPили FTPS, то proftpdможет справиться с ними, а sshdвообще не будет задействован.

(Запуск ненужной службы с плохо -понятной конфигурацией на сервере, -доступном в Интернете, напрашивается на заражение вредоносным ПО. Ради себя и других пользователей EC2, пожалуйста, не делайте этого.)

Использование формы sshd: username@ipaddressв /etc/hosts.allowтребует, чтобы на клиенте была запущена identdили аналогичная служба. identd— это служба, которая раскрывает локальное имя пользователя, связанное с активным TCP-соединением, всем, кто спрашивает. В наше время это считается опасным и ненужным раскрытием информации, поэтому служба identdбольше не включена и обычно даже не устанавливается по умолчанию в современных системах.

А если клиент не является Unix-подобной системой -, поддерживаемой кем-то, кому вы доверяете, удаленная служба identdможет быть настроена на ложь, даже если она существует и не блокируется брандмауэрами. Подводя итог, добавление имен пользователей в /etc/hosts.allowвряд ли будет полезным в современной сетевой среде.

Сначала вам нужно будет принимать входящие подключения от каждого авторизованного клиентского хоста, а затем, когда они раскрывают имя пользователя, к которому они хотят подключиться, как (в рамках процедуры аутентификации ), вы можете отклонить не -соответствующие комбинации.

С помощью sshdвы можете сделать это, добавив что-то вроде этого в ваш файл /etc/ssh/sshd_config:

AllowUsers user1@ip.address.1 user2@ip.address.2...

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

0
20.11.2020, 12:15
1 ответ

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

  1. Если вы не хотите использовать собственный формат пакета, например. что-то вроде RPM или DEB, вы можете просто использовать tar.gz

  2. В этом файле tar.gz вы можете иметь файлы пакетов и вспомогательные файлы, которые содержат :описание, список файлов (, если вы хотите, чтобы пользователь мог искать файлы без извлечения всего архива )и зависимости (могут быть простым списком файлов ).

  3. Построение зависимостей — это тоже не высшая математика. Вы можете использовать lddи/или strace.

  • Теперь вам нужно создать базу данных файлов пакетов и зависимостей, которые вы можете хранить, например, в. База данных Berkley или SQLite DB.

  • Затем вам нужно найти способ сканировать эти зависимости всякий раз, когда пользователь хочет установить новый пакет

  • Наконец, вам нужна база данных установленных файлов и пакетов.

Все это требует тонны кода. Лучше использовать то, что уже есть.

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

0
18.03.2021, 22:48

Теги

Похожие вопросы