Як у списку linux я перерахувати всіх користувачів, які мають кореневі привілеї (а ще краще, всіх користувачів загалом разом із тим, чи мають вони root або ні)?
Як у списку linux я перерахувати всіх користувачів, які мають кореневі привілеї (а ще краще, всіх користувачів загалом разом із тим, чи мають вони root або ні)?
Відповіді:
Не забудьте змінити кореневий пароль. Якщо у будь-якого користувача є UID 0, крім root, він не повинен. Погана ідея. Перевіряти:
grep 'x:0:' /etc/passwd
Знову ж таки, ви не повинні робити цього, а перевірити, чи є користувач кореневою групою:
grep root /etc/group
Щоб побачити, чи може хтось виконувати команди як root, перевірте sudoers:
cat /etc/sudoers
Щоб перевірити наявність біта SUID, який дозволяє виконувати програми з правами root:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1, зокрема для перевірки SUID.
Щоб дізнатись, хто є UID 0:
getent passwd 0
Щоб побачити, хто в групах root
, wheel
adm
і admin
:
getent group root wheel adm admin
Щоб перерахувати всіх користувачів та групи, до яких вони належать:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
натомість, насправді правильний. Просто не забудьте перевірити / etc / sudoers.
Чистий корінь - це ідентифікатор користувача "0".
Усі користувачі системи знаходяться у файлі / etc / passwd:
less /etc/passwd
Ті, хто є root, мають "0" як ідентифікатор користувача, який є 3-м стовпцем. Ті, у кого група "0", як група (4-й стовпець), можуть також мати деякі кореневі привілеї.
Далі ви хочете переглянути групи та побачити, хто є додатковим членом груп "root" або "wheel" або "admin":
less /etc/group
Користувачі, перелічені в цих групах, можуть мати деякі кореневі привілеї, особливо за допомогою команди "sudo".
Заключна річ, яку ви хочете перевірити - це конфігурація "sudo" і побачити, хто в списку має право на виконання цієї команди. Цей файл сам добре задокументований, тому я його не відтворюю тут:
less /etc/sudoers
Це охоплює основні області того, хто може мати кореневий доступ.
consolehelper
і PackageKit
.)
getent passwd
слід перераховувати всіх користувачів системи (включаючи root) у форматі passwd, незалежно від бази даних, де вони визначені.
Щоб надрукувати всіх користувачів
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
Щоб друкувати лише тих користувачів з UID 0, як це було сказано іншими, користувачі з неявними кореневими привілеями:
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
getent passwd
замість цього. Для вашого першого прикладу "надрукувати всіх користувачів" скоріше спробуйте:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Щоб отримати швидкий список усіх користувачів, спробуйте натиснути вкладку двічі (для автоматичного завершення) після введення passwd
команди, після якої пробіл. Це працює і з su
командою.
Потрібно робити як користувач, що користується привілеєм.