Отдельные пользователи системы и пользователи сервиса

Мы все знаем, что у нас есть пользователи системы и пользователи услуг. Я ищу способ разделить их на пользователей системы и список пользователей услуг.

Есть ли способ?

8
задан 21 March 2014 в 15:48

2 ответа

На основе gid пользователи системы и пользователи услуг могут быть разделены следующим образом:

/etc/passwd содержит список для всех пользователей вместе с некоторой другой информацией. Пользователи службы или реальные пользователи имеют gid больше или равно 1000. Таким образом, список реальных пользователей может быть получен как

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Также список пользователей системы (gid < 1000) может быть извлечен как,

awk -F: '($3<1000){print $1}' /etc/passwd

Как это работает

Содержимое /etc/passwd похоже на

    root:x:0:0:root:/root:/bin/bash
    ...
    souravc:x:1001:1001:Souravc:/home/souravc:/bin/bash

При использовании awk с помощью -F: разделяет содержимое строки на несколько полей, рассматривая : как разделитель полей. Первое поле содержит имя пользователя, а третье поле имеет gid.

Следовательно, для извлечения реальных пользователей awk просто проверьте, что значение третьего поля больше, чем равно 1000, и оно не , ни один пользователь , и выводит первое поле, то есть имя пользователя.

Для просмотра списка всех пользователей системы просто проверяется, что gid меньше 1000, и печатается имя пользователя.

Редактировать

Как вы хотите перечислить root (gid = 0) в реальном списке пользователей. Получить реальных пользователей как,

awk -F: '($3==0)||($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd

Получить системных пользователей как,

awk -F: '($3<1000)&&($1!="root"){print $1}' /etc/passwd

Примечание Я всегда игнорирую nobody пользователя.

0
ответ дан 21 March 2014 в 15:48

Перечислять локальный (пользователи системы), чем может войти и иметь homedir и GID меньше чем 1 000

 cat /etc/passwd | cut -d: -f 1,3,6 | grep "[1-9][0-9][0-9][0-9]" | grep "/home" | cut -d: -f1

Перечислять всех других пользователей: (у главным образом пользователей системы и есть GID меньше чем 1 000):

cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1
2
ответ дан 21 March 2014 в 15:48

Другие вопросы по тегам:

Похожие вопросы: