加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 众所周知的UID是什么?

发布时间:2020-12-15 22:16:24 所属栏目:安全 来源:网络整理
导读:根据useradd联机帮助页,通常为系统帐户保留1000以下的UID. 我正在开发一个将作为自己的用户运行的服务.我知道在/ etc / services中可以找到众所周知的端口. 有没有一个地方我可以找到那里众所周知的UID?我想避免与其他人的UID崩溃. 解决方法 getpwent(3) 遍
根据useradd联机帮助页,通常为系统帐户保留1000以下的UID.

我正在开发一个将作为自己的用户运行的服务.我知道在/ etc / services中可以找到众所周知的端口.

有没有一个地方我可以找到那里众所周知的UID?我想避免与其他人的UID崩溃.

解决方法

getpwent(3)遍历密码数据库(通常是/ etc / passwd,但不一定;例如,系统可能位于NIS域中).应该在那里表示系统已知的任何UID.

为了演示,以下shell片段和C代码都应该打印系统上的所有已知UID.

$getent passwd | cut -d: -f3
#include <pwd.h>
#include <stdio.h>
int main() {
    struct passwd *pw;
    while ((pw = getpwent()))
        printf("%dn",pw->pw_uid);
}

UID 0总是root,传统上UID 65534是nobody,但你不应该依赖它,也不应该依赖它.正在使用的UID因操作系统,分发甚至系统而异 – 例如,Gentoo上的许多系统服务在安装时分配UID.没有使用UID的中央数据库.

此外,/ etc / login.defs定义了“系统UID”.在我的桌面上,它被配置为UID 100-999被视为系统帐户,UIDS 1000-60000是用户帐户,但这很容易更改.

如果您正在编写服务,我建议编写程序包安装脚本以根据需要分配UID,并且您的软件可配置为使用任何UID /用户名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读