用户和用户组概述
用户介绍
1)超级用户:
默认是root用户。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。
其UID和GID均为0
2)普通用户:
这类用户一般是由具备系统管理员root的权限的运维人员添加的。
在 centos 7中 ,普通用户的UID范围为1000-60000。
3)程序用户:
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在,且默认情况不能登录系统。它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。
在centos 7中,系统用户的UID范围为1-999。
由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
用户组介绍
linux系统中的用户组(group)就是具有相同特性的用户(user)集合。
有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件对应组的权限,让用户组具有符合需求的操作权限,这样组内所有用户对该文件就会具有相同的权限,这就是用户组的用途。
将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
组账号类型:
1)基本组(私有组)
创建用户账号时,如果没有指定用户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组,默认只容纳一个用户。
在用户所属组中的第一个组称为基本组,基本组在/etc/passwd 文件中指定。
基本组有且唯一。
2)附加组(公共组)
在用户所属组中,除了第一个组(基本组)以外的其他组就是附加组,附加组在/etc/group文件中指定。
附加组可有可无,且可以有多个。
用户账号管理
用户信息存储文件
用户账号文件/etc/passwd
用途:保存用户名称、宿主目录、登录shell等基本信息
冒号(:)作为分隔符,将每行分为了7段。以第一行“root:x:0:0:root:/root:/bin/bash”为例,解释每段含义:
字段1:root,用户名。
字段2:x,密码占位符。为保障用户密码的安全性,密码实际存放在/etc/shadow文件中。
字段3:0,用户编号UID。
字段4:0,用户基本组编号GID。
字段5:root,用户描述说明。
字段6:/root,用户家目录。
字段7:/bin/bash,用户的登录shell。
用户口令文件/etc/shadow
用途:存储用户的密码信息,又称为“影子文件” 。/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性
/etc/shadow文件也是以冒号(:)作为分隔符,将每行分成了9段,每个字段的含义如下:
字段1:用户名。
字段2:密码加密值。当此字段为*或!!时,表示用户不能登录到此系统。当为空时,表示用户无需密码即可登录。
字段3:上次修改密码时间。从1970/1/1到上次修改密码的天数。 0 有特殊意思,表示用户应该在下次登录系统时更改密码。
字段4:最小修改密码间隔天数,即两次修改口令之间所需的最小天数。若不设置,默认为0,表示当天即可修改。 空字段或 0 都表示当天即可修改。
字段5:密码有效期。若为99999,表示永久有效。
字段6:警告时间。表示从系统开始警告用户到用户密码正式失效之间的天数。空字段或者 0 表示没有密码警告期。
字段7:密码过期后的宽限天数。
密码过期后,仍然接受使用此密码进行登录的天数(在此期间,用户应该在下次登录时修改密码)。
字段8:账户失效时间。从1970/1/1日起,到用户被禁用的天数。默认为空。
账户过期不同于密码过期。账户过期后,用户将不被允许登录。密码过期后,用户将不被允许使用此密码登录。
字段9:保留字段。此字段保留作将来使用。
添加用户账号 useradd
命令格式:
useradd [选项] 用户名
在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录。
若未明确知道用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group 和 /etc/shadow 文件中。
选项 | 说明 |
-u | 指定用户的UID,要求该UID未被其他用户使用 |
-d | 指定用户的宿主目录位置(当与-M一起使用时,-d不生效)。必须使用绝对路径指定目录,且不需要事先创建目录。 |
-e | 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式 |
-g | 指定用户的基本组名(或使用GID号),对应的组名必须已存在 |
-G | 指定用户的附加组名(或使用GID号),对应的组名必须已存在 |
-M | 不建立宿主目录(一般用于系统用户账号) |
-s | 指定用户的登录shell(比如/bin/bash为可登陆系统,Isbin/nologin和/bin/false禁止用户登陆系统) |
设置/更改用户口令 passwd
root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。
普通用户只能执行单独的passwd命令修改自己的密码
命令格式:passwd [用户名]
选项 | 作用 |
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户密码,锁定的用户账号将无法再登录系统。(一定要事先设好密码) |
-u | 解锁用户密码 |
-S | 查看用户账户的状态(是否被锁定) |
设置或修改用户密码
passwd 用户名 直接修改
echo "新密码" | passwd --stdin 用户名
修改用户账号的属性 usermod
usermod [选项]... 用户名
选项 | 作用 |
-l | 更改用户账号的登录名称。格式:usermod -l 新名称 旧名称 |
-L | 锁定用户账户 |
-U | 解锁用户账户 |
-u | 修改用户的UID号 |
-d | 修改用户的宿主目录位置 |
-e | 修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式 |
-g | 修改用户的基本组名(或使用GID号) |
-G | 修改用户的附加组名(或使用GID号) |
-s | 指定用户的登录Shell |
删除用户 userdel
userdel [-r] 用户名 //结合-r可以删除宿主目录
用户账号的初始配置文件
文件来源:
新建用户账号时,从 /etc/skel 目录中复制而来, 比如默认bin/bash,默认家目录。
用户宿主目录下的初始配置文件只对当前用户有效。
主要的用户初始配置文件:
~/.bash_profile : 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行 ”source /etc/profile“ 命令使profile文件被读取。
~/.bashrc: 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本。
~/.bash_logout: 每一个允许bash shell 的用户都会执行此文件。可通过执行bash命令打开一个新的bash,使bashrc文件被读取。
组管理
组账号文件
文件位置:
/etc/group:保存组账号基本信息。
/etc/gshadow:保存组账号的密码信息。
group文件每行分成了4段,每个字段含义如下:
字段1:组账号名称。
字段2:密码占位符x;通常不需要设置组密码。由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。类似/etc/shadow文件。
字段3:组编号GID。
字段4:本组的成员用户列表 (一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔 。
添加组账号 groupadd
groudadd [-g GID] 组账号名
添加删除组成员 gpasswd
gpasswd [选项]... 组账号名
选项 | 作用 |
-a | 向组内添加一个用户 |
-d | 删除组内一个用户 |
-M | 定义组人员列表 |
修改组账号的属性 groupmod
groupmod [选项]... 组名
选项 | 作用 |
-g | 修改用户组的编号GID |
-n | 修改用户组的名称 |
删除组账号 groupdel
groupdel 组账号名
查询账号信息
查询用户所属的组 groups
groups [用户名]
查询用户身份标识 id
id [用户名]
查询用户账号的详细信息 finger
finger [用户名]
查询已登录到主机的用户信息
1)w、who、users 命令
2) last 命令,用于显示用户最近登录信息
last [选项]
选项 | 作用 |
-x | 显示系统开关机以及执行等级信息 |
-a | 将登录IP显示在最后一列 |
-f | 读取特定文件,可以选择 -f /var/log/btmp 文件 |
-d | 将IP地址转换为主机名 |
-n | 设置列出名单的显示行数(last -n 3 表示只显示前三行) |
-t | 查看指定时间之前的用户登录历史(格式:-t YYYYMMDDHHMMSS) |
lastlog 命令, 用于显示系统中所有用户最近一次登录信息
选项 | 作用 |
-t <天数> | 显示指定天数内的登录信息 |
-u <用户名> | 显示指定用户的最近登录信息 |
文件和目录的归属管理
查看文件和目录的归属
文件的归属(所有权):
属主:拥有该文件或目录的用户账号。
属组:拥有该文件或目录的组账号
使用 ls -l 命令查看文件的属性
文件的属性分为9列,每列含义如下:
第一列:表示文件类型,-属于普通文件。
第二列:表示文件的UGO权限。rw-r--r--每三个一组。
rw- :属主的权限;
r-- :属组的权限;
r-- :其他人的权限。
第三列:表示ACL表中是否设置了ACL权限。“.” 表示无ACL权限,“+”表示设置了ACL权限。
第四列:表示硬链接数。
第五列:表示文件的属主。
第六列:表示文件的属组。
第七列:表示文件的大小,有多少字节。
第八列:表示最后一次修改时间。
第九列:表示文件名。
设置文件和目录的归属chown、chgrp
chown 属主 文件或目录 //修改属主
chown :属组 文件或目录 //修改属组
chown 属主:属组 文件或目录 //修改属主和属组
chgrp 属组 文件或目录 //修改属组
-R:递归修改指定目录下所有文件、子目录的归属
文件和目录的权限管理
文件的访问权限
权限类型 | 对文件的影响 | 对目录的影响 |
r 读取 | 可读取文件内容 | 可列出目录内容 |
w 写入 | 可修改文件内容 | 可在目录中新建、移动、删除文件或子目录 |
x 执行 | 可作为程序执行 | 可切换目录 |
文件的读、写、执行权限,既可以用字符r、w、x表示,也可以分别表示为八进制数字4、2、1 。
当只有 r 权限时,不能进入该目录,也不能在目录内创建、删除、修改文件。只能通过 “ls 目录路径”查看目录内的文件名称,不能查看文件的属性信息。
当只有 w 权限时,不能进入目录,不能列出目录内的文件,也不能在目录内创建、删除、修改文件。必 须同时有 x 权限,才能创建、删除、修改目录内的文件。
当只有x权限时,只能进入该目录,但不能列出目录内容,也不能创建文件。
x 权限是目录最基础的权限,没有x权限,其他权限也会受影响。
基本权限UGO
u 属主(user);
g 属组(group);
o 其他人(other)。
a 所有人 all(u+g+o)
设置文件和目录的权限 chmod
chmod命令格式:
字符形式:
chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
“+”号代表增加权限,“-”号代表减少相应权限,“=”号代表覆盖对应的权限。
数字形式:
chmod nnn 文件/目录
R 递归修改知道目录下所有子项的权限
权限掩码umask
umask作用:
控制新建的文件或者目录的权限。
默认权限去除umask的权限为新建的文件
umask查看: umask
umask设置: umask 0022
创建新文件和目录时,落地权限计算:
系统默认umask为0022(第一个0与特殊权限有关,目前只需要看后三位)。
目录的落地权限=0777-0022=0755。目录必须要有执行权限,用户才能访问该目录。
文件的落地权限=0666-0022=0644。系统出于安全考虑,创建文件时去掉了所有的执行权限,防止一些不安全的程序文件被错误执行。