用户 1 的主目录位于内置硬盘上,而用户 2 的主目录位于外置硬盘上?

用户 1 的主目录位于内置硬盘上,而用户 2 的主目录位于外置硬盘上?

是否有人知道是否可以拥有一个用户的主文件夹,例如; /home/user1 位于内部硬盘上,而当我使用 user2 登录时,/home/user2 位于外部硬盘上?

答案1

用户HOME目录在用户登录时设置,从用户/etc/passwd条目中的第 6 个冒号分隔字段开始。例如,MY/etc/passwd文件包含以下用户:

walt2:x:1001:1000:Walt2 Sullivan,,,:/home/walt2:/bin/bash
walt:x:1000:1000:Walt Sullivan,,,:/home/walt:/bin/bash

用户walt2HOME目录是/home/walt2,而waltHOME目录是/home/walt。它们可以位于用户登录开始时挂载的任何位置。

读取man 5 passwdman vipw(总是用来vipw编辑密码-它可以使用任何EDITOR,而不仅仅是vi)。

答案2

每个用户的主页上都有一个文件~.config/users-dirs.dirs,您可以通过编辑该文件来设置您的主页(请注意文件中的注释)。您还可以拥有自己的“区域设置”设置:

rinzwind@schijfwereld:~$ more .config/user-dirs.dirs 
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="/discworld/Desktop"
XDG_DOWNLOAD_DIR="/discworld/Downloads"
XDG_TEMPLATES_DIR="/discworld/Templates"
XDG_PUBLICSHARE_DIR="/discworld/Public"
XDG_DOCUMENTS_DIR="/discworld/Documents"
XDG_MUSIC_DIR="/discworld/Music"
XDG_PICTURES_DIR="/discworld/Pictures"
XDG_VIDEOS_DIR="/discworld/Videos"

rinzwind@schijfwereld:~$ more .config/user-dirs.locale 
en_US

这是使用 $HOME (即 /home/$USER/) 的原始内容:

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"

还有一种命令行方法:

xdg-user-dirs-update --set DOWNLOAD "directory"

其中目录需要适合本答案中第一个代码块中的注释。

这样做,您甚至可以在外部位置上使用 NTFS。您仍将拥有 /home/$USER/ 目录,但所有软件都将使用您的外部位置。“home”仍然是 /home/$USER/,因为所有设置仍在那里。

答案3

谢谢您的快速回答。

我想了一会儿后,我认为林兹温德的解决方案是迄今为止最干净的。

我发现了一种将整个 user2 配置文件放在外部硬盘上的混乱方法,虽然它工作正常,但它会干扰几个程序上的 firejail,我敢打赌以后还会出现一些问题。如果不插入驱动器,它会正常启动,user1 上的登录工作正常,由于驱动器已插入,user2 上的登录将被跳过并返回到登录屏幕。

如果有人有兴趣弄乱:

  1. 我创建了一个目录 /mnt/exthome
  2. 安装了 ext4 格式的外部硬盘和
  3. 添加了新用户 user2,其主目录为 /mnt/exthome/user2。
  4. 并使用选项标志修改了 /etc/fsabnofail
mkdir /mnt/exthome

mount /dev/sdb1 /mnt/exthome

adduser user --home /mnt/exthome/user2

获取外部驱动器的 UUID,blkid并在 /etc/fstab 中添加以下行

UUID=************** /mnt/xhome/   ext4  defaults,nofail    0     2

相关内容