前言

遇到这个问题是因为在安装ftp时,创建的ftper用户家目录是默认的/home/ftper,想要更改为/home/sillp

更新历史

2022-11-09 10:14

先了解useradd

先了解一下linux是怎么创建用户的命令useradd

语法:

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]

参数说明:

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>  指定用户登入时的起始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  制定用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s   指定用户登入后所使用的shell。
-u  指定用户ID。

例子1:

创建一个家目录为/usr/local/apache,shells为/bin/false(不能登录系统),uid为1000的用户apache

useradd -d /usr/local/apache -s /bin/false -u 1000 apache

可在/etc/passwd中查看结果

[root@localhost ~]# cat /etc/passwd |grep apache
apache:x:1000:1000::/usr/local/apache:/bin/false

可检查对应家目录,已经自动创建,并修改了文件所属权限为 apache:apache

[root@localhost ~]# ll /usr/local/ |grep apache
drwx------. 2 apache apache 62 11月 19 10:22 apache

例子2:

创建一个家目录为/hoe/sillp,不能登录系统的用户fpter

useradd -d /home/sillp -s /bin/nologin ftper

[root@localhost ~]# cat /etc/passwd |grep ftper
ftper:x:1001:1001::/home/sillp:/bin/nologin

正片儿usermod

usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

参数说明:

-c<备注>  修改用户帐号的备注文字。
-d登入目录>  修改用户登入时的目录。
-e<有效期限>  修改帐号的有效期限。
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
-g<群组>  修改用户所属的群组。
-G<群组>  修改用户所属的附加群组。
-l<帐号名称>  修改用户帐号名称。
-L  锁定用户密码,使密码无效。
-s  修改用户登入后所使用的shell。
-u  修改用户ID。
-U  解除密码锁定。

例子:

更改登录目录

usermod -d /home/hnlinux root

改变用户的uid

usermod -u 777 root

修改为不能登录的用户

usermod -s | -shell /bin/false username
usermod -s | --shell /usr/sbin/nologin username

补充

说明及比较
/bin/false /bin/false 什么也不做只是返回一个错误状态,然后立即退出。将用户的 shell 设置为 /bin/false,用户会无法登录,并且不会有任何提示。

/usr/sbin/nologin nologin 会礼貌的向用户显示一条信息,并拒绝用户登录:

This account is currently not available. 有一些软件,比如一些 ftp 服务器软件,对于本地非虚拟账户,只有用户有有效的 shell 才能使用 ftp 服务。这时候就可以使用 nologin 使用户即不能登录系统,还能使用一些系统服务,比如 ftp 服务。/bin/false 则不行,这是二者的重要区别之一。

/etc/nologin 如果存在 /etc/nologin 文件,则系统只允许 root 用户登录,其他用户全部被拒绝登录,并向他们显示 /etc/nologin 文件的内容。

参考资料

https://www.runoob.com/linux/linux-comm-useradd.htmlhttps://www.runoob.com/linux/linux-comm-usermod.html