用户管理命令(二十)

用户管理命令:useradd,usermod,userdel,chage,groupadd,groupdel,groupmod,newgrp,gpasswd

20.1.useradd

功能:添加新用户或更新新用户信息

语法: useradd 选项 用户名

常用参数:

-u:用户uid

-g:用户的主组

-G:附加组

-s:默认shell

-d:家目录

-D:变更预设值

-c:注释说明

-e:过期时间

-f: <缓冲天数> 指定在密码过期后多少天即关闭该账号。

-m:自动建立用户的家目录。

-M: 不要自动建立用户的家目录。

-n:取消建立以用户名为名的用户组。

-r: 建立系统账户。 

在知道怎么使用这个命令前,先普及一些基础知识:

用户标识:UserID,UID,共65535个;

管理员(root):0

系统用户:

centos5,6:1-499

centos  7:1-999

普通用户:

centos5,6:500+

centos 7:1000+

用户管理相关的文件:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

说明:

系统默认给一个家 /home/$username 家里还添置了一些家具

指定默认shell(能不能登录操作系统)

# cat /etc/shells

/bin/sh 早期unxi

/bin/bash  系统默认的shell(可以登录操作系统)

/sbin/nologin  非交互式shell(不能登录操作系统)

/bin/dash

/bin/tcsh

/bin/csh

默认还会指定uid和gid(创建一个主组)

示例:

