Linux 用户和权限之用户管理命令

目录

用户管理命令

添加用户 

手工删除用户

useradd 命令

useradd 默认值

设定密码

用户信息修改

删除用户 

切换用户身份 


用户管理命令

添加用户 

手工删除用户

  • 手工删除用户试验:手工删除,如果可以正常建立用户,证明用户删除干净。
    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • /etc/gshadow
    • /home/user1
    • /var/spool/mail/user1 邮箱
  • 先证明user3已经存在,然后手工删干净对应的所有信息,再创建user3

vi /etc/passwd


vi /etc/shadow


vi /etc/group


vi /etc/gshadow


rm -rf /home/user1


rm -rf /var/spool/mail/user1


  • 再次创建user3,不报错

useradd 命令

  • useradd 选项 用户名
  • 选项:
    • -u 550    指定 UID
    • -g 组名   指定初始组 不要手工指定
    • -G 组名  指定附加组,把用户加入组,使用附加组
    • -c 说明   添加说明
    • -d 目录   手工指定家目录,目录不需要事先建立
    • -s shell   /bin/bash.

vi /etc/passwd

例如:
[root@localhost ~]# groupadd lamp1
#先手工添加 lamp1 用户组,因为我一会要把 lamp1 用户的初始组指定过来,如果不事先建立,会报错用户组不存在
[root@localhost ~]# useradd -u 550 -g lamp1 -G root -d /home/lamp1 \
-c "test user" -s /bin/bash lamp1
#建立用户 lamp1 的同时指定了 UID(550),初始组(lamp1),附加组(root),家目录(/home/lamp1),用户说
明(test user)和用户登录 shell(/bin/bash)
[root@localhost ~]# grep "lamp1" /etc/passwd /etc/shadow /etc/group
#同时查看三个文件
/etc/passwd:lamp1:x:550:502:test user:/home/lamp1:/bin/bash
#用户的 UID、初始组、用户说明、家目录和登录 shell 都和命令手工指定的一致
/etc/shadow:lamp1:!!:15710:0:99999:7:::
#lamp1 用户还没有设定密码
/etc/group:root:x:0:lamp1
#lamp1 用户加入了 root 组,root 组是 lamp1 用户的附加组
/etc/group:lamp1:x:502:
#GID502 的组是 lamp1 组
[root@localhost ~]# ll -d /home/lamp1/
drwx------ 3 lamp1 lamp1 4096 1 月 6 01:13 /home/lamp1/
#家目录也建立了啊。不需要手工建立家目录

useradd 默认值

  • useradd 添加用户时参考的默认值文件主要有两个 , 分别是 /etc/default/useradd/etc/login.defs
  • /etc/default/useradd
[root@localhost ~]# vi /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
  • GROUP=100
    • 这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。目前我们采用的机制私有用户组机制。
  • HOME=/home
    • 这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下。
  • INACTIVE=-1
    • 这个选项就是密码过期后的宽限天数,也就是/etc/shadow 文件的第七个字段。如果是天数,比如 10 代表密码过期后 10 天后失效;如果是 0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效。
  • EXPIRE=
    • 这个选项是密码失效时间,也就是/etc/shadow 文件的第八个字段。也就说用户到达这个日期后就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效。
  • SHELL=/bin/bash
    • 这个选项是用户的默认 shell 的。/bin/bash 是 Linux 的标志 shell,所以所有新建立的用户默认都具备 shell 赋予的权限。
  • SKEL=/etc/skel
    • 这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中。CREATE_MAIL_SPOOL=yes这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spool/mail/下和用户名相同。
  • /etc/login.defs
