[Debian]记一次useradd踩坑史

幻想 2022年10月01日 34 0

背景

这次在wsl中按照idea时,使用了debian来做,准备新增一个用户而出现的问题以及解决。

问题

像往常一样,在debian(debian系)中准备跟almalinux(redhat系)一样使用useradd新增用户时,出现了不一样的情况。

  1. 默认并不会创建用户目录
# 创建用户
useradd user

像这样在almalinux中是能生成用户目录的,但在debian中是不会生成的
无法创建用户目录

解决:

# 自己指定目录,并创建
useradd -md /home/user user
  1. 创建的用户切换后,很多指令用不了
# 切换用户
su - user

用户切换后就发现了不一样。
在almalinux上:
almalinux切换用户后
在debian上:
debian切换用户后
并且在debian无法使用history指令。

造成这个的原因是:history是bash内建的指令,其他shell不一定有。

解决:

# 创建指定shell的用户
useradd -md /home/user -s /bin/bash user

# 如果是已创建的用户
# 其一是
su - user
bash

# 其二是
usermod -s /bin/bash user

# 其三是
# 换掉debian的默认shell
dpkg-reconfigure dash
# 在弹出的界面中选择no

推荐2或3,1比较麻烦。

分析

其实通过上面的方法就已经解决了。但还是深入了解一下。

  1. 一般在脚本中要么使用bash,要么使用sh,而sh其实是一个软连接,作为一个全局使用的shell调用,可以是zsh等。
    almalinux:
    almalinux-shell
    debian:
    debian-shell
    通过上面就知道了almalinux的sh指向bash,debian的sh指向dash。

  2. 了解了sh指向后,再去看useradd,看下默认值,查询为何会有不同结果。
    almalinux:
    almalinux-useradd
    debian:
    debian-useradd
    发现almalinux默认shell直接指向bash,而debian的默认shell指向了sh,而sh是指向dash的。

参照

Last Updated: 2022/10/12 22:59:33
linux部署_自制镜像之openEuler22.03 linux部署_[转]linux环境一键下载离线安装包及其依赖