日期: 2015年08月25日

 

用户、组的相关配置文件:

 

在Linux系统中,用户账号信息、用户密码、组账号信息、组密码都保存在不同的配置文件中

 

/etc/passwd  文件的格式,每行包含的信息:

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

用户名:密码占位符:UID:GUID(基本组ID):用户备注信息(多个以,隔开):家目录:默认shell

 

/etc/shadow文件的格式,每行包含的信息:

UserName:加密的密码:最近一次密码修改时间:最短使用期限:最长使用期限:警告区间:非活动区间:帐号的过期期限:预留段

 

/etc/group文件的格式,每行包含的信息:

group_name:passwd:GID:user_list

组名:密码占位符:GID:组内包括的用户

 

/etc/gshadow

组名:组密码:组管理员:组内成员

 

用户的ID及组ID范围是0-65535

管理员:0

普通用户:1-60000 (一般情况下都不会使用60000以上的ID号)

系统用户:

CentOS6: 1-499

CentOS7: 1-999

登录用户:

CentOS6: 500+

CentOS7: 1000+

 

 

用户管理、组管理的相关命令:

useradd、usermod、id、passwd、userdel、chsh, chfn、chage、

groupadd、groupmod、groupdel、gpasswdnewgrp、su

 

<<========================================useradd========================================>>

useradd命令

功能:

创建用户

 

格式:

useradd[options] LOGIN

useradd-D [options]  指定创建用户的默认选项

 

常用选项:

-r: 创建系统用户,(默认不创建家目录)

-u UID: 指定UID

-g GID: 指定用户所属的基本组,(该组必须事先存在)

-c 'comment': 指定用户注释信息

-d /PATH/TO/SOMEWHERE: 指定用户的主目录路径,(此目录不能事先存在)

-s SHELL: 设定用户的默认shell

系统支持的shell列表:/etc/shells

-G GID: 指定用户所属的附加组

-M不为用户创建家目录

 

-m或--create-home:为用户创建家目录

创建的用户的时候默认会创建用户家目录,除非加了-M选项不为用户创建家目录

-m选项一般是在创建系统用户要又要为其创建家目录时使用。后面无需指定路径。

 

实例:

//创建一个用户yao,指定其UID号为1001,隶属与manager组,家目录路径为/home/manager/yao

[root@CentOS-6~]# useradd -u 1001 -g manager -d /home/manager/yao  yao

[root@CentOS-6~]#

[root@CentOS-6~]# id yao

uid=1001(yao)gid=500(manager) groups=500(manager)

[root@CentOS-6~]#

yao:x:1001:500::/home/manager/yao:/bin/bash

[root@CentOS-6~]#

[root@CentOS-6~]# tree /home

/home

└── manager

    └── yao

 

2directories, 0 files

 

 

<<========================================usermod========================================>>

usermod命令

功能:

修改用户账号属性信息

 

格式:

usermod[options] LOGIN

 

常用选项:

-u UID 修改用户UID

-g GID 修改用户基本组

-G GID[,GID,...]修改用户所属的附加组;

-a: 追加附加组,与-G同时使用

-c 'COMMENT'  修改用户注释信息

-d HOME: 修改用户的家目录为新位置时,用户原来的文件不会被移动

-m 修改用户家目录时同时迁移期家目录内文件与-d同时使用

-s: 修改默认shell

-l: 锁定用户

-U: 解除锁定

 

实例:

//修改UID为500,添加附加组sales,修改主目录为/home/yao,同时转移主目录文件,并添加注释信息

[root@CentOS-6~]# usermod -u 500 -a -G sales -c 'Mr.yao' -m -d /home/yao yao

[root@CentOS-6~]#

[root@CentOS-6~]# tail -1 /etc/passwd

yao:x:500:500:Mr.yao:/home/yao:/bin/bash

[root@CentOS-6~]#

[root@CentOS-6~]# id yao

uid=500(yao)gid=500(manager) groups=500(manager),501(sales)

[root@CentOS-6~]#

 

 

<<========================================id========================================>>

id命令

功能:

显示真实有效的用户ID(UID)和组ID(GID)

 

格式:

id[OPTION]... [USERNAME]

 

常用选项:

-u 显示用户UID

-g 显示用户基本组ID

-G 显示用户所隶属的所有组的ID

 

 

实例:

//如果不加任何选项,则显示用户名、UID、组名、组ID等所有信息

[root@CentOS-6~]# id yao

uid=500(yao)gid=500(manager) groups=500(manager),501(sales)

[root@CentOS-6~]# id -u yao

500

[root@CentOS-6~]# id -g yao

500

[root@CentOS-6~]# id -G yao

500501

[root@CentOS-6~]#

 

 

<<========================================passwd========================================>>

passwd命令

功能:

给用户设定或修改密码

 

格式:

 passwd [-k]  [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warn-

       days] [-i inactivedays] [-S] [--stdin][username]

 

常用选项:

-d:  删除用户密码

-e:  让用户的密码过期,强制下次登录式修改

-l:  锁定用户登录

