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

8

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

Там в любом случае ?

rɑːdʒɑ
источник

Ответы:

7

На основе 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пользователя.

souravc
источник
Как он может позаботиться о пользователе root?
rʒɑdʒɑ
не понял твою мысль? вы получите root как системный пользователь. Вы хотите включить root в список реальных пользователей?
souravc
да потому что он тоже пользователь.
rɑːdʒɑ
@rajagenupula теперь нормально?
souravc
Я хотел бы иметь пользователя root в списке реальных пользователей @S
rɑːdʒɑ
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
камил
источник
1
ID группы root и ID пользователя меньше 1000 прав. Спасибо за ответ
rɑːdʒɑ
@rajagenupula да, конечно. Исключением является только root. и в Ubuntu, как правило, root не может войти в систему по умолчанию.
Камил