Аппаратные средства, ядро и программы пространства пользователя могут иметь различные размеры слова ¹.
Вы видите, является ли ЦП 64-разрядным, 32-разрядным, или способным к обоим путем проверки flags
строка в /proc/cpuinfo
. Необходимо знать возможные флаги на семействе архитектуры. Например, на i386/amd64 платформах, lm
флаг определяет amd64-способные центральные процессоры (центральные процессоры, которые не имеют того флага, i386-только).
grep -q '^flags *:.*\blm\b' /proc/cpuinfo # Assuming a PC
Вы видите, является ли ядро 32-разрядным или 64-разрядным путем запросов архитектуры с uname -m
. Например, i[3456]86
являются 32-разрядными в то время как x86_64
является 64-разрядным. Обратите внимание, что на нескольких архитектуре, 64-разрядное ядро может запустить 32-разрядные программы пространства пользователя, поэтому даже если uname -m
показывает 64-разрядное ядро, нет никакой гарантии, что 64-разрядные библиотеки будут доступны.
[ "$(uname -m)" = "x86_64" ] # Assuming a PC
Вы видите то, что доступно в пространстве пользователя путем запросов поддержки LSB с lsb_release
команда. Более точно, lsb-release -s
печать a :
- разделенный список поддерживавших функций LSB. Каждая функция имеет форму module-version-architecture
. Например, доступность библиотеки ix86 C обозначается core-2.0-ia32
, в то время как core-2.0-amd64
аналог для amd64. Не каждое распределение объявляет все доступные модули LSB, хотя, таким образом, больше может быть доступным, чем обнаруживаемо таким образом.
Вы видите то, для чего создаются программы архитектуры в системе с командой как file /bin/ls
. Обратите внимание, что возможно иметь смешанную систему; даже если ls
64-разрядная программа, Вашей системе можно было установить библиотеки для запущения 32-разрядных программ, и (реже) наоборот.
Можно узнать предпочтительный размер слова для разработки (предполагающий, что компилятор C доступен) путем компиляции программы C с 5 строками, которая печатает sizeof(void*)
или sizeof(size_t)
. Можно получить ту же информацию немного менее надежным способом ² путем выполнения команды getconf LONG_BIT
.
#include
int main() {
printf("%d\n", (int)sizeof(void*));
return 0;
}
Что касается виртуальных машин, можете ли Вы выполнить 64-разрядный VM в 32-разрядной системе или наоборот зависите от Вашей технологии виртуальной машины. Посмотрите в особенности, Как я могу установить виртуальную машину Linux на 64 бита на Linux на 32 бита?
¹ “размер Word” обычное название того, что Вы называете разрядностью.
² Это может быть ненадежно, если кто-то установил альтернативный компилятор C с другой целевой архитектурой, но сохранил системное значение по умолчанию getconf
.
TL; DR: Нет, пароль хранятся как хеши, которые не могут (в целом) быть восстановлены.
Linux не хранит незашифрованные пароли нигде по умолчанию. Они хешируются или иначе шифруются через множество алгоритмов. Так, в целом, нет, это не возможно с хранившими данными.
Если Вам сохранили пароли где-нибудь кроме /etc/passwd
база данных, они могут быть сохранены способом, который позволяет это. htpasswd
файлы могут содержать wealy зашифрованные пароли, и другие приложения могут сохранить более слабые хеши или незашифрованные пароли по различным (обычно плохим) причинам.
Кроме того, пользовательские конфигурационные файлы могут содержать незашифрованные пароли или слабо защищенные пароли по различным причинам - fetchmail захват содержания от другого сервиса, .netrc
, или простые автоматизированные вещи могут включать пароль.
Если бы пароли хешируются или шифруются с более старым, слабым алгоритмом (3DES, MD5), было бы возможно разработать обоснованно эффективно / дешево, чем пароль был - хотя посредством нападения на данные вместо того, чтобы просто инвертировать преобразование. (например: вещи как http://project-rainbowcrack.com/ или http://www.openwall.com/john/)
Так как Вы - корень, на который также возможно напасть, пароль пользователя на другом уровне - заменяют двоичный файл входа в систему, или sudo или часть PAM, и т.д., с чем-то, что получит пароль, когда это будет введено.
Так, в определенном, нет, но в общем корневом доступе наличия действительно помогает достигнуть пользовательские детали через различные каналы стороны.
В отличие от некоторых других ответов здесь, я сказал бы, что простой ответ, к этому и многим другим вопросам, которые заканчиваются, "если у Вас есть корень", является ДА.
В основном корень может сделать что-либо на машине, которую может сделать сама система. Система может принять Ваш пароль, таким образом, корень может принять Ваш пароль или его собственное, на месте ваше, с достаточным усилием. Что еще более важно, он может просто изменить Ваш пароль или СТАТЬ Вами.
А именно, пароли обычно шифруются. Это обычно - своего рода так называемый "односторонний" алгоритм, который генерирует число (хеш), который может использоваться, чтобы проверить пароль, но обычно не инвертировать число и возвращать пароль снова. Так, это не вопрос просто чтения файла для получения чьего-то пароля.
Тем не менее Вы, CAN прочитал их историю оболочки и историю входа в систему, где они, скорее всего, ввели свой пароль вместо их имени пользователя в какой-то момент или ввели его в оболочке вместо при подсказке пароля. В этом случае это был бы простой текст. Это волнующе распространено на основанных на тексте терминалах без хороших решений, о которых я знаю.
Однако даже откладывая ту проблему, "одностороннее" шифрование не является действительно одним путем. Существует много инструментов вокруг этого, пройдет много комбинаций паролей, шифруя их с тем же односторонним процессом, до вашего того находки, который соответствует. Они затем знают пароль, который получит доступ (хотя как корень, у них УЖЕ есть доступ на ТОЙ машине).
Хуже, существуют таблицы радуги, которые предварительно вычисляются ответы на вышеупомянутый процесс: люди уже генерировали старый пароль, который прибывает из данного зашифрованного пароля. Используя их, это - простой поиск - никакие трудоемкие требуемые попытки взламывания.
Снова, доступ корневого уровня является вещью защитить. С поставленным под угрозу, вся машина, и все на нем поставлено под угрозу. Пора запуститься, включая информирование всех Ваших пользователей, что Вашему бизнесу больше нельзя доверять для защиты их конфиденциальности. И, да, который мог означать обанкротиться.
Если Вы имеете root
затем можно выполнить взломщика пароля против /etc/shadow
(принимающий локальные пароли и не LDAP или Kerberos, и т.д.). Это не может быть эффективно, если они выбирают хорошие пароли, и система настроена для использования хеширования сильного пароля. Но системные пароли не хранятся в простом тексте; пароли не непосредственно доступны даже root
.
Все пароли хранятся в /etc/shadow
файл. Можно открыть этот файл с помощью корневого доступа и видеть hash value
из этих паролей для каждого пользователя (даже пользователь root).
Если у Вас нет вида программного обеспечения дешифрования пароля, Вы не можете преобразовать их значение хэш-функции назад к обычному тексту.
Но все еще если у Вас есть доступ к пользователю root, можно изменить пароль любого обычного пользователя при помощи следующей команды и получить доступ к их учетной записи.
root@localhost$ passwd pradeep
Это попросит у Вас нового passwd, который Вы хотите установить для пользователя pradeep
. Таким образом, можно изменить passwd для pradeep.
Теперь можно получить доступ из его учетной записи:
root@localhost$ su pradeep
Это приведет к переключению на pradeep пользователя, и Вы получите терминал как это:
pradeep@localhost$
/etc/shadow
, криптографическая хеш-функция, соль и завершение – Tim 09.04.2012, 14:47