日期: 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、gpasswd、newgrp、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~]#
原文地址:http://yao3800.blog.51cto.com/1522113/1688684