一:用户账号管理
1.1 什么是用户账号
Linux基于用户身份对资源访问进行控制
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问
另一方面也可以帮助用户组织文件,并为用户提供安全性防护
每个用户账号都拥有一个唯一的用户名和密码
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录
1.2 什么是UID号,账号分哪几种
UID(user identity),用户标识号 。UID号用于系统中的的用户,是一个32位的无符号整数
root用户账号UID默认为0,是LINUX系统中默认的超级用户账号,对本机拥有最高权限,超级用户是唯一的
程序用户的UID默认CentOS 5,6:1~499,CentOS 7:1~999
普通用户的UID默认CentOS 5,6:500~60000,CentOS 7:1000~60000
1.3 用户账号文件位置/etc/passwd
用“:”号隔出了7个字段
依次是
用户账号:密码占位符:用户账号UID:组账号ID:用户说明:家目录:登录shell
密码占位符:x,出于安全,用户的密码信息保存在/etc/shadow里,因为以前/etc/passwd的文件权限为所有人可以访问,并且密码占位符显示了登录密码,所以这里只保留占位符。
登录shell:/bin/bash为可登录系统。/sbin/nologin和/bin/false为禁止用户登录
1.4 用户密码文件/etc/shadow
/etc/shadow里存放了用户的密码,账号有效期等信息。每一行对应一个用户的密码记录。此文件内容默认只有root可以读取,且不允许直接编辑此文件内容,使用“:”分隔为9个字段。
分别是
用户账号名称:加密密码字符串:上次修改密码时间:密码最短有效天数:密码最长有效天数:密码过期提醒时间:密码过期后禁用账号时间:账号失效时间:保留字段
加密密码字符串:使用MD5加密的密码字串信息,当为“”或“!!”时表示此用户不能登录到系统。若该字段为空,则该用户无需密码即可登录系统。
上次密码修改时间:从1970年01月01日开始算到最近一次修改密码的间隔天数
密码的最短有效天数,:自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
密码的最长有效天数: 自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
密码过期提醒时间:提前多少天警告用户密码将过期,默认值为7
账号失效时间:此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。
1.5 添加用户账号
useradd [选项] 用户名 (或者adduser)
常用选项:
-u :指定用户的UID号,要求该UID号码未被其他用户使用。
-d :指定用户的宿主目录位置(当与-M一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录
-e :指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g :指定用户的基本组名(或使用GID号) ,对应的组名必须已存在。
-G :指定用户的附加组名(或使用GID号) ,对应的组名必须已存在。
-M :不建立宿主目录。
-s :指定用户的登录Shell,(比如/bin/bash为可登陆系统, /sbin/nologin和/bin/false为禁止用户登陆系统) 。
#添加用户后,该用户并不能直接登录,因为没有设置密码去激活此用户。
例1:
//创建用户a,指定id号为30
新创建用户在文件尾部,用tail命令查看文件
例2:
//创建用户b,指定家目录在/opt/b
tail -1 /etc/passwd查看刚刚创建b用户的属性
例3:
添加账号过期时间为8月1日的c用户
例4:
d的组号为a的组号2000
例5:
创建用户附加组为b的teacher用户
例6:
创建没有家目录的用户student
例6:
创建用户,设置登录shell为/sbin/nologin,此用户便登录不了。
1.6 设置、更改用户密码
方法一:交互式设置密码
passwd 【选项】 【用户名】
-d:清空指定用户的密码,仅使用用户名登录系统
-l:锁定用户,锁定的用户无法登录系统
-S:查看用户是否被锁定
-u:解锁用户账户
-f:强制操作。(解锁空密码用户时需要添加使用)
#passwd 设置密码,管理员用户可以设置自己的普通用户的密码,普通用户只能设置自己的密码。不加用户名参数,就是设置当前用户
方法二:非交互式设置密码
echo “密码” | passwd --stdin 用户名
例1:
设置c的密码(交互式)
例2:
清除c的密码,使c可以无密码登录
例3:
root用户可以su进入锁定的teacher账户
而普通账户进入不行
例4:
-S查看用户属性,是否被锁定
解锁空密码passwd -u 用户
如果用户是空密码需要加上-f强制执行
例5:
#非交互式设置用户密码。但是,密码是以明文的方式显示在屏幕上
1.7 修改用户账号的属性
常用选项
-u :修改用户的UID号。
-d :修改用户的宿主目录位置。
-e :修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g :修改用户的基本组名(或使用GID号)。
-G :修改用户的附加组名(或使用GID号)。
-S :指定用户的登录Shell.
-l :更改用户账号的登录名称。
-L:锁定用户账户。
-U:解锁用户账户。
#usermod -l 修改的只是用户名,但是家目录等信息没有改变
#usermod -U 解锁,无法介解锁空密码用户,因为 usermod 没有-f 选项
用户c更改了登录名称为abc,但家目录名字没有改变
1.8 删除用户账号
userdel [-r] 用户名
# userdel 删除时,只删除了用户账号,但是家目录等没有删除。添加-r 选项表示连用户家目录和邮件池一起删除
1.9 用户账号的初始配置文件
useradd 命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。
这些文件来自于账号模板目录/etc/skell,基本上都是隐藏文件。
每个用户家目录中都有用户的初始配置文件。这些文件只对当前用户有效
~/.bash_profile :只在用户每次登陆时被执行,会设置一些环境变量,并且会调用该用户的~/.bashrc 文件
~/.bashrc :每次打开新的bash shell 时(包括的登录系统) 会被执行。并会调用/etc/bashrc 文件
~/.bash logout :此文件中的命令将在用户每次退出登录或退出bash shell时执行
在/etc/目录下,还有针对所有用户有效的全局配置文件
/etc/profile : 在登录时加载。 这个文件是为系统全局变量配置文件,可通过 重启系统或者执行source /etc/profile 命令使profile文件被读取
/etc/profile.d/ :这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本 ,会随着/etc/profile 一起被读取
/etc/bashrc : 在登录和切换新的 bash shell 读取。每一个运行bash shell的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取
使用pstree 命令查看bash
二:用户组管理
2.1 用户组的作用
Linux支持用户组,每个用户都有一个用户组,系统可以对一个用户组的所有用户进行集中管理。一个组可以包含多个用户,每个用户也可以属于不同的组。
用户组在Linux中扮演着重要的角色,方便管理员对用户进行集中管理
2.2 组GID
GID:Group IDentiy,组标识号。对于组的唯一标识
root用户账号的GID号为固定值0
程序用户账号的GID号默认为Centos5,6:1~499,Centos7:1~999
普通用户的GID号默认为Centos5, 6: 500~60000, Centos7: 1000~60000
2.3 组账号文件
/etc/group 保存组账号的基本信息,每一行都是一个账号,用分号“:” 分隔为四个字段
从左到右依次是
组账号名称:密码占位符x :组账号GID:组账号包含的用户成员
#:组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔
2.4 组密码的文件
/etc/gshadow保存组密码,每一行都是一个账号,用分号“:”分隔为四个字段
组名:加密密码:组管理员:组附加目录用户列表
2.5 添加组账号
groupadd 【-g GID】 组账号名
//添加组abc
2.6 添加/删除组成员,更改组密码
gpasswd 【选项】 组账号名
常用选项:
-a :向组内添加一个用户
-d :从组内删除一个成员用户
-M :定义组成员列表,以逗号分隔 (如果使用 -M 选项管理组成员,会覆盖原来的组成员列表)
2.7删除组账号
groupdel 组账号名
三,查询账号信息
3.1查询用户所属组
groups 用户名
3.2 查询用户是否存在
id 用户名
3.3 查询账号信息
finger 【用户名】 //需要安装finger软件包
finger a用户信息
w ,who , users命令
w 命令不仅可以查看到登录信息,还可以查看到cpu 负载
21:15:11 当前时间
up: 系统运行时间
1 user :当前一个用户登录
load average:cpu 的负载情况。 第一个是1分钟, 第二个是5分钟, 第三个15分钟
user :登录的用户
tty :登录方式 pts/0 表示远程登录
FROM : 远程登录地址
LOGIN@ :登录时间
IDLE :用户空闲时间,从用户上一次任务结束开始
JCPU :表示正在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间
PCPU :指WHAT 区域的任务执行后耗费的CPU时间
WHAT :表示当前执行的任务
who命令:
users命令: