我想知道在Linux/Unix中是否有任何简单的shell命令来更改用户主目录(类似于chsh,它更改现有有效用户的默认登录shell)而不涉及/etc/passwd文件。谢谢
/etc/passwd
从Linux在添加新用户时更改默认用户主目录:
只需使用文本编辑器打开这个文件,输入: vi /etc/default/useradd home变量定义的默认主目录,找到行that 读取如下: HOME=/home 替换为: HOME=/iscsi/user 保存并关闭文件。现在您可以使用常规的useradd添加用户 命令:< / p > # useradd vivek # passwd vivek 验证用户信息: # finger vivek
只需使用文本编辑器打开这个文件,输入:
vi /etc/default/useradd
home变量定义的默认主目录,找到行that 读取如下:
HOME=/home
替换为:
HOME=/iscsi/user
保存并关闭文件。现在您可以使用常规的useradd添加用户 命令:< / p >
# useradd vivek # passwd vivek
验证用户信息:
# finger vivek
Ibrahim对另一个答案的评论是修改现有用户的主目录的正确方法。
usermod -d /newhome/username username
usermod是编辑现有用户的命令。< br > -d (--home的缩写)将改变用户的主目录
usermod
-d
--home
usermod -m -d /newhome/username username
-m (--move-home的缩写)将把内容从用户的当前目录移动到新目录。
-m
--move-home
以防其他读者查找有关adduser命令的信息。
adduser
编辑/etc/adduser.conf
/etc/adduser.conf
设置DHOME变量
DHOME
发现这破坏了一些应用程序,更好的方法是
除了符号链接,在最新的发行版和文件系统中,作为根,你还可以使用bind-mount:
mkdir /home/username mount --bind --verbose /extra-home/username /home/username
这对于允许“通过”/home目录通过守护进程访问子dirs非常有用,否则将配置为避免通过符号链接(apache, ftpd等)进行路径访问。
当然,您必须记住(或初始化脚本)在重新启动时进行绑定。
/etc/fstab中的初始化脚本示例如下
/etc/fstab
/extra-home/username /home/username none defaults,bind 0 0
接受的答案是错误的,因为初始用户文件夹中的内容没有使用它移动。我将添加另一个答案来纠正它:
sudo usermod -d /newhome/username -m username
您不需要创建带有用户名的文件夹,这也会将您的文件从初始用户文件夹移动到/newhome/username文件夹。
Usermod -m -d /newhome用户名
你可以用:
编辑用户主目录,然后移动所需的文件和目录到它:
cp/mv -r /home/$user/.bash* /home/newdir .bash_profile .ssh/
设置正确的权限
chmod -R $user:$user /home/newdir/.bash*