一.用户账号和组账号及UID和GID概述
1.1 用户账号
(1)超级用户(root,管理员):root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。
(2)普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
(3)程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。(一般不能登录系统)
1.2 组账号
(1)基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4字段记录的即为该用户的基本组GID号。(每个用户有且仅有一个基本组)
(2)附加组(公共组):用户除了基本组以外,额外添加指定的组。(每个用户可以有多个附加组)
1.3 UID和GID
(1)UID(User IDentity,用户标识号):每一个UID都是独立的,无法重复
(2)GID(Group IDentify,组标识号)
root用户账号的UID和GID号为固定值0
内置系统程序用户账号的UID和GID号默认为0-999,CentOS7之前的版本为0-499,自己创建的程序用户仍是1000-60000.
普通户UIDRGID默认为1000-60000,CentOS7之前的版本为500-60000
二.用户账号管理
1.1 用户账户文件
(1)/etc/passwd:保存的是账户的相关信息(用户名称、宿主目录、登录Shell 等基本信息)每一行对应一个用户的账号信息,不同的配置项之前使用“:”进行分隔。如下面为例:
lisi:x:1001:1001::/home/lisi:/bin/bash
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。
在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符"x"
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
字段1:用户帐号的名称(登录名)
字段2:用户密码占位符"x"
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名,该用户的描述信息
字段6:宿主目录,家目录
字段7:登录Shell 信息( /bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)Linux内核为用户分配的可用的shell环境,bash即为shell解释器
bash(解释命令),nologin(不允许用户的一切指令)
(2)/etc/shadow:shadow又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有root用户能够读取shadow文件中的内容,且不应许直接编辑该文件中的内容。每一个对应一个文件的密码信息。可根据以下两个命令查看文件的头部几行和尾部几行的信息。
tail -1 /etc/shadow
head -2 /etc/shadow
zhangsan:!!:19869:0:99999:7:::
字段1:用户帐号的名称
字段2:使用哈希算法加密的密码字串信息,当为"*"或"! "时表示此用户不能登录到系统,代表未激活。若该字段内容为空,则该用户无须密码即可登录系统,sha算法秘钥长度为512。
字段3:上次修改密码的时间,表示从1970年01月01日(unix系统的诞生日,法定的发布时间)算起到最近一次修改密码时间隔的天数
字段4:密码的最短有效天数, 自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
字段5:密码的最长有效天数, 自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
字段6:提前多少天警告用户密码将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。
字段9:保留字段(未使用)
1.2 添加丶修改丶删除用户账号
(1)useradd命令——添加用户账号
useradd命令用户添加用户账号,其基本的命令格式: useradd+选项+用户名
最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户账号。在CentOS系统中,使用useradd命令添加用户账时主要完成以下几项任务。
1.在 /etc/passwd文件和 /etc/shadow文件的末尾增加该用户账号的记录。
2.若未明确指定用户的宿主目录,则在 /home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
3.若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到 /etc/group和 /etc/gshadow文件中。
格式:useradd [选项] 用户名
常用选项:
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:指定用户的基本组名(或使用 GID 号),对应的组名必须已存在。
-G:指定用户的附加组名(或使用 GID 号),对应的组名必须已存在。
-M:不建立宿主目录。
-s:指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。
(2)passwd命令——为用户账号设置密码
1.root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码。
2.普通用户却只能执行单独的"passwd"命令修改自己的密码。
命令格式:
passwd+ [选项] +用户名
常用选项:
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户,锁定的用户账号将无法再登录系统。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。(-u解锁时,如果没有密码会提示,需要使用-f强制解锁)
(3)usermod命令——修改用户账号属性
对于操作系统中已经存在的用户账号,可以使用usermod命令重新设置各种属性。usermod命令同样需要指定账号名称作为参数。usermod命令中较常使用的几个选项如下所述。
命令格式:usermod +[选项] +用户名
常用选项:
-u:修改用户的 UID 号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)。
-G:修改用户的附加组名(或使用 GID 号)。
-s:指定用户的登录 Shell。
-l:更改用户账号的登录名称。
-L:锁定用户账户。
-U:解锁用户账户。
(4)userdel——删除用户账号
命令格式:userdel+用户
可删除用户信息和组信息,但无法删除创建的宿主目录
命令格式:userdel + [-r] +用户名
添加“-r”选项时可以将该用户的宿主目录一并删除
(5)chage——修改用户相关属性
命令格式:chage+{-d}+0 可以使指定的用户密码失效
1.3用户账号的初始文件配置
添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模版目录/erc/skel/,基本都是隐藏文件,较常用的初始配置文件包括以下几种:
~/.bash_profile:此文件中的命令将在该用户每次登录时被执行。
~/.bashrc:此文件中的命令会在每次打开新的bash shell时(也包括登录系统)时被执行。
~/.bash_logout:此文件中的命令将在用户每次退出登录时执行。
三.组账号管理
1.1 组账号文件
(1)/etc/group:保存组帐号基本信息
zhangsan:x:1002:
字段1:组帐号的名称
字段2:组密码占位符"x"
字段3:组账号的GID
字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔
(2)/etc/gshadow:保存组帐号的密码信息
zhangsan:!::
字段1:组帐号的名称
字段2:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
字段3:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
字段4:组成员,如果有多个成员,用,号分割;
1.2添加丶管理丶删除组账号
(1)groupadd命令——添加组账号
命令格式:groupadd+组名
创建一个组账号
命令格式:groupadd+{-g}+GID号+组名
创建一个指定GID号的组账号
(2)gpasswd命令——添加丶设置丶删除组成员
添加命令格式:gpasswd+{-a}+用户名+组名
将指定的用户添加至指定的组,只支持添加附加组
删除命令格式:gpasswd+{-d}+用户名+组名
将指定的用户从指定的组中删除
命令格式:gpasswd+{-M}+用户名,用户名,用户名+组名
-M:指定账户的所有成员,以“,”相隔,将指定的所以用户添加到指定的组
(3)groupdel命令——删除组账号
命令格式:groupdel+组名
四.查询账号信息
1.1 groups命令——查询用户账号所属的组
命令格式:groups+用户名
查询指定用户所添加的组的组名
1.2 id命令——查询用户账号的身份标识
命令格式:id+用户名
可查询指定用户的UID号,以及基本组,附加组的GID号
1.3 finger命令——查询用户的登录属性
注:需要先进行安装finger软件包
安装命令格式:yum+{-y}+install+finger
安装finger
命令格式:finger+用户名
查询指定用户的相关信息
1.4 users命令——查询当前登录系统的用户
直接输入users命令,即可查询当前登录系统的用户,如下:
[root@localhost ~]# users
root
1.5 w丶who命令——查询当前主机的用户登录情况
直接输入w命令,可查询当前主机的用户登录情况,如下:
[root@localhost ~]# w
23:11:21 up 6:37, 1 user, load average: 0.06, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.10.1 15:45 1.00s 0.18s 0.01s w
直接输入who命令,可查询当前主机的用户的简要登录情况,如下:
[root@localhost ~]# who
root pts/0 2024-05-26 15:45 (192.168.10.1)
五.管理目录和文件的属性
1.1查看文件和目录的属性
-rw-r--r--. 1 root root 0 5月 23 09:06 aaa
-rw-------. 1 root root 1605 4月 11 23:09 anaconda-ks.cfg
drwxr-xr-x. 9 lisi lisi 186 5月 24 17:51 nginx-1.12.0
第1个字符:表示该文件的类型,可以是d(目录)丶b(块设备文件,存储设备)丶c(字符文件)丶“-”(普通文件)丶l(连接文件)等。
第2-4个字符:表示该文件的属主用户(user)对该文件的访问权限。
第5-7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8-10个字符:表示其他任何用户(Other)对该文件的访问权限。
第11个字符:这里的“.”与SELinux有关,目前不必关注。
r | 查看文件内容 | 查看目录内容(显示子目录丶文件列表) |
w | 修改文件内容 | 修改目录内容(在目录中新建丶移动丶删除文件或子目录) |
x | 执行该文件(程序或脚本) | 执行cd命令进入或退出该目录 |
1.2设置目录和文件的权限
- 读取r:允许查看文件内容、显示目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行x:允许运行程序、切换目录
■归属 - 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
在进行设置文件的权限时,经常会用十进制的数制表示。权限项 读 写 执行 字符表示 r w x -
数字表示(十进制) 4 2 1 0 权限项 读 写 执行 读 写 执行 读 写 执行 字符表示 r w x r w x r w x 数字表示 4 2 1 4 2 1 4 2 1 权限分配 属主 属组 其他 r w x r w x r w x 4 2 1 4 2 1 4 2 1 7 7 7 r w - r - - r - - 4 2 0 4 0 0 4 0 0 6 4 4 chomd命令——设置文件或目录的权限
命令格式:chomd+{uago..}{+-=}{rwz}+文件或目录
chomd+nnn+文件或目录
“n”代表10进制数字权限语法1:chmod [ugoa] [+-=] [rwx] 文件或目录...(+、-、= 分别表示增加、去除、设置权限)
(u、g、o、a 分别表示属主、属组、其他用户、所有用户)
(r,w,x权限字符可分别表示为10进制字符4,2,1,表示一个权限组合时需要将数字进行累加;如rwx=7,rw-r---r--=644)目录的默认权限是755,文件的默认权限为644
语法2:chmod nnn 文件或目录...(3位10进制数)
常用命令选项:-R:递归修改指定目录下所有子项的权限
命令格式:chomd+{-R}+nnn+目录名
修改目录权限以及目录下所有文件的权限
1.3 chown命令——设置目录和文件的归属
命令格式:chown+属主:属组+文件名
修改指定文件的属主和属组
命令格式:chown+属主:空白+文件名
只修改文件的属主
命令格式;chown+空白:属组+文件名
只修改文件的属组
1.4 umask命令——设置目录和文件的默认权限
umask的作用:指定目前用户在新建文件或目录时的权限默认值
1.umask设置命令格式:umask + 022
设置当前系统的默认权限
2.umask查看命令:umask
查看当前系统的默认权限
如果执行“umask 022”代表group和other被拿掉了权限“2”,也就是被拿掉了“写”的权限。
如果执行命令“umask 000”,代表文件的默认权限为“777”.
目录:umask:044 目录权限为733 算法为777(目录默认权限总值)-044=733
文件:umask: 044 文件权限为622 算法为666(文件默认权限总值)-044=622
本章到此完结