На этот вопрос уже есть ответ:
Когда Я запускаю Ubuntu, есть список пользователей, которых я могу щелкнуть и ввести пароль для входа в систему.
Как мне получить список этих пользователей?
Я пытался получить пользователей из / etc / passwd
, выполнив следующие действия:
cut -d: -f1 /etc/passwd | sort -u
Но этот список был огромным, совсем не похож на тот маленький список, который появляется на начальном экране входа в систему.
Есть ли другая команда или файл, который мне следует проверить?
Пользователи создали с useradd
, имеют UID 1000†“60000, видят
$ grep "^UID_M*" /etc/login.defs
UID_MIN 1000
UID_MAX 60000
С этой информацией, которую мы можем отфильтровать /etc/passwd
для этих пользователей:
$ awk -F: '$3 >= 1000' /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
dessert:x:1000:1000:dessert,,,:/home/dessert:/bin/bash
test:x:1001:1001:test,,,:/home/test:/bin/bash
-F:
наборы :
как разделитель полей и $3 >= 1000
говорят awk
просто печатать строки, где третий столбец содержит значение, равное или больше, чем 1000
. Теперь мы только хотим имя пользователя, и nobody
не важно для нас, поэтому давайте обрежем вывод еще больше:
$ awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
dessert
test
Теперь мы также (&&
) тест для первого столбца, который не будет (!=
) строка nobody
и только распечатает первый столбец (print $1
).
Для входа в систему пользователи должны иметь действительный хешированный пароль. Посмотрите на второе поле (разделенное двоеточиями :) в файле / etc / shadow, и хэши большие, более 60 символов. Поля только с * или a! не может быть логин пользователей. Забавно, но проверка uuid неправильно используется в libvirt-qemu (64055 uuid), поэтому она отображается на экране входа в систему, даже если она не имеет действительного хэша и не может использоваться в качестве имени для входа. Создайте список входа с помощью:
sudo egrep -v ":\*:|:\!:" /etc/shadow
Добираться loginable
пользователи мы можем использовать /etc/passwd
файл начиная с каждого пользователя с a UID
больше, чем 499
и это не соответствует параметрам конфигурации в /etc/lightdm/user.conf
появится на экране входа в систему. Следовательно это получит этих пользователей:
cut -d: -f1-3 /etc/passwd | grep -E ".*:x:[0-9]{4,}" | grep -Ev "nobody"
Или использование более краткого awk
кодируйте, как предложено @dessert
awk -F: '$3>999&&$1!="nobody" { print $1" "$3 }' /etc/passwd
Awk
объяснение:
-F:
: Использовать :
как разделитель полей
$3>999&&$1!="nobody"
: возвращаемые значения то соответствие 3rd
поле это больше, чем 999
и 1-е поле, которое не соответствует строке nobody
Примером является пользователь nobody
с минимумом UID
выше 500
но не замечен на экране входа в систему, так как он перечислен как user
это не должно быть как замечено в /etc/lightdm/users.conf