linux基础之useradd

marksugar
2016-07-29 / 0 评论 / 2,847 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2016年07月29日,已超过1953天没有更新,若内容或图片失效,请留言反馈。

命令:
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 ~]# 

请输入图片描述

0

评论 (0)

取消