[[email protected] ~]# useradd -u 4294967295 user2   #不成功,报错,证明uid数超过最大值
useradd: invalid user ID ‘4294967295‘
[[email protected] ~]# useradd -u 4294967294 user2   #成功,这个数就是就是当前版本支持的最大uid数
[[email protected] ~]# 
[[email protected] ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
useradd: group ‘1001‘ does not exist
[[email protected] ~]# id user03
id: user03: No such user
[[email protected] ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
useradd: cannot create directory /home/abc/user03
[[email protected] ~]# id user03
id: user03: No such user
[[email protected] ~]# mkdir /home/abc
[[email protected] ~]# useradd -u 1001 -g 1001 -d /home/abc/user03  user03
[[email protected] ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin)
[[email protected] ~]# su - user03
[[email protected] ~]$ pwd
/home/abc/user03
[[email protected] ~]# useradd -s /sbin/nologin -d /rhome/abc/ -c ‘zidingyi‘ user04
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[[email protected] ~]# su - user04
This account is currently not available.
[[email protected] ~]# usermod -s /bin/bash user04
[[email protected] ~]# su  - user04
-bash-4.1$ pwd
/rhome/abc/
-bash-4.1$ logout
[[email protected] ~]# cp -a /etc/skel/. /rhome/abc/
[[email protected] ~]# su - user04

几个小实验:

(1)去掉/etc/passwd里root用户第二列的x,确认登录系统不需要密码,加回x,密码不变

[[email protected] ~]# sed -i ‘1s/x//‘ /etc/passwd
说明:验证登录是没有密码了
[[email protected] ~]# sed -i ‘1s/root::/root:x:/‘ /etc/passwd  #加回去
[[email protected] ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

(2)普通用户只能自己改自己的密码,还需要原密码才能改,改的密码还要一定的密码复杂度(最少8位,字母,数字,符号最好都有就没问题)

(3)用一个普通用户来测试/etc/shadow里的第四列

步骤一:第四列为0,这个普通用户随时可以修改自己的密码

步骤二:把0改为2,这个普通用户改密码会报You must wait longer to change your password的错误

步骤三:可以使用date -s "20140719"这样的命令把当前时间改成3天后,再去测试,发现可以改了,验证成功;时间改回来的例子# date -s "20140716 15:12:10"

以user04为例

[[email protected] ~]# tail -1 /etc/shadow   #第四列为0
user04:$6$3Ujgmfgh$cbbnJKG24jTL2CjjbNngiknKJhGpbaITrakxGPxDu05aCGzCR.i/.nDUzvEB/.a4YbXw5tp4HXbkKh0eaIGf00:17339:0:99999:7:::
[[email protected] ~]# tail -1 /etc/shadow  #第四列改为2
user04:$6$3Ujgmfgh$cbbnJKG24jTL2CjjbNngiknKJhGpbaITrakxGPxDu05aCGzCR.i/.nDUzvEB/.a4YbXw5tp4HXbkKh0eaIGf00:17339:2:99999:7:::
[[email protected] ~]$ passwd   #报错了
Changing password for user user04.
Changing password for user04.
(current) UNIX password: 
You must wait longer to change your password
passwd: Authentication token manipulation error
[[email protected] ~]# date -s "20170625 11:43:40"  #修改日期
Sun Jun 25 11:43:40 CST 2017
[[email protected] ~]# date
Sun Jun 25 11:43:42 CST 2017
[[email protected] ~]$ passwd
Changing password for user user04.
Changing password for user04.
(current) UNIX password: 
New password: 
Retype new password: 
Sorry, passwords do not match.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[[email protected] ~]# date -s "20170622 11:47:40"  #改回日期
Thu Jun 22 11:47:40 CST 2017
[[email protected] ~]# date
Thu Jun 22 11:47:42 CST 2017

(4)验证/etc/shadow里的第8列

步骤一:以测试user1用户为列,把它在shadow里的第8列改成16266(这相当于今天来说是昨天就过期了)

步骤二:先用su - test切换另一个普通用户,再用这个普通用户来su - user1切换user1,输入正确密码,但报下面的错误

$ su - user1
Password: 
Your account has expired; please contact your system administrator
su: incorrect password

20.2.userdel 

功能说明:删除用户账号。

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令。

语法:userdel 选项 用户名

参数:

-r 它的作用是把用户的主目录一起删除。

-f 删除用户家目录以及目录中所有文件。

示例

# userdel -r sam

20.3.usermod

功能说明:修改用户信息

语法:usermod 选项 用户名

常用选项:

-u:用户uid

-g:用户的主组

-G:附加组

-s:默认shell

-d:家目录

-c:注释说明

补充说明:

用户信息相关的配置文件:

/etc/passwd  存放用户相关信息

/etc/shadow  存放用户密码相关信息

$home   用户的家目录

man 5 passwd

/etc/passwd

account:password:UID:GID:GECOS:directory:shell

账号:密码:UID:GID:注释说明:家目录:默认的登录shell

--vim /etc/passwd

root:x:0:0:root:/root:/bin/bash

第一列: 用户名

第二列:密码     老版本这里放的就是密码,为了安全性考虑,密码放到了/etc/shadow的第二列

x代表/etc/shadow的第二列生效,去掉x就表示此用户登录的时候没有密码

第三列:uid     用户识别ID值,系统是通过这个值来确认是哪个用户

第四列:gid     组识别ID值

第五列:描述项   comment

第六列:家目录

第七个:bash    当前用户使用的bash

/bin/bash      表示此用户使用bash,用户可以登录系统,可以收邮件,可以登录FTP

/sbin/nologin  表示用户不能登录系统,可以收邮件,可以登录FTP

/bin/false     表示用户不能登录系统,可以收邮件,不能登录FTP

/etc/shadow

--vim /etc/shadow

root:$1$.1RfCu/n$ModWntxLJRC6SpgAXSDO81:14694:0:99999:7:::

与/etc/passwd相对应 (但这里有九列)

第一列:login name 用户名

第二列:encrypted password 密码   (这里以*号开头或!开头默认是不能登陆的)!!代表空密码,未设置密码

第三列:date of last password change 上一次修改密码的时间,linux以1970年1月1日到现在的天数来算的,等于0代表下一次登录操作系统强制修改密码

# date --date=‘1970-01-01 +16896days‘

Tue Apr  5 00:00:00 CST 2016

第四列:minimum password age 修改密码后几天内不允许再修改,如果这里为5,那改过密码后5天内不能再修改 0代表不限制(只对普通用户有效)

第五列:maximum password age 多少天内必须要求你改,30代表每隔30天更新一次密码; 默认永远不更新,99999代表不限制

第六列:password warning period 过期前几天给你一个告警信息,7代表密码过期前7天发出警告

第七列:password inactivity period,密码过期后还给的一个宽限天数,3代表密码过期后3天内依然可以登录操作系统;过了3天后帐号被封锁。

第8列: account expiration date 这里可以写一个过期天数,这里也是以1970年1月1日到现在的天数来计算的,多用于收费系统

第九列:reserved field 保留,留着以后功能扩展


20.4.passwd

功能说明:更新用户的身份验证令牌

语法:passwd 选项 用户名

补充说明:passwd指令让用户可以更改自己的密码,而系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

(1)passwd:修改当前用户密码;

(2)passwd  username:修改其他用户的密码,仅root有此权限;

参数:

-l 锁定口令,即禁用账号。

-u 口令解锁。

-d 使账号无口令。

-f 强迫用户下次登录时修改口令,如果默认用户名,则修改当前用户的口令。

-k 设置只有在密码过期失效后,方能更新。

-s 列出密码的相关信息。

--stdin:从标准输入接收密码;

echo "PASSWORD" |passwd --stdin  USERNAME

如下图:

示例:

[[email protected] ~]# passwd -d user03  #删除用户密码
Removing password for user user03.
passwd: Success
# passwd -l sam
[[email protected] ~]# passwd -l user04  #锁定用户
Locking password for user user04.
passwd: Success

20.5.chage

功能说明:更改用户密码过期信息

# chage --help

Usage: chage [options] [LOGIN]

常用选项:

-d, --lastday LAST_DAY set date of last password change to LAST_DAY 最后一次更改密码的时间

-E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE 帐号的过期时间

-h, --help display this help message and exit

-I, --inactive INACTIVE set password inactive after expiration

to INACTIVE 宽限期

-l, --list show account aging information 查看用户密码信息

-m, --mindays MIN_DAYS set minimum number of days before password

change to MIN_DAYS 密码的最小生存周期

-M, --maxdays MAX_DAYS set maximim number of days before password 密码的最大生存周期

change to MAX_DAYS

-W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS 密码过期前几天发出警告

示例:

[[email protected] ~]# chage -l user03   #列出用户密码的信息
Last password change: Jun 22, 2017
Password expires: never
Password inactive: never
Account expires: never
Minimum number of days between password change: 0
Maximum number of days between password change: 99999
Number of days of warning before password expires: 7
[email protected] ~]# chage -d 0 user03用户下一次登录操作系统强制修改密码

20.6.groupadd

功能:增加用户组

语法:groupadd 选项 用户组

常用选项:

-g:指定gid

-o:指定相同的gid, 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

-r:指定组管理员

groupadd --help 查看

/etc/group 组信息

组名:组密码:组id:组成员

示例:

[[email protected] ~]# groupadd group1
[[email protected] ~]# groupadd -g 101 group2

20.7.groupdel

功能:删除用户组

语法:groupdel 用户组

示例:

[[email protected] ~]# groupdel group1

20.8.groupmod

功能:修改组属性

语法:groupmod 选项 用户组

常用选项:

-g GID 为用户组指定新的组标识号。

-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。

-n 新用户组 将用户组的名字改为新名字

示例:

[[email protected] ~]# groupmod -g 102 group2
[[email protected] ~]# groupmod -g 10000 -n group3 group2

20.9.newgrp

功能:登陆到一个新组

语法:newgrp [-] [group]

示例:

[[email protected] ~]# usermod  -G root user03
[[email protected] ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root)
[[email protected] ~]$ newgrp  root #一个用户有多个组,就可以用newgrp进行切换当前组

20.10.gpasswd 

功能:为组添加密码

组密码文件:/etc/gshadow

gpasswd 【选项】 group

常用参数:

-a USERNAME:把用户添加至组中;

-d USERNAME:从此组中移除此用户;

-r USER_NAMEG : 删除组的密码

# gpasswd --help

示例:

[[email protected] ~]# groupadd -g 10015 group1
[[email protected] ~]# gpasswd -a user03 group1
Adding user user03 to group group1
[[email protected] ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root),10015(group1)
[[email protected] ~]# gpasswd -d user03 group1
Removing user user03 from group group1
[[email protected] ~]# gpasswd -M user03,user04 group1
[[email protected] ~]# id user03
uid=1001(user03) gid=1001(admin) groups=1001(admin),0(root),10015(group1)
[[email protected] ~]# id user04
uid=1002(user04) gid=1002(user04) groups=1002(user04),10015(group1)

练习一:

1、建立一个组,名字为admin,组id为900

groupadd admin
groupmod -g 900 admin
或者
groupadd -g 900 admin

2、建立一个用户tom,并且将admin组作为tom用户的附加组(建立用户的时候完成),密码是123

useradd -G 900(或者admin)tom
echo 123 |passwd --stdin tom

3、建立一个用户为jack,要求在建立用户后将jack加入到admin组里,密码为123

useradd jack
gpasswd -a jack admin
echo 123 |passwd --stdin jack

4、给admin组设置一个密码,为123

gpasswd admin
测试:
newgrp admin

5、把tom用户设定为admin组的管理员

gpasswd -A tom admin
测试:
su - tom
gpasswd -d user1 admin

练习二:

1、添加3个用户,harry,natash,sarsh。要求harry,natash用户的附加组为admin组,sarsh用户的默认shell为非交互式,密码均为123.

方法一:

useradd -G admin harry
useradd -G admin natash
useradd -s /sbin/nologin sarsh
echo 123 |passwd --stdin harry
方法二:
useradd harry
usermod -G admin harry
。。。

2、修改haryy用户的家目录为/home/world/redhat/harry

mkdir /home/world/redhat -p
usermod -m -d /home/world/redhat/harry harry

或者练习:

1、将/etc/passwd文件拷贝到/tmp目录下面。在/tmp/passwd文件的第15行下添加“hello world”,并复制其下5行,粘贴在文件的最下面,保存。然后全文搜索将“/bin/bash”替换成world,并保存后面20行到/tmp/passwd.bak文件中,退出编辑。

2、找出/etc/下面的所有目录并将其重定向到/tmp/etcdir文件里

3、在/tmp/etcdir文件中追加“好好学习,天天向上”,然后把/etc/passwd文件的内容添加到/tmp/etcdir文件里,并重命名为newetcdir

mkdir /home/world/redhat/harry
usermod -d /home/world/redhat/harry harry
cp -a /etc/skel/. /home/world/redhat/harry

说明:

usermod命令修改家目录,家目录的上一级目录必须存在,家目录本身系统会自动创建;如果不存在需要创建。

3、修改natash,sarsh用户的主组为world,并且可以登录操作系统

groupadd world
usermod -g world natash
usermod -g world -s /bin/bash sarsh

练习三:

1、新建一个公司world,该公司有3个部门cw、rs、sc;每个部门要求建立2个用户,如cw01,cw02..;boss01管理公司所有部门,所有用户的密码均为123456

groupadd world
groupadd cw
groupadd rs
groupadd sc
useradd cw01 -g cw -G world
useradd boss01 -g world -G cw,rs,sc
echo 123456|passwd --stdin cw01

2、所有用户帐号的有效期为3个月(90天),第一次登录操作系统强制修改密码,每隔15天更新一次密码

chage -l cw01
chage -E "$(date +%Y%m%d --date=‘90 days‘)" -d 0 -M 15 cw01
或者
date +%F --date=‘90 days‘
2016-07-04
# chage -E ‘2016-07-04‘ -d 0 -m 3 cw01
时间: 2024-07-28 16:06:48

用户管理命令(二十)的相关文章

Linux用户管理命令详解之二

Linux下常用用户管理命令有:useradd.userdel.usermod.passwd.chsh.finger.id.chage 4.改变用户的shell 命令:chsh 语法:chsh [-s shell] [-l] [-u] [-v] [username] 选项: -s:改变当前shell -l:显示/etc/shells目录下的shell 说明:这是用来改变使用者自己的 shell 的指令!由于这个档案能够改变 /etc/passwd 的内容,所以他的预设属性就有SUID的属性了!通

Linux学习之用户管理命令与用户组管理命令(十五)

Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel 用户切换命令su 用户组管理命令 添加用户组 修改用户组 删除用户组 将用户添加到组或者从组中删除 用户管理命令 用户添加命令useradd 只能超级用户才能添加用户. useradd [选项] 用户名 选项: -u UID:手工指定用户的UID号 -d 家目录:手工指定用户的家目录 -c 用户说明

Linux学习笔记 (五)用户管理命令

一.用户帐号 1.超级用户:具有操作系统中的最高权限,用来管理和维护操作系统.root用户. 2.普通用户:由root用户来创建,在宿主目录中具有完全权限. 3.程序用户:由应用程序添加,维护某个应用程序运行. 二.组帐号 在Linux系统中,将多个用户结合在一起,形成一个组,称为用户组.每个用户帐号至少要属于一个组,这个组称为用户的基本组或者私有组.如果该用户同时还包含在其他的组中,可以将这个组称为附加组或者公共组.对组帐号设置权限,将适用于组内的每一个帐号. 三.常用用户管理命令: 1.us

RHEL7用户管理(二)

RHEL7用户管理 二:用户和组管理命令和配置 1:用户管理命令与实例 1.1:useradd命令 useradd命令用于创建用户,为新用户分配用户号.用户组.主目录和登录Shell等资源,默认情况下只有系统超级用户root才能使用. 语法如下: useradd [-u uid] [-g group] [-G groups] [-d home_dir] [-s shell] [-c comment] [-m [-k shell_dir]] [-N] [-M] login 其中各选项含义如下: -

rhel6 用户管理命令

用户管理一. 用户管理基础    1. 用户的分类        (1) 超级用户(UID=0)       (2) 普通用户(UID=500-...)       (3) 伪用户(UID=1-499)    2. 用户组的分类       (1) 标准组       (2) 私用组    3. 用户管理的文件       (1) /etc/passwd    作用: 存储系统的用户信息    格式:     用户名:口令:UID:主组GID:描述:主目录:shell    实例:      r

linux用户管理命令之NBA版

用户管理命令之NBA版 本文纯属扯淡,如有不严谨之处,还请海涵. 1 groupadd 作用:创建一个属组 格式:groupadd [选项] 属组名 选项:     -:选项为空 创建新属组,    -g:指定组GID,默认是GID+1 实例 1.1 添加属组team,指定组ID为1111     groupadd -g 1111 team 2 groupmod 作用:修改属组信息 格式:groupmod [选项] 属组名 选项:     -g:GID 修改属组GID -n:修改属组名 实例 2

linux用户管理命令

linux的用户管理命令主要有useradd,userdel,usermod useradd useradd用于添加一个用户.adduser与useradd的功能相同,使用ls -l `which adduser`可以发现,adduser是useradd的一个符号链接.     useradd的基本用法为:useradd [options] LOGIN. 例如:添加一个Tom的用户,即为useradd Tom. useradd的选项常用的有-u.-g.-G.-c.-d.-s.-M.-mk.-r.

linux笔记:用户管理命令和用户组管理命令

用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手工指定用户的家目录-c 手工指定用户的说明-g 手工指定用户的初始组-G 指定用户的附加组-s 手工指定用户的登录shell 命令名称:passwd功能:修改用户密码用法:passwd [选项] 用户名选项参数:-S 查询用户密码的密码状态-l 暂时锁定用户-u 解锁用户--stdin 可以通过管道

用户管理命令

Linux 用户类别: 管理用户 普通用户: 系统用户 登录用户 用户标识:UserID,UID 16bits二进制数字:0-65535 管理员:0 普通用户:1-65535 系统用户:1-499(CentOS6),1-999(CentOS7) 登录用户:500-60000(CentOS6),1000-60000(CentOS7) 用户管理命令: useradd命令:创建用户   用法:useradd (选项)(用户名)   选项: -u:指定用户的UID -g:指定基本组ID,此组需事先存在