【问题标题】:Predict UID for new user within a specific range from /etc/passwd从 /etc/passwd 预测特定范围内新用户的 UID
【发布时间】:2018-10-28 13:40:49
【问题描述】:

我必须在 /etc/passwd 中创建 UID 范围为 8000 到 9000 的用户。有没有办法预测下一个要与命令行一起使用的 UID。

我知道下面的命令给了我在 passwd 文件中最后一个 UID 之后使用的 UID:

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

为了获得下一个要在 8000 - 9000 范围内使用的 UID,我必须在命令行中进行哪些更改?

提前致谢

【问题讨论】:

  • 我会尝试类似if ($3+0 > maxuid && $3+0 >= 8000 && $3+0 <=9000) 注意它可以返回1
  • @user2728615,请在您的问题中清楚地提及细节,以便我们可以帮助您。

标签: shell sorting awk


【解决方案1】:

这将填充第一个可用的 ID,即使已使用的 ID 中存在漏洞(例如,使用了 8000 和 8002,但未使用 8001,因此应该是下一个要使用的 ID):

awk -F: '
    { used[$3] }
    END {
        avail = 0
        for (i=8000; i<=9000; i++) {
            if ( !(i in used) ) {
                avail = i
                break
            }
        }
        print avail
    }
' /etc/passwd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多