Это обычно просто C
. Команды ls
и pwd
произойдите из GNU Coreutils
пакет в (большинство?) Дистрибутивы Linux (и возможно некоторые другие системы). Можно найти код их домашней страницы.
Для coreutils
а именно, Вы создаете их с обычными шагами: после распаковки источника, проблемы:
./configure --prefix=/some/path
# type ./configure --help to get the available options
make
make install # could require root access depending on the path you used
Будьте осторожны - устанавливающий основные утилиты как те, которые по копии Вашего распределения их, плохая идея. Используйте любой диспетчер пакетов, с которым Ваша система идет для этого. Можно установить на другом префиксе хотя (устанавливающий где-нибудь в корневой каталог хорошая идея, если Вы хотите экспериментировать).
Обратите внимание на это, хотя существует a cd
исполняемый файл, cd
Вы будете использовать при большинстве обстоятельств, не отдельный исполняемый файл. Это должна быть сборка оболочки - в (иначе, это не могло изменить текущий каталог оболочки - это должно быть сделано самим процессом), таким образом, это записано на том же языке как оболочка (который часто является C
также).
Другие примеры:
Можно найти намного больше из них онлайн.
Если только сервер, содержащий пакеты, поставлен под угрозу, а не частный ключ подписи, нет очень, чтобы сделать. Старый ключ остается допустимым, и пакеты, измененные взломщиком, будут обнаружены как таковые. Я предполагаю, что Ваш вопрос - то, что происходит, если ключ подписи поставлен под угрозу.
Пока старый ключ не истек, люди продолжат загружать старые пакеты, в блаженном неведении, что ключ был поставлен под угрозу. Идеально инструмент управления пакета должен проверить, что ключ не был отменен (я не знаю, если склонный, конфетка и друзья делают это). Однако первый шаг в ответе на компромисс должен был бы остановить распределительные пакеты, подписанные со старым ключом, и запустить распределительные пакеты, подписанные с нового ключа. Таким образом, любой злонамеренно измененный пакет задержался бы только в зеркалах, прежде чем они будут обновлены.
Когда люди начнут получать пакеты, подписанные с новым ключом, они получат сообщение об ошибке, говоря им, что пакеты не подписаны. Это, надо надеяться, запросит их в запрос, что происходит и пытается получить новый ключ.
О компромиссе также объявят в списках рассылки безопасности и в различных каналах отраслевых новостей. Таким образом, если Вы будете следовать за ними, то Вы получите уведомление. Конечно, необходимо опасаться их также: взломщик мог бы поставить под угрозу сервер списка или учетную запись разработчика и отправить поддельное ключевое предупреждение компромисса с новым открытым ключом, который является на самом деле для его собственного закрытого ключа.
Нет никакого чудодейственного средства для распределения нового ключа. Вам нужен доверяемый канал, чтобы распределить ключ во-первых или более точно установить доверие новому ключу. Это точно столь же трудно как устанавливающий доверие старому ключу. (Другими словами, большинство людей получит его от веб-сайта HTTP или от неподписанного образа CD.) Можно получить новый ключ от веб-сайта HTTPS, если Вы полагаете, что веб-сайт (и CA, который сделал сертификат сайта и браузер, который Вы используете и его доверяемая основа!) не был поставлен под угрозу. Или если Вы знаете и доверяете кому-то, у кого есть ключ, можно попросить у них его.
Обратите внимание, что выше, я использую “пакет” в свободном смысле, принимая простую модель, где пакеты непосредственно подписываются с ключом подписи распределения. На самом деле, в некоторых дистрибутивах (например, все те, которые используют APT), то, что подписывается, является файлами, содержащими список криптографических контрольных сумм пакетов, и существует двухэтапный процесс, посредством чего установщик проверяет, что пакет имеет ожидаемую контрольную сумму, и что список имеет контрольную сигнатуру. Принцип является тем же: взломщик, который поставил под угрозу ключ, введет и злонамеренные пакеты и перечислит файлы с контрольными суммами для злонамеренных пакетов, подписанных с поставленным под угрозу ключом. Разрешение требует восстановления и файлы списка и пакеты.
Стандартный процесс для предоставления нового "авторитетного" ключа через пакет, который подписывается со старым ключом. Если Вы доверяете старому ключу (и Вы доверяете GPG), затем, новый распределяется в пакете, подписанном со старым. Теперь, можно начать использовать новый.
Пакеты могут быть, держатся небезопасный сервер, поскольку каждый пакет будет проверен на корректную подпись.
Проблема происходит, только упаковочный закрытый ключ, поставлен под угрозу. Т.е. главный ключ, которые подписывают все пакеты. (Debian SecureApt, Ubuntu SecureApt, Fedora). Если бы это было бы происходить однажды, то это было бы действительно ужасно.