Linux用户和组管理命令

系统版本:

[root@node1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 
[root@node1 ~]# uname -r
3.10.0-229.el7.x86_64

 

useradd


创建用户。
注:创建用户时的许多默认设定,由配置文件/etc/login.defs定义。

语法:

useradd [options] LOGIN

选项:

  • -u, --uid UID: 指定UID
  • -g, --gid GROUP: 指定基本组ID,此组需事先存在
  • -G, --groups GROUP1[,GROUP2,…[,GROUPN]]: 指明用户所属的附加组,多个组之间用逗号分隔
  • -c, --comment COMMENT: 指明注释信息
  • -d, --home-dir HOME_DIR: 以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
  • -s, --shell SHELL: 指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中
  • -r, --system: 创建系统用户
  • useradd -D: 显示创建用户的默认配置
  • useradd -D 选项: 修改默认选项的值,修改的结果保存在/etc/default/useradd文件中

示例:

[root@node1 ~]# useradd docker
[root@node1 ~]# tail -1 /etc/passwd
[root@node1 ~]# tail -1 /etc/group

[root@node1 ~]# useradd -u 3000 openstack
[root@node1 ~]# useradd -G mygrp archlinux
[root@node1 ~]# useradd -c "MogileFS DFS" mogilefs
[root@node1 ~]# useradd -d /tmp/moosefs moosefs
[root@node1 ~]# ll /tmp/moosefs/

[root@node1 ~]# yum -y install tcsh
#安装tcsh shell,包含了csh shell
[root@node1 ~]# cat /etc/shells
[root@node1 ~]# useradd -s /bin/csh keystone

[root@node1 ~]# useradd -D
[root@node1 ~]# useradd -D -s /bin/csh
#修改useradd命令的-s选项的默认shell为/bin/csh

usermod


修改用户属性。

语法:

usermod [options] LOGIN

选项:

  • -u, --uid UID: 修改用户的ID为此处指定的新UID
  • -g, --gid GROUP: 修改用户所属的基本组
  • -G, --groups GROUP1[,GROUP2,…[,GROUPN]]]: 修改用户所属的附加组,原来的附加组会被覆盖
  • -a, --append: 与-G一同使用,用于为用户追加新的附加组
  • -c, --comment COMMENT: 修改注释信息
  • -d, --home HOME_DIR: 修改用户的家目录,用户原有的文件不会被转移至新位置
  • -m, --move-home: 只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
  • -l, --login NEW_LOGIN: 修改用户名
  • -s, --shell SHELL: 修改用户的默认shell
  • -L, --lock: 锁定用户密码,即在用户原来的密码字符串之前添加一个”!”
  • -U, --unlock: 解锁用户的密码

userdel


删除用户。

语法:

userdel [options] LOGIN

选项:

  • -r: 删除用户时一并删除其家目录

groupadd


添加组。

语法:

groupadd [options] group

选项:

  • -g GID: 指定GID,默认是上一个组的GID+1
  • -r: 创建系统组

示例:

[root@node1 ~]# groupadd mygrp
[root@node1 ~]# tail -1 /etc/group
[root@node1 ~]# groupadd -r testgrp
[root@node1 ~]# groupadd -g 2000 grp1
[root@node1 ~]# groupadd -r -g 306 mariadb

groupmod


修改组属性。

语法:

groupmod [options] GROUP

选项:

  • -g GID: 修改GID
  • -n new_name: 修改组名

示例:

[root@node1 ~]# groupmod -g 702 mariadb
[root@node1 ~]# groupmod -n perconaserver mariadb
[root@node1 ~]# tail -1 /etc/group

passwd


(1) passwd:修改用户自己的密码
(2) passwd USERNAME:修改指定用户的密码,但仅root有此权限

语法:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

选项:

  • -l, -u: 锁定和解锁用户
  • -d: 清除用户密码串
  • -e: 强制用户密码过期
  • -i DAYS: 非活动期限
  • -n DAYS: 密码的最短使用期限
  • -x DAYS: 密码的最长使用期限
  • -w DAYS: 警告期限

