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

7

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

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

    
задан Ten-Coin 13.02.2014 в 17:31
источник

2 ответа

6

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

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

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

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

awk -F: '(<1000){print }' /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 и печатает имя пользователя.

Edit

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

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

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

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

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

    
ответ дан souravc 14.02.2014 в 18:00
источник
2

Перечислить локальных (системных пользователей), чем войти в систему и иметь homedir и GID менее 1000

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

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

cat /etc/passwd | cut -d: -f 1,3,6 | grep -v "[1-9][0-9][0-9][0-9]"  | cut -d: -f1
    
ответ дан kamil 13.02.2014 в 17:56