Предсказание UID для нового пользователя в определенном диапазоне из / etc / passwd - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно создать пользователей с UID в диапазоне от 8000 до 9000 в / etc / passwd.Есть ли способ предсказать следующий UID для использования со строкой команды.

Я знаю, что приведенная ниже команда дает мне UID для использования после последнего UID, присутствующего в файле passwd:

awk -F: 'BEGIN {maxuid=0;} {if ($3 > maxuid) maxuid=$3;} END {print maxuid+1;}' /etc/passwd

Что мне нужно изменить в командной строке, чтобы получить следующий UID для использования в диапазоне 8000 - 9000?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Это заполнит первый доступный идентификатор, даже если в используемых идентификаторах открыты отверстия (например, используются 8000 и 8002, но 8001 нет, и поэтому следует использовать следующий идентификатор, выбранный для использования):

awk -F: '
    { used[$3] }
    END {
        avail = 0
        for (i=8000; i<=9000; i++) {
            if ( !(i in used) ) {
                avail = i
                break
            }
        }
        print avail
    }
' /etc/passwd
0 голосов
/ 18 мая 2018

Не совсем ясно, исходя из ваших утверждений, следующие могут помочь вам в этом.

Решение 1-е: В случае, если вы хотите распечатать все записи пользователя, чьиUID находится в диапазоне от 8000 до 9000, затем:

awk -F":" '$3>=8000 && $3<=9000' /etc/passwd

Решение 2-е: В случае, если вам нужно иметь максимальное число от 8000 до 9000 uidтогда может помочь следующее.

awk -F":" '$3>=8000 && $3<=9000{max=max>$3?max:$3} END{if(max){print max} else {print "No uid in between 80000 to 9000"}}' /etc/passwd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...