进一步阅读

进一步阅读

我正在一台老式的 SLES GNU/Linux 机器上工作,我没有 root,也没有自己的用户帐户:多个人使用同一个用户帐户(通常同时使用)。

这是“必要的”,因为一堆东西假设你正在使用该帐户而不是其他帐户,所以我不能只为自己要求一个不同的帐户(这并不重要,因为这不是一个帐户)由于各种原因的可能性)。同时,我确实想要进行个性化设置:我自己的 shell rc 脚本、VIM 设置、git 或 Mercurial 设置、我在路径中编写的脚本等。最后 - 我无法进入其他人使用该帐户的方式,即他们不能忍受我更改他们的设置,或者用我自己的文件等弄乱各处(他们可能想做同样的事情)。

我的问题:是否有一种通用/既定的方法来创建所谓的“子用户”或“用户内的用户”帐户或环境?也许是由某种工具/脚本支持的?

答案1

让您$HOME远离家乡

一次性初始化:

  1. install -d /home/shareduser/subusers/einpoklum
  2. 将所有适当的配置文件和数据目录从 复制/链接/home/shareduser/home/shareduser/subusers/einpoklum

那些在主目录上有配额的人注意到,硬链接保持不变的文件以及符号链接目录比复制更节省空间。

在每个终端登录:

  1. export HOME="$HOME"/subusers/einpoklum
  2. XDG_CONFIG_HOME如果合适的话,对和进行类似的调整XDG_DATA_HOME
  3. PATH根据需要执行增强。

对于图形登录执行此操作更为复杂,因为许多桌面进程需要在启动时继承更改的环境变量,其机制根据桌面和操作系统而有所不同,但适用相同的目标。

人们常常忘记这HOME只是一个环境变量,而不是魔法。

进一步阅读

答案2

假设您没有属于两个不同人的同时会话。您最好的选择是使用GNU 存储来管理这个。 Stow 是 Linux 生态系统中最奇怪有用的软件包之一。它的作用是系统地管理符号链接组。

对于您的应用程序,您将创建一个目录,用于保存在用户帐户主目录中使用该帐户的所有人员的点文件,例如 ~/.people。然后每个人将他们的点文件放在 people 目录下的子目录中。例如,Smitty 将他的 vimrc 或其他内容放在 ~/.people/smitty 中。 Nora 将所有设置文件放在 ~/.people/nora 等中。

登录时每个人运行 (cd ~/.people && stow $name)

其中 $name 是注销运行时该人的 ~/.people 目录的名称 (cd ~/.people && stow -d $name)

至于自动化,他们有一些方法。有一些 shell 脚本在每个用户登录和注销时运行,称为 ~/.login 和 ~/.logout。这将是最简单的方法。但自动化可能会导致混乱。上次我有类似的设置,有人不小心替换了 ~/.ssh/authorized_keys。所以我的建议是避免这种情况。

如果同时有多个用户 如果没有花哨的步法,就没有确定的火法可以做到这一点。但是,出于配置目的,程序使用 $HOME 环境变量来确定主目录的位置。最好的选择是像以前一样使用 ~/.people/$name ,但不要使用 stow 让每个用户运行HOME="~/.people/$name" bash -l。这将创建一个新的 bash 会话,并将主目录变量设置为每个用户的子目录,并让它执行与使用新主目录值正常登录时相同的启动脚本。因此,欺骗从新的 bash 实例执行的任何程序,该实例引用其配置文件位置的 $HOME 值,使用每个单独的目录而不是顶级主目录。这种黑客方法非常脆弱,并不适用于所有程序,但这确实是多人同时使用时可以做的最好的事情。

答案3

这种设置简直就是在为各种“有趣的事情”尖叫。过时的操作系统意味着各种已知的漏洞,增加了娱乐价值。

只需抛弃这种混乱,并设置一些正常的东西,每个用户都有一个帐户。有一些真实且经过测试的方法来设置共享(拥有共享资源的组、设置 ACL)。

最后,兼顾所有这些的额外工作很可能是不值得的。

相关内容