![Ubuntu 服务器 - 无需登录即可添加用户并创建主目录结构](https://linux22.com/image/738515/Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%20-%20%E6%97%A0%E9%9C%80%E7%99%BB%E5%BD%95%E5%8D%B3%E5%8F%AF%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7%E5%B9%B6%E5%88%9B%E5%BB%BA%E4%B8%BB%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84.png)
我需要为应用程序创建一个新用户(标准用户,因为它需要用户目录结构)。但是,我注意到 adduser 仅在该用户首次登录后创建用户主目录结构。
我只打算使用 su 账户来运行应用程序。有什么方法可以创建用户目录而无需先远程登录吗?
答案1
如果您想在创建无需登录的用户时创建主目录:
useradd -m username
在Debian/Ubuntu/Mint
家族中,adduser
和useradd
是单独的命令,但在Fedora/RHEL/CentOS
家族中,/usr/sbin/adduser
是到 的符号链接/usr/sbin/useradd
,在 OpenSuse 中,adduser
默认情况下不存在。
答案2
当要创建的用户被标记为系统用户 时,Perl脚本adduser
似乎只会创建主目录而不会从目录中复制文件。/etc/skel
--system
# adduser --system --home /var/lib/serviceuser serviceuser
Adding system user `serviceuser' (UID 130) ...
Adding new user `serviceuser' (UID 130) with group `nogroup' ...
Creating home directory `/var/lib/serviceuser' ...
root@stimpy:~# ll /var/lib/serviceuser/
total 8
drwxr-xr-x 2 serviceuser nogroup 4096 Jun 1 13:29 ./
drwxr-xr-x 79 root root 4096 Jun 1 13:29 ../
现在让我们删除该用户并将其重新创建为普通用户。
# userdel -r serviceuser
userdel: serviceuser mail spool (/var/mail/serviceuser) not found
# adduser --home /var/lib/serviceuser serviceuser
Adding user `serviceuser' ...
Adding new group `serviceuser' (1003) ...
Adding new user `serviceuser' (1003) with group `serviceuser' ...
Creating home directory `/var/lib/serviceuser' ...
Copying files from `/etc/skel' ...
...
# ll /var/lib/serviceuser/
total 32
drwxr-xr-x 2 serviceuser serviceuser 4096 Jun 1 13:25 ./
drwxr-xr-x 79 root root 4096 Jun 1 13:25 ../
-rw-r--r-- 1 serviceuser serviceuser 220 Jun 1 13:25 .bash_logout
-rw-r--r-- 1 serviceuser serviceuser 3771 Jun 1 13:25 .bashrc
-rw-r--r-- 1 serviceuser serviceuser 8980 Jun 1 13:25 examples.desktop
-rw-r--r-- 1 serviceuser serviceuser 807 Jun 1 13:25 .profile
您可以/etc/skel
使用以下命令手动复制通常用于此目的的目录。
rsync -axHAX --owner=serviceuser --group=nogroup /etc/skel/ /var/lib/serviceuser/
但我建议也为 配置一个组serviceuser
,不确定您是否这样做了。但adduser
似乎也跳过了创建专用组。
第二个可能更好的选择是使用useradd
创建您的用户。这还将创建一个基于用户主页的用户主页,/etc/skel
并为系统用户创建一个专用组。
# userdel -r serviceuser
userdel: serviceuser mail spool (/var/mail/serviceuser) not found
# useradd --system --create-home --home-dir /var/lib/serviceuser serviceuser
# ll /var/lib/serviceuser/
total 32
drwxr-xr-x 2 serviceuser serviceuser 4096 Jun 1 13:35 ./
drwxr-xr-x 79 root root 4096 Jun 1 13:35 ../
-rw-r--r-- 1 serviceuser serviceuser 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 serviceuser serviceuser 3771 Apr 4 2018 .bashrc
-rw-r--r-- 1 serviceuser serviceuser 8980 Apr 16 2018 examples.desktop
-rw-r--r-- 1 serviceuser serviceuser 807 Apr 4 2018 .profile
答案3
Ubuntu 19.10:
useradd --help
选项包括:
- -m, --create-home 创建用户的主目录
- -M, --no-create-home 不创建用户主目录