-u:  解除用户锁定

 

如果直接键入passwd则默认为自己修改密码,passwd用户名 则是管理员为某用户修改密码

--stdin 从标准输入接收用户密码(使用脚本为用户设置密码时常用)

 

实例:

//为用户yao修改密码,使用管道送给passwd从标准输入接收。

[root@CentOS-6~]# echo 'yao3800' | passwd  --stdin  yao

Changingpassword for user yao.

passwd:all authentication tokens updated successfully.

[root@CentOS-6~]#

[root@CentOS-6~]#

 

 

<<========================================userdel========================================>>

userdel命令

功能:

删除用户

 

格式:

userdel[options] LOGIN

 

常用选项:

-r:  删除用户时连同用户的主目录一起删除

-f:  强制删除,即使该用户已登录系统

 

实例:

//加-r选项,删除用户时同时删除其家目录

[root@CentOS-6~]# tail -n 1 /etc/passwd

yao:x:500:500::/home/userhome:/bin/bash

[root@CentOS-6~]# ll /home

total8

drwxr-xr-x.2 root root 4096 Aug 26 20:35 manager

drwx------.3 yao  yao  4096 Aug 27 00:06 userhome

[root@CentOS-6~]#

[root@CentOS-6~]# userdel -r yao

[root@CentOS-6~]#

[root@CentOS-6~]# tail -n 1 /etc/passwd

tcpdump:x:72:72::/:/sbin/nologin

[root@CentOS-6~]#

[root@CentOS-6~]# ll /home

total4

drwxr-xr-x.2 root root 4096 Aug 26 20:35 manager

[root@CentOS-6~]#

 

 

<<========================================chsh========================================>>

chsh命令

功能:

更换登录系统时使用的shell。

若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。

 

格式:

chsh[Option] [username]

 

常用选项:

-s: 指定用户shell

-l: 列出系统中的shell

 

实例:

//修改用户的默认shell为/sbin/nologin,禁止用户登录系统

[root@CentOS-6~]# clear

[root@CentOS-6~]# tail -1 /etc/passwd

yao:x:500:500::/home/yao:/bin/bash

[root@CentOS-6~]#

[root@CentOS-6~]# chsh -l

/bin/sh

/bin/bash

/sbin/nologin

/bin/dash

/bin/tcsh

/bin/csh

[root@CentOS-6~]#

[root@CentOS-6~]# chsh -s /sbin/nologin yao

Changingshell for yao.

Shellchanged.

[root@CentOS-6~]#

 

 

<<========================================chfn========================================>>

chfn命令

修改用户的注释信息

 

常用选项:

-f, --full-name full-name

      用户全名

-o, --office office

      办公室电话

-p, --office-phone office-phone

       办公电话

-h, --home-phone home-phone

     家庭电话

 

实例:

//修改用户的详细注释信息

Changingfinger information for yao.

Name[]: Beckham  

Office[]: 888

OfficePhone []: 688

HomePhone []: 13800138000

 

Fingerinformation changed.

[root@CentOS-6~]#

[root@CentOS-6~]#

[root@CentOS-6~]# tail -1 /etc/passwd

yao:x:500:500:Beckham,888,688,13800138000:/home/yao:/sbin/nologin

 

//使用finger命令查看用户的详细注释信息

[root@CentOS-6~]# finger yao

Login:yao                                   Name:Beckham

Directory:/home/yao                       Shell: /sbin/nologin

Office:888,688                        HomePhone: +1-380-013-8000

Neverlogged in.

Nomail.

NoPlan.

[root@CentOS-6~]#

 

此命令的作用不仅限于查看用户的基本信息,还能查看用户是有哪个终端登录的

 

 

<<========================================chage========================================>>

chage命令

功能:

修改用户帐号和密码的有效期限

 

格式:

chage[options] [LOGIN]

 

常用选项:

-m: 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M: 密码保持有效的最大天数。
-
W: 用户密码到期前,提前收到警告信息的天数。
-E: 帐号到期的日期。过了这天,此帐号将不可用。(常用于设置临时账户)
-d: 用户上一次更改密码的日期,可设置日期格式:
YYYY-MM-DD

如果设置为0,则用户下次登录就要修改密码

-I: 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l: 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

 

实例:

//先使用chage-l 列出用户yao的密码相关信息

[root@CentOS-6~]# chage -l yao

Last passwordchange                                          : 0

Passwordexpires                                                  : never

Passwordinactive                                                : never

Accountexpires                                              : never

Minimumnumber of days between passwordchange                :0

Maximumnumber of days between passwordchange                :99999

Numberof days of warning before passwordexpires                  : 7

 

//修改用户的密码最小使用时间为10天,最长使用时间为30天,上次修改密码时间为2015年8月25日

在密码期满前7天警告用户修改密码,如果用户密码期满后仍没修改密码的话3天后账号将停用。

[root@CentOS-6~]# chage -d 2015-08-25 -M 30 -W 7 -m 10 -I 3 yao

[root@CentOS-6~]#

