AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 486192
Accepted
humanityANDpeace
humanityANDpeace
Asked: 2018-12-06 08:55:06 +0800 CST2018-12-06 08:55:06 +0800 CST 2018-12-06 08:55:06 +0800 CST

用户名有多重要(与 uid 相比)?

  • 772

背景: 我最近读到一个freedesktop.org-bug,它允许为>执行任何systemctl命令。因此我跑了: uidINT_MAX

root@host$> useradd -u 4000000000 largeuiduser
root@host$> su largeuiduser
largeuiduser@host$> systemctl ["whatever"]
[bug exists, and "whatever" gets executed]
largeuiduser@host$> exit
root@host$> userdel largeuiduser

寻找我后来发现的更清洁的方式

root@host$> setpriv --reuid 4000000000 systemctl ["whatever"]
[bug exists, and "whatever" stuff gets executed]

表明利用该漏洞不需要(临时)用户名。这也很明显,我不太确定:用户名实际上有多重要?.

问题 因此我的问题是。从内核(linux/posix)的角度来看,用户名有多可有可无?是否需要,是否可以使用?

我的怀疑是,用户名只是用户空间中专门使用的一种“便利设施”。

一个好的答案将试图通过提供用户名在哪些设置中变得“必要”以及在哪些设置中它们是“可消耗的”的信息来阐明这一点。

linux kernel
  • 1 1 个回答
  • 180 Views

1 个回答

  • Voted
  1. Best Answer
    JdeBP
    2018-12-06T11:38:34+08:002018-12-06T11:38:34+08:00

    在 Linux 和 BSD 世界中,内核几乎完全根据数字用户和组 ID 运行。有一个标准化的 C 库可以提供对用户数据库的访问,其中可以从 ID 查找名称,反之亦然,这就是应用程序软件如何从人类提供的名称获取系统调用所需的 ID,然后再返回。进程凭证和访问控制列表条目都根据 ID 进行操作。

    一个例外是setlogin()BSD 世界中的(非标准化的)API 函数,它根据字符串、用户名而不是数字用户 ID 进行操作。然而,内核不对这个字符串进行任何解释。

    人们可以编写完全根据数字 ID 运行的应用程序,并将其呈现给人类。但这不是大多数软件的编写方式,原因很简单,人类使用名为.

    内核也没有不存在帐户的概念。就内核而言,所有 ID(除了一些保留值)都是有效的。您可以(作为超级用户)启动一个以 UID 24394 运行的进程,并创建该 UID 拥有的文件系统对象(当然,在它有权访问的地方),内核不会抱怨。

    请注意,PolicyKit 错误与 UID 无关。它是关于一个名为pkttyagentabending 的程序......

    错误:pkttyagent.c:156:main: 断言失败:(polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0)
    …在这种情况下,授权机制打开失败而不是关闭失败,返回用户已通过桌面总线获得授权。

    进一步阅读

    • “用户数据库”。 基本定义。单一 UNIX 规范。IEEE 1003.1。2018 年开放组。
    • getpwnam(). 系统接口。单一 UNIX 规范。IEEE 1003.1。2018 年开放组。
    • getpwuid(). 系统接口。单一 UNIX 规范。IEEE 1003.1。2018 年开放组。
    • 乔纳森·德博因·波拉德 (2018)。setlogin. 小吃指南。软件。
    • 乔纳森·德博因·波拉德 (2018)。setuidgid. 小吃指南。软件。
    • 让多个 UNIX 用户共享一个 UID 有什么副作用?
    • https://news.ycombinator.com/item?id=18605607
    • https://superuser.com/a/706578/38062
    • 7

相关问题

  • astyle 不会更改源文件格式

  • Linux 内核开发人员如何处理数百万行代码的工作?他们是一种方法吗?[关闭]

  • 通过标签将根文件系统传递给linux内核

  • 以 root 用户身份访问文件系统

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve