我想知道是否有任何简单的Shell命令可在Linux/Unix中更改用户主目录(类似于 chsh ,可以更改现有有效用户的默认登录Shell),而不必操作/etc/passwd
文件。谢谢。
Ibrahim的评论对修改现有用户的主目录是正确的方式。
usermod -d /newhome/username username
usermod
是编辑现有用户的命令。
-d
(缩写为 --home
)将更改用户的主目录。
usermod -m -d /newhome/username username
-m
(--move-home
的缩写)将把内容从用户当前目录移动到新目录。
usermod -m -d /newhome/username username
是正确的。 - domidsSimply open this file using a text editor, type:
vi /etc/default/useradd
The default home directory defined by HOME variable, find line that read as follows:
HOME=/home
Replace with:
HOME=/iscsi/user
Save and close the file. Now you can add user using regular useradd command:
# useradd vivek # passwd vivek
Verify user information:
# finger vivek
usermod -m -d /path/to/new/login/home/dir user
这个命令可以将现有用户的家目录更改为一个新的登录目录,如果该目录不存在则会创建它。选项"-m"会移动当前家目录的内容到新的家目录中。 - Ibrahim Quraish被接受的答案是有缺陷的,因为它并没有移动来自初始用户文件夹的内容。我将添加另一个答案以进行更正:
sudo usermod -d /newhome/username -m username
您不需要使用用户名创建文件夹,这也会将您的文件从初始用户文件夹移动到 /newhome/用户名 文件夹中。
如果其他读者在寻找有关adduser
命令的信息。
编辑/etc/adduser.conf
设置DHOME
变量
您可以使用以下方法完成此操作:
/etc/passwd
编辑用户主目录,然后将所需的文件和目录移动到其中:
cp/mv -r /home/$user/.bash* /home/newdir
.bash_profile
.ssh/
设置正确的权限
chmod -R $user:$user /home/newdir/.bash*
发现这种方法会导致某些应用程序出现问题,更好的方法是
除了符号链接外,在较新的发行版和文件系统中,作为根用户,您还可以使用绑定挂载:
mkdir /home/username
mount --bind --verbose /extra-home/username /home/username
这对于允许通过守护进程访问子目录的/home目录是有用的,否则配置为避免通过符号链接进行路径(如apache、ftpd等)。
当然,在重启时需要记住(或初始化脚本)来绑定。
/etc/fstab中的一个示例init脚本是
/extra-home/username /home/username none defaults,bind 0 0
usermod -m -d /newhome 用户名
/etc/passwd
文件呢?你需要的! - Basile Starynkevitchusermod -d /home/userxx /home/useryy
可以将 Linux 默认登录目录更改为 /home/useryy。 - Ibrahim Quraishchsh
不会更改“默认”的登录 shell,而只会更改给定用户的登录 shell... 要更改特定用户的HOME
,只需编辑/etc/passwd
。 - Basile Starynkevitch