命令:
useradd 添加用户
adduser 添加用户
passwd 添加密码
usermode 修改用户信息
chsh 修改用户shell
chage 修改账号日期
chfn 修改用户信息
userdel 删除用户
groupadd 添加组
groupmde 修改组
groupdel 删除组
newgrp 切换基本组
systemd-network:!!:16982::::::
用户名:密码占位符:UID:基本组ID:用户备注信息:用户家目录:默认shell
当一个用户创建完成后会将/etc/skel/下的文件全部复制一份到/home/用户目录/下
[root@docker-node1 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1 用户创建非活动状态
EXPIRE= 用户过期期限
SHELL=/bin/bash 用户bash
SKEL=/etc/skel 创建家目录
CREATE_MAIL_SPOOL=yes 创建邮件缓存池。(/var/mail会有相应用户的缓冲池)
adduser:在centos中adduser是链接到useradd的
[root@docker-node1 ~]# which adduser
/usr/sbin/adduser
[root@docker-node1 ~]#
[root@docker-node1 ~]# ll /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Jun 30 13:17 /usr/sbin/adduser -> useradd
[root@docker-node1 ~]#
指定UID: 前提是未重复使用的UID
useradd -u 1010 mark
[root@docker-node1 ~]# tail -1 /etc/passwd
mark:x:1010:1010::/home/mark:/bin/bash
[root@docker-node1 ~]#
如果指定了UID,且在下个用户创建是,默认UID加1
-u:指定UID
-g:指定GID,既指定用户的基本组,担GID要事先存在
指定GID:前提是组ID必须创建或者存在
-g :创建并为其指定GID
-G :指定用户附加组,组需事先存在
首先创建组,才能添加到组
groupadd linuxea
[root@docker-node1 ~]# groupadd linuxea
[root@docker-node1 ~]# tail -2 /etc/group
mark:x:1010:
linuxea:x:1011:
指定用户到组
[root@docker-node1 ~]# useradd -g linuxea linuxea1
[root@docker-node1 ~]# tail -1 /etc/passwd
linuxea1:x:1012:1011::/home/linuxea1:/bin/bash
[root@docker-node1 ~]# tail -2 /etc/group
mark:x:1010:
linuxea:x:1011:
[root@docker-node1 ~]#
[root@docker-node1 ~]# id linuxea
uid=1011(linuxea) gid=1011(linuxea) groups=1011(linuxea)
[root@docker-node1 ~]# id linuxea1
uid=1012(linuxea1) gid=1011(linuxea) groups=1011(linuxea)
[root@docker-node1 ~]#
用户类型分为管理员和普通用户,在普通用户中分为系统用户和登录用户,管理员为0,普通用户从1-65535,而系统用户:1-499,登录用户500+
组:
基本组:显示在/etc/passwd中的GID字段组,为用户的基本组
额外组:附加组:/etc/group
[root@docker-node1 ~]# useradd -G linuxea linuxea2
[root@docker-node1 ~]# tail -1 /etc/passwd
linuxea2:x:1013:1013::/home/linuxea2:/bin/bash
[root@docker-node1 ~]# tail -1 /etc/group
linuxea2:x:1013:
[root@docker-node1 ~]#
使用id则可以看出
[root@docker-node1 ~]# id linuxea2
uid=1013(linuxea2) gid=1013(linuxea2) groups=1013(linuxea2),1011(linuxea)
[root@docker-node1 ~]#
group中也可以看出附加组,当然,你也可以直接在文件中添加附加组
[root@docker-node1 ~]# tail -3 /etc/group
linuxea:x:1011:linuxea2
linuxea2:x:1013:
[root@docker-node1 ~]#
-d:用户目录
用户指定的目录不能事先存在
指定家目录和用户名不一样
[root@docker-node1 ~]# useradd -d /home/xiaoming xiaohong
[root@docker-node1 ~]# tail -1 /etc/passwd
xiaohong:x:1015:1015::/home/xiaoming:/bin/bash
[root@docker-node1 ~]#
指定家目录位置
通常在home下,当然你也可自定义
[root@docker-node1 ~]# useradd -d /tmp/daxiong xiaoxiong
[root@docker-node1 ~]# tail -1 /etc/passwd
xiaoxiong:x:1016:1016::/tmp/daxiong:/bin/bash
[root@docker-node1 ~]#
-c指定备注信息
[root@docker-node1 ~]# useradd -c "linuxea" -d /tmp/user1 user1
[root@docker-node1 ~]# tail -1 /etc/passwd
user1:x:1017:1017:linuxea:/tmp/user1:/bin/bash
[root@docker-node1 ~]#
-s指定shell
[root@docker-node1 ~]# useradd -c "linuxea1" -d /tmp/user2 user2 -s /sbin/nologin
[root@docker-node1 ~]# tail -1 /etc/passwd
user2:x:1018:1018:linuxea1:/tmp/user2:/sbin/nologin
[root@docker-node1 ~]#
如果是nologin是无法登陆的,不会创建家目录,系统用户通常会使用
-g指定组
[root@docker-node1 ~]# useradd -g linuxea -d /home/user8 -s /sbin/nologin user8
[root@docker-node1 ~]# id user8
uid=1024(user8) gid=1011(linuxea) groups=1011(linuxea)
创建用户并指定附加组
[root@docker-node1 ~]# useradd -G 1018 -d /home/user4 -s /sbin/nologin user4
[root@docker-node1 ~]# tail -2 /etc/group
user2:x:1018:user4
user4:x:1019:
[root@docker-node1 ~]#
创建用户指定Uid,shell,家目录
[root@docker-node1 ~]# useradd -u 1021 -d /home/user5 -s /sbin/nologin user5
[root@docker-node1 ~]# tail -1 /etc/passwd
user5:x:1021:1021::/home/user5:/sbin/nologin
[root@docker-node1 ~]#
-m:创建用户时强制给用户创建家目录
-M:创建用户是仅创建用户不创建家目录
[root@docker-node1 ~]# useradd user7 -M -s /sbin/nologin
[root@docker-node1 ~]# tail -1 /etc/passwd
user7:x:1023:1023::/home/user7:/sbin/nologin
-D:改变默认值,为useradd命令创建的用户指定新的默认值
删除用户:
删除用户默认保留家目录,如果需要删除家目录-r即可:userdel -r user8
文件格式:
/etc/passwd:
username:x:UID:GID:comment:home:shell
/etc/group:
groupname:x:gid:user: list
家目录复制文件链接:/etc/skel
默认配置:/etc/default/useradd
在没有密码的情况下,是不能登录的,只能使用管理员su切换
设定密码:passwd
其中,只有管理root才能修改自己的密码,使用passwd即可,如果修改其他用户则passwd 用户名即可
而普通用户修改密码需要密码复杂度如果不符合则会提示
[root@docker-node1 ~]# passwd linuxea
Changing password for user linuxea.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@docker-node1 ~]# su - linuxea
[linuxea@docker-node1 ~]$ passwd
Changing password for user linuxea.
Changing password for linuxea.
(current) UNIX password: 输入当前密码
New password: 输入新密码,如果新密码复杂度不够则会提示如下:
BAD PASSWORD: The password is the same as the old one
New password:
BAD PASSWORD: The password is the same as the old one
New password:
BAD PASSWORD: The password is the same as the old one
passwd: Have exhausted maximum number of retries for service
[linuxea@docker-node1 ~]$
[root@docker-node1 ~]# tail -1 /etc/shadow
user8:!!:16999:0:99999:7:::
[root@docker-node1 ~]#
shadow文件说明:
user8:!!:16999:0:99999:7:::
username:加密密码:最近一次的修改时间(从1970年1月1号到改密码经过的天数):最短时间期限,为0不限制:最长使用期限,为99999则为不限制:警告区间,离密码过期剩下天数开始警告:非活动区间,账号密码登录则需要修改密码:账号过期期限,失效时间:预留,尚未使用
组密码设定:gpasswd 组名
修改用户属性定义:
chsh修改shell
[root@docker-node1 ~]# tail -1 /etc/passwd
user8:x:1024:1011::/home/user8:/sbin/nologin
[root@docker-node1 ~]# chsh user8
Changing shell for user8.
New shell [/sbin/nologin]: /bin/bash
Shell changed.
[root@docker-node1 ~]# tail -1 /etc/passwd
user8:x:1024:1011::/home/user8:/bin/bash
[root@docker-node1 ~]#
修改用户注释:chfn
当然,你也可以只写一段
[root@docker-node1 ~]# chfn user8
Changing finger information for user8.
Name []: user8 backup
Office []: manila
Office Phone []: 150 8888 8888
Home Phone []: 119
Finger information changed.
[root@docker-node1 ~]# tail -1 /etc/passwd
user8:x:1024:1011:user8 backup,manila,150 8888 8888,119:/home/user8:/bin/bash
[root@docker-node1 ~]#
如果你想直接修改信息则可以使用usermod
usermod:
-u:修改uid
-g:修改gid
-G:修改附加组,如果默认有附加组,默认 -G会覆盖,如果是添加在附加组之上需添加参数-a选项
[root@docker-node1 ~]# id user8
uid=1024(user8) gid=1011(linuxea) groups=1011(linuxea)
[root@docker-node1 ~]# groupadd test
[root@docker-node1 ~]# usermod -a -G test user8
[root@docker-node1 ~]# id user8
uid=1024(user8) gid=1011(linuxea) groups=1011(linuxea),1024(test)
[root@docker-node1 ~]#
-c:修改用户注释
-d:修改家目录
[root@docker-node1 ~]# tail -1 /etc/passwd
user8:x:1024:1011:user8 backup,manila,150 8888 8888,119:/home/user8:/bin/bash
[root@docker-node1 ~]# usermod -m -d /tmp/user8 user8
如果不加-m则会报su: warning: cannot change directory to /tmp/user8: No such file or directory -d是不会迁移家目录
[root@docker-node1 ~]# tail -1 /etc/passwd
user8:x:1024:1011:user8 backup,manila,150 8888 8888,119:/tmp/user8:/bin/bash
[root@docker-node1 ~]# su - user8
Last login: Sun Jul 17 02:45:03 EDT 2016 on pts/0
[user8@docker-node1 ~]$ ls
-s: shell
[root@docker-node1 ~]# usermod -s /sbin/nologin user8
[root@docker-node1 ~]# tail -l /etc/passwd|grep user8
user8:x:1024:1011:user8 backup,manila,150 8888 8888,119:/tmp/user8:/sbin/nologin
[root@docker-node1 ~]#
-l:修改登录名
[root@docker-node1 ~]# usermod -l linuxeacom1 user8
[root@docker-node1 ~]# tail -l /etc/passwd|grep user8
linuxeacom1:x:1024:1011:user8 backup,manila,150 8888 8888,119:/tmp/user8:/sbin/nologin
[root@docker-node1 ~]#
-L:锁定用户账号
[root@docker-node1 ~]# passwd -l linuxeacom1
Locking password for user linuxeacom1.
passwd: Success
-U:解锁
[root@docker-node1 ~]# passwd -u linuxeacom1
Unlocking password for user linuxeacom1.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@docker-node1 ~]#
加锁和解锁区别去在配置文件中会多加两个!!,如下所示:
[root@docker-node1 ~]# tail -1 /etc/shadow
mark1:$6$XN4WjxlY$fSumbLmfUPTOnGdz0XdSLE5okMf39hnejX/KnrHqsdHzNx/3ADX1ldM..5mMmB5gZCUdMYdRSD.vMHeE4m9Pk.:16999:0:99999:7:::
当使用-l时则会添加!!
[root@docker-node1 ~]# passwd -l mark1
Locking password for user mark1.
passwd: Success
[root@docker-node1 ~]# tail -1 /etc/shadow
mark1:!!$6$XN4WjxlY$fSumbLmfUPTOnGdz0XdSLE5okMf39hnejX/KnrHqsdHzNx/3ADX1ldM..5mMmB5gZCUdMYdRSD.vMHeE4m9Pk.:16999:0:99999:7:::
-u取消
[root@docker-node1 ~]# passwd -u mark1
Unlocking password for user mark1.
passwd: Success
[root@docker-node1 ~]# tail -1 /etc/shadow
mark1:$6$XN4WjxlY$fSumbLmfUPTOnGdz0XdSLE5okMf39hnejX/KnrHqsdHzNx/3ADX1ldM..5mMmB5gZCUdMYdRSD.vMHeE4m9Pk.:16999:0:99999:7:::
[root@docker-node1 ~]#
修改组属性定义:
-n:修改新组名
[root@docker-node1 ~]# tail -1 /etc/group
user9:x:1025:
[root@docker-node1 ~]# groupmod -n linuxeacom1 user9
[root@docker-node1 ~]# tail -1 /etc/group
linuxeacom1:x:1025:
[root@docker-node1 ~]#
-g: 修改gid
[root@docker-node1 ~]# groupmod -g 10250 linuxeacom1
[root@docker-node1 ~]# tail -1 /etc/group
linuxeacom1:x:10250:
[root@docker-node1 ~]#
修改账号日期属性:chage
-E:过期期限
-I:非活动期限
-m:最短使用期限
-M:最长使用期限
-W:警告区间
这些时间passwd也可以定义
示例:
1,创建用户为123,其id为3000,基本组为centos(组id3003),附加组为linuxea
groupadd linuxea
groupadd -g 3003 centos
useradd u 3000 -g centos -G linuxea 123
2, 创建用户为redhat1,全名为redhat123,默认shell为nologin
useradd -c "redhat123" -s /sbin/nologin redhat1
3, 修改redhat1 ID号为4000,基本组为centos,附加组为linuxea和123
usermod -u 4000 -g centos -G linuxea,123 redhat1
4, 添加redhat1密码,并设定密码最短试用期为30天,最长为35天
passwd redhat1
chage -m 30 -M 35 redhat1
5, 将redhat1 Shell修改为bin/bash
usermod -s /bin/bash redhat1
id使用
显示uid
[root@docker-node1 ~]# id -u linuxeacom1
1024
显示gid
[root@docker-node1 ~]# id -g linuxeacom1
1011
显示所有gid
[root@docker-node1 ~]# id -G linuxeacom1
1011 1024
显示基本组组名
[root@docker-node1 ~]# id -g -n linuxeacom1
linuxea
显示附加组组名
[root@docker-node1 ~]# id -G -n linuxeacom1
linuxea test
[root@docker-node1 ~]#
su切换后调用命令
[root@docker-node1 ~]# su -l -c 'ls /tmp' mark
-classpath.txt systemd-private-b6e5d402e0764baba1f123fba87fad8a-httpd.service-UCZo6x tomcat.txt
daxiong systemd-private-b6e5d402e0764baba1f123fba87fad8a-mariadb.service-cMjOIQ user1
hsperfdata_root tcp-status.txt user2
httpNUB.txt tomcat2.txt user8
lib:lib.txt tomcat3.txt zabbix_java_gateway_logback.xml.txt
[root@docker-node1 ~]#