Linux之用户、组管理
Linux系统是一个多用户多任务的分时操作系统。任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
用户账号的管理,主要有以下方面:
1、用户分类、基本信息、密码策略
2、用户组的管理
3、用户、组常用管理命令
用户分类
超级用户:拥有对系统的最高管理权限,默认是root用户。
普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限。
虚拟用户:也叫“伪”用户/系统用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。如一般运行的web服务,默认就是
使用的nobody用户,但是nobody用户是不能登录系统的。
用户UID:0-65535 ;
管理员:0;
普通用户:1-60000 ;
系统用户:
CentOS6系列: 1-499;
CentOS7系列:1-999;
用户相关配置文件信息
/etc/passwd:用户名、UID、基本组等信息
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
对应的解析
登录名:x:UID:GID:comment:主目录:用户默认shell
如:root:x:0:0:root:/root:/bin/bash
/etc/shadow:用户密码及相关属性;
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account
expiration date:reserved field
对应的解析
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
如:gentoo:!!:16672:0:99999:7:::
用户密码的复杂性策略:
--使用数字、小写字母、大写字母、特殊字符四类中至少三类;
--足够长,建议8位以上;
--使用随机密码;
--定期更换;
组的管理
组分类:管理员组:ID=0 ;普通组:ID=(Centso6系列1-499, Centos7系列1-999) 附加组:ID=(Centso6系列500+, Centos7系列1000+)
组的相关的配置文件:
/etc/group:组名、GID、组内包含的用户;
如:root:x:0:
/etc/gshadow:组的密码及相关属性;
如:gentoo:!::
用户、组常用管理命令
用户相关命令:useradd、usermod、passwd、userdel
组相关命令:groupadd、groupmod、gpasswd、groupdel
其他命令:chage, chsh, chfn --了解即可
useradd:创建用户
语法:useradd [options] LOGIN
useradd -D [options]
常见的参数选项
-r: 创建系统用户
-u UID: 指定UID;
-g GID: 指定用户所属基本组,此组必须事先存在
-c 'COMMENT':一段注释性描述
-d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;
-s SHELL:设定用户的默认shell;
-G GID,...:指定所属的附加组;
-M: 不给用户创建家目录;
示例:创建用户Oracle,所属附加组database和sql,ID号为3000, 家目录为/home/database
[root@localhost ~]# useradd -u 3000 -G database,sql -d /home/database Oracle
用id查看创建信息
[root@localhost ~]# id Oracle
uid=3000(Oracle) gid=3000(Oracle) 组=3000(Oracle),500(database),501(sql)
userdel:删除用户
语法:userdel [-r] USERNAME
常见参数选项
-r:删除用户的同时删除其家目录;
示例:查看用户并删除用户
[root@localhost ~]# id centos
uid=3001(centos) gid=3001(centos) 组=3001(centos)
[root@localhost ~]# userdel centos
[root@localhost ~]# id centos
id: centos:无此用户
usermod:用户属性修改
语法:usermod [OPTION]... LOGIN
常见的参数选项
-u UID
-g GID
-G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项;
-s SHELL
-c 'COMMENT'
-d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录;
-l LOGIN:修改账户名称
-L:lock user 锁定用户密码,使密码无效
-U: unlock user 解锁密码
示例:修改centos用户名称为rhl
[root@localhost ~]# usermod -l rhl centos
[root@localhost ~]# id centos
id: centos:无此用户
[root@localhost ~]# id rhl
uid=3001(rhl) gid=3001(centos) 组=3001(centos)
passwd:设置或修改密码
语法:passwd [OPTION] [UserName]
常见参数选项
-l: lock user 锁定
-u: unlock user 解锁
-n mindays: 最短使用期限;
-x maxdays:默认为99999天;
-w warndays:在距多少天提醒用户修改密码;仅能root权限操作;
-i inactivedays:在密码过期后多少天,用户被禁掉,仅能以root操作;
--stdin:从标准输出接收用户密码;
示例:设置centos用户密码为centos
[root@localhost ~]# echo 'centos' | passwd --stdin centos
groupadd、groupdel:创建组、删除组
语法:groupadd、groupdel [OPTIONS] GROUPNAME
常见参数选项
-g GID: 指明组ID;
-r: 创建系统组;
示例:创建系统组webserver,注意UID与普通组的UID有什么同
[root@localhost ~]# groupadd -r webserver
[root@localhost ~]# cat /etc/group
webserver:x:989:
[root@localhost ~]# groupdel webserver /删除该系统组
groupmod: 组属性修改
语法:groupmod [OPTION] GROUPNAME
常见参数选项
-n GROUP_NAME 组名称
-g GID
示例:更改linuxso组名为LinuxOS
[root@localhost ~]# groupadd linuxso
[root@localhost ~]# tail -1 /etc/group
linuxso:x:3001:
[root@localhost ~]# groupmod -n LinuxOS linuxso
[root@localhost ~]# tail -1 /etc/group
LinuxOS:x:3001:
gpasswd:设置、修改组密码
语法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
常见的参数选项:
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
示例:设置centos组密码,如系统有个CENTOS账户,该账户本身不是centos组的成员,使用newgrp需要输入密码即可让使用者暂时加入成为该组成员,之后CENTOS建立的文件group也会
是centos。所以该方式可以暂时让centos建立文件时使用其他的组,而不是centos本身所在的组。
所以使用gpasswd centos设定密码,就是让知道该群组密码的人可以暂时切换具备centos群组功能的。
注:newgrp:切换基本组为指定的组
[root@localhost ~]# id CENTOS
uid=3003(CENTOS) gid=3003(CENTOS) 组=3003(CENTOS)
[root@localhost ~]# tail -1 /etc/group
centos:x:3001:
[root@localhost ~]# gpasswd centos //设置组密码
Changing the password for group centos
New Password:
Re-enter new password:
[root@localhost ~]# su - CENTOS 切换用户
[CENTOS@localhost ~]$ id
uid=3003(CENTOS) gid=3003(CENTOS) 组=3003(CENTOS)
[CENTOS@localhost ~]$ newgrp centos 切换组
密码:
[CENTOS@localhost ~]$ id
uid=3003(CENTOS) gid=3001(centos) 组=3001(centos),3003(CENTOS)
其他命令chage、chsh、finger,只是简单了解某些命令需要安装才能使用
chage:修改帐号和密码的有效期限
语法:chage[-l][-m mindays][-M maxdays][-I inactive][-E expiredate][-W warndays][-d lastdays]username
常用参数选项:
-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:有效期,0表示立即过期,-1表示永不过期
-W:密码过期前,开始警告天数
chsh:更换登入系统时使用的shell
语法:chsh[-luv][-s][USERNAME]
常见参数选项:
-s:更改系统预设的shell环境。
-l:列出目前系统可用的shell清单。
finger:查找并显示用户信息
语法:
常见参数选项
-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell
-m:排除查找用户的真实姓名。
-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间