页次: 1
想法是这样的,将用户与系统分离开,系统进程进行所有特权操作,例如系统更新,账户管理之类的,用户的进程无法直接变更系统,必须与系统的特权服务进程通信,经过polkit之类的服务鉴权后由服务进程进行操作(例如系统更新,启停/启用禁用服务,账户管理之类的),整个系统再也不要有set-uid-root这种的东西。
如果从systemd --user开始所有的用户进程都运行于mount namespaces中,这个mount namespace将根目录改为系统根文件系统与某个用户可写目录的overlayfs,这样用户就可以直接使用系统级工具变更自己的配置而不影响OS,包括各种package manager(pip/pacman之类的)和 systemd user service,软件也不需要任何用户级配置文件的概念。
要做到这些该怎么办呢?我知道每次用户登录,display manager或者sshd会跟logind通信启动systemd --user,但是这个过程我怎么控制,是不是要自己写PAM模块控制用户session创建的过程?那个PAM的文档我感觉写的不是特别详细啊,能否有其他方式控制,让systemd --user在新的mount namespace运行?
最近编辑记录 xtricman (2021-02-21 19:10:58)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
可以是可以。你这是要把多用户系统伪装成单用户的?
离线
可以是可以。你这是要把多用户系统伪装成单用户的?
…我又没说不让登录别的用户,别的用户照旧登录啊,只是系统用户互相分隔清楚,用户不要动系统。这Windows的UAC虚拟化不是就这样玩嘛
我是想问怎么做。
最近编辑记录 xtricman (2021-02-21 14:29:09)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
rootfs 准备好,然后 systemd-nspawn 一下?
离线
rootfs 准备好,然后 systemd-nspawn 一下?
我想你可能没有明白我的意思,或者我说的不太清楚
一般的,登录管理器进程(sddm或者gdm或者sshd)会自己负责认证用户并让用户登录,这个登录实际上是与logind 进行dbus通信,创建用户session(如果该用户之前没有活着的session或者该用户设定了linger则还需要创建一个systemd --user进程并且systemd --user会启动所有该自启动的用户服务)。
systemd-nsspawn会生成沙盒或者容器,logind不会感知到,也不会形成原来logind的session概念。
如果这样,相当于彻底抛弃了logind提供的session管理功能(dropbear的某版本是这样的,客户端连接过来它会直接创建子进程,自己管理ssh登录会话,logind啥都不知道,loginctl也查不到系统上有某用户的remote session,用户虽然“登录”了,用户服务不会运行,要用sytemctl status就能看见此时系统的cgroup树状态)
我并不要求沙盒那么重的方案,仅仅需要整个user slice(也即用户登录的所有进程,包括systemd --user,用户级服务,用户session中的进程)运行于一个mount namespace中(以使得用户可以自由编辑系统配置而不真正影响系统),用户或特权进程依然可以靠原来的logind的dbus接口管理用户session
最近编辑记录 xtricman (2021-02-21 19:07:31)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
你说的那种方案是一个用户即一个容器,实际上把logind完全抛弃了,用户甚至可以不用systemd,完全自主。我并不希望这么做,我还是很喜欢logind的
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
你可以在 logind 登录完成之后再跑嘛。
离线
你可以在 logind 登录完成之后再跑嘛。
等登录完了用户服务已经启动了啊,systemd --user和用户服务不就全部不在mount namespace里了吗?如果只有session进程那我session一开始就执行unshare就好了啊,都没必要用上任何沙盒软件,我就是要用户整个cgroup都在mount namespace里
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
等登录完了用户服务已经启动了啊,systemd --user和用户服务不就全部不在mount namespace里了吗?如果只有session进程那我session一开始就执行unshare就好了啊,都没必要用上任何沙盒软件,我就是要用户整个cgroup都在mount namespace里
那个你不用不就好了。
离线
我也以为在说systemd-nspawn。。。
布丁酱是菜鸡,没毛病,他是菜鸡:)
离线
页次: 1