用户
Linux系统是一个多用户多任务的分时操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求。 任何需要使用操作系统的用户,都需要一个系统账号。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。 用户在系统中是分角色的,在Linux系统中,由于角色的不同,权限和所完成的任务也不同。值得注意的是每个用户是通过UID(User ID)来唯一标识的。
用户账号类型
超级用户
默认是root用户。在每台unix/linux操作系统中都是唯一且真实存在的,通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限。在生产环境,一般禁止root账号远程登录SSH连接服务器,以加强系统安全。 其UID和GID均为0
普通用户
这类用户一般是由具备系统管理员root的权限的运维人员添加的。 在 centos 7中 ,普通用户的UID范围为1000-60000。
程序用户
与真实用户区分开来,这类用户的最大特点是安装系统后默认就会存在,且默认情况不能登录系统。它们是系统正常运行必不可少的,他们的存在主要是方便系统管理,满足相应的系统进程都文件属主的要求。例如系统默认的bin、adm、nodoby、mail用户等。 在centos 7中,系统用户的UID范围为1-999。 由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,因此,在做系统安全优化时,被禁止开机启动了的服务对应的虚拟用户也是可以处理掉的(删除或注释)。
用户组
linux系统中的用户组(group)就是具有相同特性的用户(user)集合。 有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件,只需要把授权的用户都加入到同一个用户组里,然后通过修改该文件对应组的权限,让用户组具有符合需求的操作权限,这样组内所有用户对该文件就会具有相同的权限,这就是用户组的用途。 将用户分组是linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了运维管理工作。
组账号类型
基本组(私有组)
创建用户账号时,如果没有指定用户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组,默认只容纳一个用户。 在用户所属组中的第一个组称为基本组,基本组在/etc/passwd 文件中指定。 基本组有且唯一。
附加组(公共组)
在用户所属组中,除了第一个组(基本组)以外的其他组就是附加组,附加组在/etc/group文件中指定。 附加组可有可无,且可以有多个。
ID
UID
UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。
centos7登录用户是从1000起到60000
centos6 500~60000
1-999 预留给系统,叫系统用户,某个程序比如数据库
给人使用的账户是从1000开始
GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
用户账号管理
文件位置
/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。
注:可使用”man 5 passwd“命令,查看/etc/passwd文件说明及每个字段含义。
/etc/shadow
存放保存密码
/etc/shadow文件也是以冒号(:)作为分隔符,将每行分成了9段,每个字段的含义如下:
字段1:用户名。
字段2:密码加密值。当此字段为*或!!时,表示用户不能登录到此系统。当为空时,表示用户无需密码即可登录。
字段3:上次修改密码时间。从1970/1/1到上次修改密码的天数。 0 有特殊意思,表示用户应该在下次登录系统时更改密码。
字段4:最小修改密码间隔天数,即两次修改口令之间所需的最小天数。若不设置,默认为0,表示当天即可修改。 空字段或 0 都表示当天即可修改。
字段5:密码有效期。若为99999,表示永久有效。
字段6:警告时间。表示从系统开始警告用户到用户密码正式失效之间的天数。空字段或者 0 表示没有密码警告期。
字段7:密码过期后的宽限天数。 密码过期后,仍然接受使用此密码进行登录的天数(在此期间,用户应该在下次登录时修改密码)。
字段8:账户失效时间。从1970/1/1日起,到用户被禁用的天数。默认为空。 账户过期不同于密码过期。账户过期后,用户将不被允许登录。密码过期后,用户将不被允许使用此密码登录。
字段9:保留字段。此字段保留作将来使用。
添加用户
添加用户:查看是否在 passwd和shadow文件中生成信息
- 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
- 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。
- 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账 号的记录信息将保存到/etc/group 和/etc/shadow 文件中。
选项 | 作用 |
---|---|
-u | 指定用户的 UID 号,要求该 UID 号码未被其他用户使用 |
-d | 指定用户的宿主目录位置(当与-M 一起使用时,不生效) |
-e | 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式 |
-g | 指定用户的基本组名(或使用 GID 号) |
-G | 指定用户的附加组名(或使用 GID 号) |
-M | 不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录 |
-s | 指定用户的登录 Shell |
设置/更改用户口令
root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。
普通用户只能执行单独的passwd命令修改自己的密码。
passwd [用户名]
选项 | 作用 |
---|---|
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户密码,锁定的用户账号将无法再登录系统。(一定要事先设好密码) |
-u | 解锁用户密码 |
-S | 查看用户账户的状态(是否被锁定) |
修改用户账号的属性
usermod [选项]... 用户名
选项 | 作用 |
---|---|
-l | 更改用户账号的登录名称 |
-L | 锁定用户账户 |
-U | 解锁用户账户以下选项与useradd命令中的含义相同 |
-u | 修改用户的UID号 |
-d | 修改用户的宿主目录位置 |
-e | 修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式 |
-g | 修改用户的基本组名(或使用GID号) |
-G | 修改用户的附加组名(或使用GID号) |
-s | 指定用户的登录Shell |
删除用户
userdel [-r] 用户名
用户账号的初始配置文件
~/ .bash_profile
用户宿主目录下的初始配置文件只对当前用户有效
~/.bashrc
此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
~/.bash_logout
此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
/etc/bashrc
此文件中的命令将在该用户每次退出时bash shell时使用
组管理
与用户帐号文件相类似
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息基本不使用
添加组
**groupadd [-g GID] 组账号名 **
组内管理
gpasswd 命令——添加、设置、删除组成员
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
删除组账号
groupdel 组帐号名
查询
inger命令查询用户帐号的详细信息
finger [用户名]
查询已登录到主机的用户信息
w
标题 | 含义 |
---|---|
USER | 登录到系统的用户。 |
TTY | 登录终端。 |
FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
LOGIN@ | 用户登陆的日期和时间。 |
IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
PCPU | 当前进程所占用的 CPU 运算时间。 |
WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
who
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下
[root@localhost ~]# who [选项] [file]
选项 | 含义 |
---|---|
-a | 列出所有信息,相当于所有选项。 |
-b | 列出系统最近启动的时间日期。 |
-l | 列出所有可登陆的终端信息。 |
-m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i 。 |
-q | 列出在本地系统上的用户和用户数的清单。 |
-r | 显示当前系统的运行级别。 |
-s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
-u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
-T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
文件/目录的权限和归属
文件的归属(所有权):
- 属主:拥有该文件或目录的用户账号。
- 属组:拥有该文件或目录的组账号。
使用 ls -l 命令查看文件的属性
文件的属性分为9列,每列含义如下:
第一列:表示文件类型,-属于普通文件。
第二列:表示文件的UGO权限。rw-r--r--每三个一组。 rw- :属主的权限; r-- :属组的权限; r-- :其他人的权限。
第三列:表示ACL表中是否设置了ACL权限。“.” 表示无ACL权限,“+”表示设置了ACL权限。
第四列:表示硬链接数。
第五列:表示文件的属主。
第六列:表示文件的属组。
第七列:表示文件的大小,有多少字节。
第八列:表示最后一次修改时间。
第九列:表示文件名。
设置文件和目录的归属
chown
chown 属主 文件或目录 //修改属主
chown :属组 文件或目录 //修改属组
chown 属主:属组 文件或目录 //修改属主和属组
文件和目录的权限管理
权限类型 | 对文件的影响 对目录的影响 |
---|---|
r (读取) | 可读取文件内容 可列出目录内容 |
w (写入) | 可修改文件内容 可在目录中新建、移动、删除文件或子目录 |
x (执行) | 可作为程序执行 可切换目录 |
当只有 r 权限时,不能进入该目录,也不能在目录内创建、删除、修改文件。只能通过 “ls 目录路径”查看目录内的文件名称,不能查看文件的属性信息。
当只有 w 权限时,不能进入目录,不能列出目录内的文件,也不能在目录内创建、删除、修改文件。必须同时有 x 权限,才能创建、删除、修改目录内的文件。
当只有x权限时,只能进入该目录,但不能列出目录内容,也不能创建文件。
x 权限是目录最基础的权限,没有x权限,其他权限也会受影响。
设置文件和目录的权限
chmod
字符形式
chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录
数字形式
chmod nnn 文件/目录
权限掩码umask
umask作用:
- 控制新建的文件或者目录的权限。
- 默认权限去除umask的权限为新建的文件
创建新文件和目录时,落地权限计算:
- 系统默认umask为0022(第一个0与特殊权限有关,目前只需要看后三位)。
- 目录的落地权限=0777-0022=0755。目录必须要有执行权限,用户才能访问该目录。
- 文件的落地权限=0666-0022=0644。系统出于安全考虑,创建文件时去掉了所有的执行权限,防止一些不安全的程序文件被错误执行。
三种特殊权限
SUID
SUID(Set owner User ID up on execution) 是针对文件所设置的一个特殊权限。只作用于二进制文件中。 功能:设置了suid权限的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。
设置SUID的文件要求有如下几点:
- SUID只对可执行的二进制文件起作用,shell脚本设置后不生效。
- 如果设置了其suid后,其属主的可以执行权限x会变成s(小写),如果是大写S那么说文件的属主没有执行权限,设置的SUID无效。
- SUID对目录设置无意义。
SGID
SGID属性和SUID一样,只是SUID作用于属主,而SGID作用于属组。 SGID的功能:
SGID作用于二进制程序时,执行此程序的用户将拥有此程序的属组权限; 作用于目录时,此目录下所有用户新建文件的默认属组是这个目录的属组。
同样在设置SGID的文件后,其属组权限位上的可执行权限x会变成s,如果变成了S说明属组没有执行权限,设置SGID无效。
sticky bit
这个权限的主要作用是在一个公共目录,每个用户都可以创建文件,删除自己的文件,但是不能删除别人的文件。这个权限只能用于目录,当某个目录拥有其Sticky权限 ,则其目录下的文件和目录只有root和其拥有者删除,其他用户不能删除,也就是说用户只能删除其自己本身属主的文件,不能删除其他属主的文件。
如果一个目录设置了其sticky权限,则其目录其他用户组的执行权限x会变成t(小写),它和SUID、SGID一样如果对应位是位上的可执行x变成了大写T ,那么表示其目录其他用户位上没有可执行权限,当然设置的Sticky就无效。