Потому что так мы делаем вещи в стране *nix. :) Это дает немного дополнительной безопасности, не отображая кучу звездочек. Таким образом, тот, кто видит ваш экран, не сможет узнать длину вашего пароля.
Но я должен признать, что немного пугает отсутствие обратной связи при вводе пароля, особенно если у вас плохая клавиатура. Поэтому большинство графических диалоговых окон ввода пароля в системах *nix дают вам какую-то обратную связь, например, с помощью звездочек или, чаще всего, ⬤. А некоторые даже отображают каждый символ по мере ввода, но затем немедленно заменяют его на *
или ⬤, но это не очень хорошо, если кто-то может заглядывать вам через плечо. Или если у них есть устройство, которое может перехватывать и декодировать видеосигнал, передаваемый с вашего компьютера на монитор.
[Are there] other tools/commands geared to working with and debugging namespaces ?
nsenter является наиболее важным. Есть еще кое-что, но не очень много. Я думаю, что могу с пользой попытаться перечислить их все.
/proc/[pid]/ns/*
-Вы уже знаете об этом, потому что смотрели на nsenter
. Есть еще пара особенностей в namespaces (7):readlink
/ ls -l
покажет тип пространства имен и уникальный идентификатор. /proc
для вас и перечисляет все различные используемые пространства имен. /proc/[pid]/mountinfo
описывает пространство имен монтирования. Это задокументировано в proc (5).
Будьте осторожны при первом просмотре, потому что столбцов много. Например, есть два разных столбца «options» с потенциально разными значениями для rw
/ ro
. Разница в том, что столбец для «параметров монтирования» может различаться в зависимости от монтирования bind -одной и той же файловой системы.
findmnt
— стандартная команда для просмотра смонтированных файловых систем. У него есть опция --task TID
-, поэтому вы можете использовать ее для разбора файла mountinfo
любого процесса. (Значение PID также является действительным TID ).
/proc/[pid]/uid_map
и /proc/[pid]/gid_map
, для пользователей _пространств имен .
ip
, используемая для управления сетевыми интерфейсами :net
в /proc/[pid]/ns/
, как описано выше.ip link
может отображать информацию о veth
одноранговых узлах, включая локальный идентификатор сети, в которой находится одноранговый узел. ip netns list-id
или lsns -t net
будут перечислены сетевые пространства имен, включая этот локальный идентификатор. Я не совсем уверен, как вы работаете с этими локальными идентификаторами, это кажется немного неясным. Но я думаю, что этот QA упоминает все, что вы можете с ними сделать.:Как найти сетевое пространство имен veth-пира ifindex?ip
также позволяет перемещать интерфейс с одной сети на другую. Хотя дело не столько в отладке. go
контейнеры» Адаптировано из Как -отлаживать работающий контейнер Docker из отдельного контейнера:
Возникла проблема с использованием nsenter
. Если вы введете пространство имен монтирования контейнера, вы сможете запускать только те команды, которые были включены в контейнер. Но суть контейнеров Docker в том, что в них нужно включать только само приложение!
Хитрость в том, что вы можете получить доступ к файлам внутри контейнера, используя /proc/[pid]/root/
. (Задокументировано в proc(5)
).
Это очень удобно, если вы вошли в пространство имен PID контейнера, потому что вы можете использовать /proc/1/root/
. В этот момент вам не нужно искать правильный PID :-).
После входа в пространство имен PID также может быть весьма удобно, если вы знаете, что процесс, к которому вы хотите подключить отладчик, будет иметь PID 1 (или, возможно, PID 2 )внутри контейнера :-). В качестве альтернативы, если ваше приложение/контейнер состоит из нескольких процессов -, вы можете использовать свою любимую команду ps
для просмотра различных процессов.