Jeff Notes

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

选项:

示例:

[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

选项:

userdel


删除用户。

语法:

userdel [options] LOGIN

选项:

groupadd


添加组。

语法:

groupadd [options] group

选项:

示例:

[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

选项:

示例:

[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]

选项:

示例:

[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

选项:

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

选项:

示例:

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

id


显示用户的真实和有效ID

语法:

id [OPTION]… [USER]

选项:

su


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

选项:

示例:

[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