示例:

[root@node1 ~]# echo "redhat" | passwd --stdin docker &> /dev/null
#将“redhat”字符串以标准输入的方式,重定向给“passwd docker”,以更改密码
#并且不管结果是正确的,还是错误的,都将输出的信息发送到/dev/null,即丢弃输出信息

[root@node1 ~]# echo $?
#echo特殊变量$?,返回“0”,则表示成功执行;“1-255”表示失败

gpasswd


设置组密码。
组密码文件:/etc/gshadow

语法:

gpasswd [options] group

选项:

  • -a USERNAME: 向组中添加用户
  • -d USERNAME: 从组中移除用户

newgrp


临时切换指定的组为基本组。

语法:

newgrp [-] [group]

选项:

  • -: 模拟用户重新登录以实现重新初始化其工作环境

示例:

[root@node1 ~]# cat /etc/group | grep mygrp
mygrp:x:3002:archlinux,fedora,centos
[root@node1 ~]# id docker
uid=1001(docker) gid=1001(docker) groups=1001(docker)

[root@node1 ~]# gpasswd mygrp
[root@node1 ~]# su - docker 
[docker@node1 ~]$ newgrp mygrp
#切换mygrp为新的基本组,此时需要输入mygrp组的密码
[docker@node1 ~]$ id
uid=1001(docker) gid=3002(mygrp) groups=1001(docker),3002(mygrp)
[docker@node1 ~]$ exit
#退出并返回原来的基本组
[docker@node1 ~]$ id
uid=1001(docker) gid=1001(docker) groups=1001(docker)

chage


更改用户密码过期信息。

语法:

chage [options] LOGIN

选项:

  • -d: 设置最后一次修改密码的日期(YYYY-MM-DD)或天数(距1970-01-01以来的天数)

示例:

[root@node1 ~]# chage -d 0 hadoop
#hadoop用户在下次登录时须要修改密码

id


显示用户的真实和有效ID

语法:

id [OPTION]… [USER]

选项:

  • -u: 仅显示有效的UID
  • -g: 仅显示用户的基本组ID
  • -G: 仅显示用户所属的所有组的ID
  • -n: 显示名字而非ID,需与以上选项连用

su


切换用户。
注:管理员可无密码切换至其他任何用户。

  • 登录式切换:会通过读取目标用户的配置文件来重新初始化
    su - USERNAMEsu -l USERNAME
  • 非登录式切换:不会读取目标用户的配置文件进行初始化
    su USERNAME

选项:

  • -c ‘COMMAND’: 仅以指定用户的身份运行此处指定的命令

示例:

[root@node1 ~]# su - docker -c 'whoami'
docker

 
用户和组的管理类命令,除了以上几个较为常用的命令,还有groupdelchshchfnfingerwhoamipwckgrpck,用得较少,不作详述。

 

练习题


(1) 创建组distro,其GID为2016

[root@node1 ~]# groupadd -g 2016 distro

(2) 创建用户mandriva,其ID号为1005,基本组为distro

[root@node1 ~]# useradd -u 1005 -g distro mandriva

(3) 创建用户mageia,其ID号为1100,家目录为/home/linux

[root@node1 ~]# useradd -u 1100 -d /home/linux mageia

(4) 给用户mageia添加密码,密码为mageedu

[root@node1 ~]# echo "mageedu" | passwd --stdin mageia 

(5) 删除mandriva,但保留其家目录

[root@node1 ~]# userdel mandriva

(6) 创建用户slackware,其ID号为2002,基本组为distro,附加组peguin

[root@node1 ~]# useradd -u 2002 -g distro -G peguin slackware

(7) 修改slackware的默认shell为/bin/tcsh

[root@node1 ~]# usermod -s /bin/tcsh slackware

(8) 为用户slackware新增附加组admins

[root@node1 ~]# usermod -aG admins slackware

 
 

发表评论

邮箱地址不会被公开。