系统版本:
[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 - USERNAME
或su -l USERNAME
- 非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
选项:
- -c ‘COMMAND’: 仅以指定用户的身份运行此处指定的命令
示例:
[root@node1 ~]# su - docker -c 'whoami'
docker
用户和组的管理类命令,除了以上几个较为常用的命令,还有groupdel
,chsh
,chfn
,finger
,whoami
,pwck
,grpck
,用得较少,不作详述。
练习题
(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