是否有人知道是否可以拥有一个用户的主文件夹,例如; /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
用户walt2
的HOME
目录是/home/walt2
,而walt
的HOME
目录是/home/walt
。它们可以位于用户登录开始时挂载的任何位置。
读取man 5 passwd
和man 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 上的登录将被跳过并返回到登录屏幕。
如果有人有兴趣弄乱:
- 我创建了一个目录 /mnt/exthome
- 安装了 ext4 格式的外部硬盘和
- 添加了新用户 user2,其主目录为 /mnt/exthome/user2。
- 并使用选项标志修改了 /etc/fsab
nofail
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