• Ubuntu中用useradd创建用户时没指定家目录和shell版本,就不能su切换到新用户


    环境:Ubuntu22.04Server版,XSHELL7免费版连接

    问题:root用户用useradd命令创建用户,并设定密码:

     然后su切换到新建的用户,切不过去:

    只好退出了:

    用新建的用户登录,提示如下错误:

    断开连接,再次用新建的用户登录,不提示这个错误了,但还是登不上去:

    经过学习得知, useradd命令创建用户,如果不加参数,不会指定用户的家目录、shell版本和密码。而我刚刚用-m参数自动创建了家目录,但是没有指定shell版本。

    用-s参数指定shell版本,就可以了:

    因此用useradd命令创建用户,应该在创建时指定用户的家目录、shell版本。

    需要注意两点:

    1、useradd创建用户时什么也没指定,查看/etc/passwd,系统会默认在其信息中标注其家目录和shell版本:

     不过系统虽然标注上了,但是新建的用户还是没有家目录:

    自然也没法切换过去:

    如前所述,创建用户时没有用-s指定shell版本,虽然在/etc/passwd中系统会标注其shell版本 ,但还是无法正常切换:

     useradd命令另一个比较常用的选项是-d,如果创建用户时想指定一个已存在的目录做其家目录,用这个参数。如果再加上-m,表示指定的目录若不存在,就自动创建:

    但是这样,该目录的所属用户和所属组不会自己变成新建的用户和其所在组:

    如果要更改,用chown改:

     另外adduser命令也可以创建用户,而且系统会自动指定其家目录、shell版本、并自动要求创建其密码。相应地,删除用户可以使用userdel、deluser两个命令。我备注的参考资料的作者写的很详细,可以直接看那篇文章。这里只补充一下,deluser命令的两个参数选项:

    --remove-home:删除用户时一并删除其家目录和邮件池

    --remove-all-files:从系统中删除用户拥有的所有文件

    从man手册中看到,当使用了--remove-all-files后,--remove-home就不起作用了:

    另外即便用户的家目录不是属于该用户的,删除时使用--remove-home,也会把该目录一起删掉:

     

    参考资料:wq_0708,Ubuntu创建用户 

  • 相关阅读:
    iOS 通知扩展插件
    SCS【2】单细胞转录组 之 cellranger
    智能时代的“发动机升级”:数据中心十年之变
    基于遗传算法与神经网络的测井预测(Matlab代码实现)
    持续交付知易行难,想做成这事你要理解这几个关键点
    恢复二叉树思路及代码
    想要精通算法和SQL的成长之路 - 打家劫舍系列问题
    openjudge 1.7.30 字符环
    C专家编程 第1章 C:穿越时空的迷雾 1.1 C语言的史前阶段
    LeetCode | 719. Find K-th Smallest Pair Distance
  • 原文地址:https://blog.csdn.net/lchydp1979/article/details/126447351