#这个文件有些注释,把注释删除掉,文件内容就变成下面这个样子了
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 500
UID_MAX 60000
GID_MIN 500
GID_MAX 60000
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
  • MAIL_DIR  /var/spool/mail
    • 这行指定了新建用户的默认邮箱位置。比如 user1 用户的邮箱是就是/var/spool/mail/user1。
  • PASS_MAX_DAYS 99999
    • 这行指定的是密码的有效期,也就是/etc/shadow 文件的第五字段。代表多少天之后必须修改密码,默认值是 99999。
  • PASS_MIN_DAYS 0
    • 这行指定的是两次密码的修改间隔时间,也就是/etc/shadow 文件的第四字段。代表第一次修改密码之后,几天后才能再次修改密码。默认值是 0。
  • PASS_MIN_LEN 5
    • 这行代表密码的最小长度,默认不小于 5 位。但是我们现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
  • PASS_WARN_AGE 7
    • 这行代表密码修改到期前的警告天数,也就是/etc/shadow 文件的第六字段。代表密码到底有效期前多少天开始进行警告提醒,默认值是 7 天。
  • ID_MIN 500
  • UID_MAX 60000
    • 这两行代表创建用户时,最小 UID 和最大的 UID 的范围。我们 2.6.x 内核开始,Linux 用户的 UID最大可以支持 2^32这么多,但是真正使用时最大范围是 60000。还要注意如果我手工指定了一个用户的UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500-549 之间的 UID 没有使用(小于 500 的 UID 是给伪用户预留的)。
  • GID_MIN 500
  • GID_MAX 60000
    • 这两行指定了 GID 的最小值和最大值之间的范围。
  • CREATE_HOME yes
    • 这行指定建立用户时是否自动建立用户的家目录,默认是建立
  • UMASK 077
    • 这行指定的是建立的用户家目录的默认权限,因为 umask 值是 077,所以新建的用户家目录的权限是 700,umask 的具体作用和修改方法我们可以参考下一章权限设定章节。
  • USERGROUPS_ENAB yes
    • 这行指定的是使用命令 userdel 删除用户时,是否删除用户的初始组,默认是删除。
  • ENCRYPT_METHOD SHA512
    • 这行指定 Linux 用户的密码使用 SHA512 散列模式加密,这是新的密码加密模式,原先的 Linux只能用 DES 或 MD5 方式加密

设定密码

[root@localhost ~]#passwd [选项] 用户名
  • 选项:
    • -l: 暂时锁定用户。仅 root 用户可用
    • -u: 解锁用户。仅 root 用户可用
    • --stdin: 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用
[root@localhost ~]#passwd
  • passwd 直接回车代表修改当前用户的密码

  • 也可以使用字符串作为密码:
[root@localhost ~]# echo "123" | passwd --stdin user1 
更改用户 user1 的密码 。

  • 可以通过命令,把密码修改日期归零(shadow 第 3 字段).这样用户一登陆就要修改密码,例如:
[root@localhost ~]# chage -d 0 user1

用户信息修改

  • usermod 命令是修改已经添加的用户的信息的,命令如下:
[root@localhost ~]#usermod [选项] 用户名
  • 选项:
    • -u UID: 修改用户的 UID
    • -d 家目录: 修改用户的家目录。家目录必须写绝对路径
    • -c 用户说明: 修改用户的说明信息,就是/etc/passwd 文件的第五个字段
    • -g 组名: 修改用户的初始组,就是/etc/passwd 文件的第四个字段
    • -G 组名: 修改用户的附加组,其实就是把用户加入其他用户组
    • -s shell: 修改用户的登录 Shell。默认是/bin/bash
    • -e 日期: 修改用户的失效日期,格式为“YYYY-MM-DD”。也就是/etc/shadow文件的第八个字段
    • -L: 临时锁定用户(Lock)
    • -U: 解锁用户(Unlock)

  • 修改用户名
[root@localhost ~]# usermod -l 新名 旧名
#改名
  • 但是真不建议改名,这样及其容易把管理员自己搞晕,建议删除旧用户,再建立新用户

删除用户 

[root@localhost ~]# userdel [-r] 用户名
  • 选项:
    • -r: 在删除用户的同时删除用户的家目录
  • 不加 -r 如下(一般一定要加 -r

切换用户身份 

  • su 命令可以切换成不同的用户身份,命令格式如下:
[root@localhost ~]# su [选项] 用户名
  • 选项:
    • -: 选项只使用“-”代表连带用户的环境变量一起切换
    • -c 命令:仅执行一次命令,而不切换用户身份
  • “-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量

【注】:参考尚硅谷沈超老师教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值