tch*_*rty 114 command-line bash users home-directory
我正在尝试了解 Ubuntu 上的系统管理。所以,作为一个例子,我创建一个虚拟用户使用
sudo useradd -d /home/linda linda
Run Code Online (Sandbox Code Playgroud)
并passwd创建密码。我检查是否已使用输入cat /etc/passwd
linda:x:1004:1004::/home/linda:/bin/sh
Run Code Online (Sandbox Code Playgroud)
然而,当我su - linda,我得到
Run Code Online (Sandbox Code Playgroud)No directory, logging in with HOME=/
事实上,还没有创建主目录。我错过了什么?
谢谢。
gni*_*urf 125
man useradd 状态:
useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.
Run Code Online (Sandbox Code Playgroud)
请注意 low level utility
要添加用户,请adduser改用。这是一个更高级的实用程序。
此外,查看-d选项:
-d, --home HOME_DIR
The new user will be created using HOME_DIR as the value for the
user's login directory. The default is to append the LOGIN name to
BASE_DIR and use that as the login directory name. The directory
HOME_DIR does not have to exist but will not be created if it is
missing.
Run Code Online (Sandbox Code Playgroud)
The directory will not be created if it is missing.
一般远离useradd,adduser改用。
小智 42
您可以通过创建主目录来解决此问题。
mkdir /home/linda
chown linda:linda /home/linda
Run Code Online (Sandbox Code Playgroud)
尝试再次登录,这应该可以工作。
Rad*_*anu 21
与根据man useradd,-d /home/linda选项将不会创建目录/home/linda,如果没有这个。因此,您必须手动创建它。为此,请在终端中运行以下命令:
sudo -i #to get root privileges
mkdir /home/linda #to create the directory /home/linda
cp -rT /etc/skel /home/linda #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda #to change the owner of /home/linda to user linda
Run Code Online (Sandbox Code Playgroud)
另请参阅:如何在创建帐户后创建用户主文件夹?
小智 11
看看/etc/defaults/useradd是否要更改默认值。用:
useradd -m -d /home/joe -s /bin/bash.
使用-m代替-d,因此将为您创建目录:
sudo useradd -m linda
另外,如果linda是普通用户,您可能希望她使用/bin/bash默认值shell:
sudo useradd -m linda -s /bin/bash
小智 5
您还可以修改/etc/pam.d/common-session以使其在第一次登录时创建用户的主目录。将以下行添加到该文件中。
...
session required pam_mkhomedir.so
Run Code Online (Sandbox Code Playgroud)
如果您的系统位于您的机器外部(例如通过 LDAP)管理用户的网络上,这将特别有用。