![对于 Debian 软件包文件所有者来说,合适的 UID 和 GID 是什么?](https://linux22.com/image/80970/%E5%AF%B9%E4%BA%8E%20Debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%96%87%E4%BB%B6%E6%89%80%E6%9C%89%E8%80%85%E6%9D%A5%E8%AF%B4%EF%BC%8C%E5%90%88%E9%80%82%E7%9A%84%20UID%20%E5%92%8C%20GID%20%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我目前正在构建自己的 aptitude 存储库,并在确保所有包通过尽可能多的 Lintian 检查的过程中。目前我正在努力解决“错误的文件所有者-uid-或-gid”(初始信息这里, 更详细的信息这里),并且不确定用于 UID 和 GID 的合适数字是多少。
目前我正在 AWS Ubuntu 机器上构建软件包:
$ id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),102(netdev)
这些都是机器上的默认值。提供的第一个链接说:
允许的全局分配的 ID 集由范围 0-99、64000-64999 和 65534 组成。
在这些范围中,第二个链接指出:
0-99:由 Debian 项目全局分配,在每个 Debian 系统上都相同。这些 id 将出现在所有 Debian 系统的 passwd 和组文件中,随着 base-passwd 软件包的更新,此范围内的新 id 会自动添加。
需要单个静态分配的 uid 或 gid 的包应该使用其中之一;它们的维护者应该向 base-passwd 维护者询问 ids。
60000-64999:由Debian项目全局分配,但仅按需创建。 ID 是集中静态分配的,但实际帐户仅根据需要在用户系统上创建。
这些 id 适用于晦涩难懂或需要许多静态分配 id 的包。如有必要,这些软件包应在 /etc/passwd 或 /etc/group 中检查并创建帐户(如果有此功能,则使用 adduser)。可能需要进一步分配的包应该在分配后留下一个“洞”,以便给它们增长的空间。
65534:用户无人。对应的gid指的是组nogroup。
有人可以帮助解释如何符合 Debian 软件包的 Lintian 检查吗?是不是像更改用户的 UID 和 GID 一样简单?选择什么身份证号码最合适?
答案1
除非您特别需要另一个 UID 或 GID,否则最合适的值分别是 0 和 0。软件包由 root 或具有 root 权限的人安装。通常,它们包含的文件应归 root 所有,除非有特定原因使这些文件归另一个用户或组(可能是配置文件)所有。我的猜测是你debian/rules
没有运行dh_fixperms
:
dh_fixperms is a debhelper program that is responsible for setting the
permissions of files and directories in package build directories to a
sane state -- a state that complies with Debian policy.
dh_fixperms makes all files in usr/share/doc in the package build
directory (excluding files in the examples/ directory) be mode 644. It
also changes the permissions of all man pages to mode 644. It makes all
files be owned by root, and it removes group and other write permission
from all files.