Відповіді:
TL; DR: Ні, пароль зберігається як хеші, які неможливо (в цілому) відновити.
Linux за замовчуванням ніде не зберігає текстові паролі . Вони хешовані або іншим чином шифруються за допомогою різних алгоритмів. Отже, загалом, ні, це не можливо зі збереженими даними.
Якщо у вас є паролі, які зберігаються десь крім /etc/passwd
бази даних, вони можуть зберігатися таким чином, що це дозволяє. htpasswd
файли можуть містити зашифровані паролі, а інші програми можуть зберігати слабкі хеши або звичайні текстові паролі з різних (зазвичай поганих) причин.
Також файли конфігурації користувача можуть містити незашифровані паролі або слабко захищені паролі з різних причин - захоплення вмісту з інших служб .netrc
, або прості автоматизовані речі можуть включати пароль.
Якщо паролі хешируються або шифруються за допомогою старого, слабкого алгоритму (3DES, MD5), можна було б розробити досить ефективно / дешево, який саме був пароль - хоч і шляхом атаки на дані, а не просто змінити перетворення. (наприклад: такі речі, як http://project-rainbowcrack.com/ або http://www.openwall.com/john/ )
Оскільки ви є root, ви також можете атакувати пароль користувача на іншому рівні - замініть двійковий код для входу, або sudo, або частину PAM тощо, на щось, що захопить пароль при його введенні.
Так, конкретно, ні, але в цілому наявність кореневого доступу полегшує отримання інформації про користувачів через різні бічні канали.
/etc/shadow
, криптографічний хеш - функція , сіль і злом паролів
На відміну від деяких інших відповідей тут, я б сказав, що проста відповідь на це та багато інших питань, які закінчуються на "якщо у вас є корінь" - ТАК.
В основному, root може робити все на машині, що може зробити сама система. Система може прийняти ваш пароль, тому root може прийняти ваш пароль, або його власний замість вашого, з достатньо зусиль. Що ще важливіше, він може просто змінити ваш пароль, або ПОБУТИТИ вас.
Зокрема, паролі зазвичай шифруються. Зазвичай це якийсь так званий "односторонній" алгоритм, який генерує число (хеш), який можна використовувати для перевірки пароля, але, як правило, не повертати номер і повернути пароль знову. Отже, справа не лише в тому, щоб прочитати файл, щоб отримати чийсь пароль.
Це означає, що ви МОЖЕТЕ прочитати їх історію оболонки та історію входу, де вони, швидше за все, ввели свій пароль замість свого імені користувача в якийсь момент, або ввели його в оболонку, а не в запиті пароля. У такому випадку це було б простим текстом. Це тривожно часто зустрічається на текстових терміналах, не маючи хороших рішень, про які я знаю.
Однак, навіть відклавши цю проблему, "одностороннє" шифрування насправді не є одним із способів. Навколо існує безліч інструментів, які пройдуть безліч комбінацій парольних фраз, шифруючи їх тим самим однобічним процесом, поки не знайдете той, який відповідає. Потім вони знають пароль, який отримає доступ (хоча як root, вони ВИНАГО мають доступ на ЦІй машині).
Гірше, що існують веселкові таблиці, на які попередньо обчислюються відповіді на вищезазначений процес: люди вже створили оригінальний пароль, який походить із заданого зашифрованого пароля. Використовуючи їх, це простий пошук - не потрібні трудомісткі спроби злому.
Знову ж, доступ до кореневого рівня - це те, що потрібно захистити. З цим порушено всю машину і все на ній. Настав час почати з початку, включаючи інформування всіх своїх користувачів, що вашому бізнесу більше не можна довіряти, щоб захистити їх конфіденційність. І так, це може означати вихід з бізнесу.
Якщо у вас є, root
то ви можете запустити зловмисник паролів проти /etc/shadow
(припускаючи локальні паролі, а не LDAP чи Kerberos тощо). Це може бути неефективним, якщо вони вибирають хороші паролі та система налаштована на використання сильного хешування паролів. Але паролі системи не зберігаються в простому тексті; навіть не доступні паролі root
.
Усі паролі зберігаються у /etc/shadow
файлі. Ви можете відкрити цей файл за допомогою кореневого доступу та побачити hash value
ці паролі для кожного користувача (навіть користувача root).
Якщо у вас є якесь програмне забезпечення для розшифровки пароля, ви не можете перетворити ці хеш-значення назад у звичайний текст.
Але все ж якщо у вас є доступ до root користувача, ви можете змінити пароль будь-якого звичайного користувача, скориставшись наступною командою та отримати доступ до їх облікового запису.
root@localhost$ passwd pradeep
Це попросить вас про новий пароль, який ви хочете встановити для користувача pradeep
. Таким чином ви можете змінити passwd на prodeep.
Тепер ви можете отримати доступ з його акаунта:
root@localhost$ su pradeep
Це призведе до переходу на попередній користувач, і ви отримаєте такий термінал:
pradeep@localhost$