[root@CentOS-6~]# chage -l yao

Lastpasswordchange                                              : Aug 25, 2015

Passwordexpires                                                    : Sep 24, 2015

Passwordinactive                                                  : Sep 27, 2015

Accountexpires                                               : never

Minimumnumber of days between passwordchange                 :10

Maximumnumber of days between passwordchange                 :30

Numberof days of warning before passwordexpires                    : 7

[root@CentOS-6~]#

 

 

<<========================================groupadd========================================>>

groupadd命令

功能:

添加用户组

 

格式:

groupadd[options] group

 

常用选项:

-g:指定新建工作组的id
-r:创建系统工作组。

 

实例:

//添加一个名为mysql的系统用户组

[root@CentOS-6~]# groupadd -r mysql

[root@CentOS-6~]#

[root@CentOS-6~]# tail -n 5 /etc/group

oprofile:x:16:

tcpdump:x:72:

slocate:x:21:

yao:x:500:

mysql:x:499:

[root@CentOS-6~]#

 

 

<<========================================groupmod========================================>>

groupmod命令

功能:

修改用户组ID或组名称

 

格式:

groupmod[options] GROUP

 

常用选项:

-g  修改用户组ID

-n  修改用户组名称

 

实例:

//修改系统用户组mysql的组名为Oracle,组ID为400

[root@CentOS-6~]# tail -1 /etc/group

mysql:x:499:

[root@CentOS-6~]#

[root@CentOS-6~]# groupmod -g 400 -n Oracle mysql

[root@CentOS-6~]#

[root@CentOS-6~]# tail -1 /etc/group

Oracle:x:400:

[root@CentOS-6~]#

 

 

<<========================================gpasswd========================================>>

gpasswd命令

功能:

修改用户组内成员、管理员等,不加任何选项时则为group设置密码。

 

格式:

gpasswd[option] group

 

常用选项:

-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;

-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

实例:

//为系统用户组Oracle添加密码,为Oracle

[root@CentOS-6~]# gpasswd Oracle

Changingthe password for group Oracle

NewPassword: oracle

Re-enternew password: oracle

[root@CentOS-6~]#

 

//把用户yao加进Oracle系统用户组

[root@CentOS-6~]# gpasswd -a yao Oracle

Addinguser yao to group Oracle

[root@CentOS-6~]#

[root@CentOS-6~]# id yao

uid=500(yao)gid=500(yao) groups=500(yao),400(Oracle)

[root@CentOS-6~]#

 

 

<<========================================newgrp========================================>>

newgrp命令

功能:

例如用户需要运行一个程序,但是没有权限时,可临时切换进该程序的所有组,让用户临时拥有改组的权限,

当用户临时加入该组后创建的文件的属组也会是这个组,提前是要先用gpasswd为用户组创建密码。

 

格式:

newgrp[-] [group]

 

实例:

//先创建一个用户user1,把user1临时加入Oracle组

[root@CentOS-6~]# useradd user1

[root@CentOS-6~]#

[root@CentOS-6~]# su - user1

[user1@CentOS-6~]$ newgrp Oracle

Password:

 

//使用id命令查看user1的用户ID和组ID,此时可见user1已经临时加入到Oracle组了

[user1@CentOS-6~]$ id

uid=501(user1) gid=400(Oracle) groups=400(Oracle),501(user1) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

 

//在主目录下创建名为123的目录,可见,该目录的属主为Oracle组

[user1@CentOS-6~]$

[user1@CentOS-6~]$ mkdir 123

[user1@CentOS-6~]$ ll

total4

drwxr-xr-x.2 user1 Oracle 4096 Aug 27 02:08 123

 

//使用exit命令后退出该组,再用id命令查看user1用户,此时已不再隶属于Oracle组了

[user1@CentOS-6~]$ exit

exit

[user1@CentOS-6~]$ id

uid=501(user1) gid=501(user1)groups=501(user1)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[user1@CentOS-6~]$

 

 

<<========================================groupdel========================================>>

groupdel命令

功能:

删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。

若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

 

格式:

groupdelgroup

 

 

<<==========================================su==========================================>>

su命令

功能:

SwichUser 切换当前用户身份到其他用户身份,

管理员切换到普通用户时无需输入密码,普通用户则要输入密码

 

格式:

su[OPTION] USERNAME

su [-]USERNAME

 

 

常用选项:

-c<命令>或--command=<命令>:执行完指定的命令后,即恢复原来的身份

-或-l:完全切换,同时变更工作目录,以及HOME,SHELL,USER,和环境变量等

-m,-p或--preserve-environment:变更身份时,不要变更环境变量

-s<shell>或--shell=<shell>:指定要执行的shell

使用su切换用户身份时,如果不加任何选项的话则是不完全切换,工作目录跟SHELL、环境变量等都不变。

实例:

//使用su命令切换到用户yao的身份,执行id命令

[root@CentOS-6~]# su -c id yao

uid=500(yao) gid=500(yao)groups=500(yao),400(Oracle)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[root@CentOS-6~]#