linux中useradd命令用法

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

时间: 2024-10-16 11:07:11

linux中useradd命令用法的相关文章

Linux中tail命令用法详解_Linux

tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文件写到标准输出.很多人喜欢使用tail –f 来监控日志文件. 一.Linux tail命令格式 Linux tail命令 格式如下所示 tail [OPTION]... [FILE]... Linux tail命令 参数如下所示 -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c

linux中uptime命令用法介绍

uptime命令用法十分简单:直接输入uptime即可. 另外还有一个参数  -V ,是用来查询版本的. (注意是大写的字母v) [linux @ localhost]$ uptime –V procps version 3.2.7 [linux @ localhost]$ uptime 显示结果为: 10:19:04 up 257 days, 18:56,  12 users,  load average: 2.10, 2.10,2.09 显示内容说明: 10:19:04           

linux中whereis命令用法与which区别

whereis语法 whereis [ -s ] [ -b ] [ -m ] [ -u ] [ { { -S | -B | -M } Directory ... }... -f ] 要找的文件名. 补充说明:whereis指令会在特定目录中查找符合条件的文件.这些文件的属性应属于原始代码,二进制文件,或是帮助文件. 描述 whereis 命令找到指定文件的源.二进制文件和手册等各部分.提供的名称首先去除前导路径名组件和任何(单个的)格式为 .ext 的尾随扩展名(例如,.c).由于使用源代码控制

linux中htpasswd 命令用法

在你想要限制用户的访问目录下加上下面两行  代码如下 复制代码 auth_basic "enter username and password "; auth_basic_user_file  nginx_passwd: htpasswd 限制 在Windows和MPE平台上, 由htpasswd加密的密码的长度上限是255个字符. 太长的密码会被截断为255个字符. htpasswd使用的MD5算法是专供Apache软件使用的: 其加密的密码不能为其他网站服务器所使用. 用户名的长度

linux中ls命令用法详解

ls 普通文件: -,f 目录文件: d 链接文件(符号链接): L 设备文件: 字符设备:c 块设备:b 命名管道: p 套接字文件: s linux文件时间戳 时间分为三种类型:创建时间, 修改时间:open 访问时间:读写 改变时间:源数据发生改变时间 在linux中同目录中,目录和文件是不能同名的 ls :列出目录内容 ls -a查看所有文件 [root@docker-node1 scripts]# ls -a .  ..  cmdline-jmxclient-0.10.3.jar  j

linux中dd命令用法详解

使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果你想要在线看 manual, 可以试试: dd --help 或是 info dd 如果你想要看看这个版本如何: dd --version 输入或输出 dd if=[STDIN] of=[STDOUT] 强迫输入或输出的Size为多少Bytes bs: dd -ibs=[BYTE] -obs=[SIZE] 强迫一次只做多少个 Bytes cbs

Linux中colrm命令用法

  NAME colrm命令也算shell中比较常见的命令,用法比较简单从指定的文件移除或过滤指定的列. SYNOPSIS colrm [startcol [endcol ] ] DESCRIPTION Colrm命令能从一个文件中移除指定的列,从一个标准的input文件中提供输入,输出同样为标准输出. EXAMPLE 假如: 文件:text.file 内容:123456789 例1. $ colrm 4 < test.file 那么test.file中的内容为: 123 #从第四列开始全部移除

Linux中vi命令用法详解

vi存在两种模式: 指令模式和输入模式.在指令模式下输入的按键将做为指令来处理:如输入 a,vi即认为是在当前位置插入字符.而在输入模式下,vi则把输入的按键当作插入的字符来处理.指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次 [ESC],系统如发出哔哔声就表示已处于指令模式下了. 付:在指令模式进入输入模式的指令: 新增 (append) a :从光标所在位置後面开始新增资料,

linux中Shell命令用法入门教程

什么时候使用Shell 因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化.因此,Shell脚本只要"用心写"一次,即可应用到很多系统上.因此,之所以要使用Shell脚本是基于:     简单性:Shell是一个高级语言:通过它,你可以简洁地表达复杂的操作.     可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行.     开发容易:可以在短时间内完成一个功能强大又妤用的脚本. 但是,考虑到Shell脚本的命令限制和效率问题