Linux--账号与权限管理--用户账号与组账号--目录与文件的权限与归属


前言

  • 作为一个多用户、多任务的服务器操作系统,Linux 系统提供了严格的权限管理机制
  • 主要从用户身份、文件权限两方面对资源访问进行限制

一、管理用户账号

1.用户账号概述

  • 与windows操作系统相比,Linux系统中的用户账号和组账号的作用在本质上一样的
  • 同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在些许差异

1.1 用户账号

在 Linux 系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同,主要包括以下三类

  • 超级用户:
    root 用户是 Linux
    操作系统中默认的超级用户账号,对本主机拥有最高的权限;系统中超级用户是唯一的
  • 普通用户
    由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限
  • 程序用户
    在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等

1.2 UID号

  • Linux 系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(User IDentity,用户标识号)
  • 对于系统来说,UID 作为区分用户的基本依据,原则上来说每个用户的 UID 号应该是唯一的
  • root 用的 UID 号为固定值0;而程序用户账号的UID号默认为1 ~ 999;普通户UID默认为1000 ~ 60000

1.3 用户账号文件

Linux想系统中的用户账号、密码等信息均保存在响应的配置文件中,直接修改这些文件或使用用户管理命令都可以对用户账号进行管理

1.3.1 用户账号文件——/etc/passwd

  • 保存用户名称、宿主目录、登录Shell 等基本信息
  • 文件位置:/etc/passwd
  • 每一行对应一个用户的帐号记录
[root@localhost~]# head-2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

1.3.2 用户账号文件——/etc/shadow

  • 默认只有root用户能够读取shadow文件中的内容
  • 且不允许直接编辑该文件中的内容
root: $6$VyOUGgOC$v5H1LM1wagZc/FwGfnrtJFn1T:18445:0:99999:7:::
字段1:用户帐号的名称
字段2:使用MD5加密的密码字串信息,当为"*"或"! "时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统
字段3:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
字段4:密码的最短有效天数, 自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
字段5:密码的最长有效天数, 自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
字段6:提前多少天警告用户密码将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。
字段9:保留字段(未使用)
  • 使用cat 查看/etc/shadow,默认只有root用户才能读取该文件中的内容,且不允许直接编辑该文件中的内容
  • 如果在环境生产中程序升级程序失败,出现账号已过期的报错,可以将账号设置为永不过期,即将第五个字段更改为99999,表示不进行限制,即可
  • shadow的权限是非常高的,不能进行读取编辑与执行

2.用户账号管理

2.1 添加用户账号-useradd

  • 基本命令格式:
useradd [选项] 用户名

最简单的用法是:不添加任何选项,只使用用户名作为 useradd 命令的参数,按系统默认配置建立指定的用户账号
使用 useradd 命令添加用户账号时主要完成以下几项任务:
1.在 /etc/passwd文件和 /etc/shadow文件的末尾增加该用户账号的记录
2.若未明确指定用户的宿主目录,则在 /home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件
3.若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到 /etc/group和 /etc/gshadow文件中

常用选项 解释
-u 指定用户的UID号,要求该UID号码未被其他用户使用
-d 指定用户的宿主目录位置(当与-M一起使用时,不生效)。只能用绝对路径指定目录
-e 指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
-g 指定用户的基本组名(或使用 GID 号) ,对应的组名必须已存在
-G 指定用户的附加组名(或使用 GID 号) ,对应的组名必须已存在
-M 不建立宿主目录
-s 指定用户的登录

Shell,(比如/bin/bash为可登陆系统, /sbin/nologin和/bin/false为禁止用户登陆系统)

  • 在使用 useradd或者adduser添加一个用户的时候,是不能进行任何操作的,因为没有将这个用户进行激活;只有给这个用户配置一个密码之后才能被激活,然后才能进行操作

2.2 设置/更改用户口令-passwd

  • 通过 useradd 命令新增用户账号以后,还需要为其设置一个密码才能够正常使用
  • 使用 passwd 命令可以设置或修改密码,root 用户有权管理其他账号的密码(指定账号名称作为参数即可)
pawwd [选项] 用户名
常用选项 解释
-d 清空指定用户的密码,仅使用用户名即可登录系统
-l 锁定用户账户,锁定的用户账号将无法再登录系统
-S 查看用户账户的状态(是否被锁定)
-u 解锁用户账户

不指定用户名时,即为修改当前账号的密码
root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码
普通用户却只能执行单独的"passwd"命令修改自己的密码

  • 设置用户密码方法二:
echo “密码” | passwd --stdin 用户名

2.3 修改用户账号属性-usermod

  • 对于系统中已存在的用户账号,可以使用 usermod 命令重新设置各种属性
  • 使用 usermod 命令时,其大部分的选项与 useradd 命令的选项是相对应的,作用也相似
常用选项 解释
-u 修改用户的UID号
-d 修改用户的宿主目录位置
-e 修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g 修改用户的基本组名(或使用GID号)
-G 修改用户的附加组名(或使用GID号)
-s 指定用户的登录Shell
-l 更改用户账号的登录名称
-L 锁定用户账户
-U 解锁用户账户

使用 -l 命令更改用户名后,原本的的 UID 和 GID 不会改变

2.4 删除用户账号-userdel

userdel  -r  用户名
#添加 -r 选项时,表示连用户的宿主目录一并删除

2.5 用户账号的初始配置文件

  1. 文件来源
1.useradd 命令添加一个新的用户账号后在该用户的宿主目录中建立一些初始配置文件
这些文件来自于账号模板目录/etc/skell,基本上都是隐藏文件  

2.主要的用户初始配置文件
~/.bash_profile
~/.bashrc
~/.bash_logout
  1. 用户宿主目录下的初始配置文件,只对当前用户有效
~/.bash_profile  
此文件中的命令将在该用户每次登录时被执行,它会设置一些环境变量,并且会调用该用户的~/.bashrc文件

~/.bashrc  
此文件中的命令会在每次打开新的bash shell 时(也包括登录系统)被执行,并且会调用/etc/bashrc文件

~/.bash_logout
此文件中的命令将在用户每次退出登录或退出bash shell时执行
  1. 全局配置文件对所有用户有效:
/etc/profile
这个文件是为系统全局变量配置文件,可通过重启系统或者执行 source /etc/profile 命令使profile文件被读取

/etc/profile.d
这个文件实际上是 /etc/profile 的子目录,存放的是一些应用程序所需的启动脚本

/etc/bashrc
每一个运行bash shell的用户都会执行此文件,可通过执行bash 命令打开一个新的bash shell 时,使bashrc文件被读取

vim /etc/bashrc
alias myls=’/bin/ls -lhrt’

bash
type myls
  1. PATH变量用于设置可执行程序的默认搜索路径
  2. PATH生效的原理:
每次启动系统的时候会初始化命令,会执行 /etc/profile 和 ~/.bash_profile
/etc/profile会将路径 /usr/local/bin、/usr/bin、 /usr/local/sbin、/usr/sbin追加到PATH中去
然后调用 /etc/profile.d 目录下的脚本

二、管理组账号

1.组账号管理

  • 组账号命令的使用相对较少
  • 对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种类型
  • 每一个用户账号都可以是多个组账号的成员,但是其基本组账号只有一个
  • 在“/etc/passwd”文件中的第四个字段记录的即为该用户的基本组 GID 号
  • 而对于该用户还属于哪些附加组,则需要还在对应账号的文件中才被体现

1.1 组账号文件

与组账号相关的配置文件有以下两个

  • /etc/group:保存组帐号名称、GID号、组成员等基本信息
  • /etc/gshadow:保存组帐号的加密密码字串等信息(很少用到)
grep "postfix"  /etc/group
mail:x:12:postfix
postfix:x:89:
字段1:组帐号的名称
字段2:占位符"x"
字段3:组账号的GID
字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔
  • 当需要查询的组作为基本组的时候不显示它的基本组的成员,只会显示作为附加组的成员

1.2 添加组账号-groupadd

  • 可以添加一个组账号,需要指定 GID 号时,可以使用“-g”选项
groupadd  [-g  GID]  组账号名

1.3 添置、设置、删除组成员-gpasswd

  • gpasswd 命令本来用于设置组账号密码,但是该功能很少使用,实际上该命令更多的用来管理组账号的用户成员
gpasswd  选项  组账号名
常用选项 解释
-a 向组内添加一个用户
-d 从组内删除一个用户成员
-M 定义组成员列表,以逗号分隔

1.4 删除组成员-groupdel

groupdel  组账号名

2.查询账号信息

2.1 查询用户账号的身份标识-id

  • 可以快速查看指定用户账号的 UID、GID 等标识信息
id 用户名

2.2 查询用户账号所属的组-groups

  • 查询用户所属的组
groups  用户名

2.3 查询用户账号的登录属性-finger

  • 查询用户账号的登录属性等详细信息,包括登录名称、完整名称、宿主目录、登录Shell等
finger   用户名
  • 安装 figer 软件包
yum -y install finger

2.4 查询当前主机的用户登录情况-w、who、users

  • 查询已登录到主机的用户信息
补充:通常使用tty来简称各种类型的终端设备,,Centos7系统, tty1表示图形界面,,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
按Ctrl+Alt+F2登陆,执行w命令,查看使用的终端就是tty2

pts说明是用远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,越小证明登录的越早

三、目录与文件的权限和归属

  • 在 Linux 文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限与文件所有者,简称为“权限”和“归属”
  • 其中,访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)
  • Linux 系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制

1.查看文件的权限及归属

ls  -l  install.log 
-rw-r--r--  1  root  root   34298  04-02  00:23   install.log    

#  -rw-r--r-- :文件类型、权限    root  root   属主、属组

mark

2.设置文件的权限及归属

2.1 设置文件权限-chmod

chown  属主  文件或目录
chown  :属组   文件或目录
chown  属主:属组   文件或目录
  • 常用选项:
    -R:递归修改指定目录下所有文件、子目录的归属

2.2 设置文件的归属-chown

chmod   [ugoa...]    [+-=]    [rwx]    文件或目录
"ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户, "o"代表其他任何用户,,"a"代表所有用户(缺省时为a)。

"+-="表示设置权限的操作动作。“+"代表增加相应权限,"-"代表减少相应权限, "="代表仅设置对应的权限。

"rwx"是权限的字符组合形式,也可以拆分使用,如""rx"等。
  • chmod nnn 文件或目录
    -R:递归修改指定目录下所有子目录及文件的权限
  • 将xcf用户的权限更改为最高权限:
    chmod +777 xcf

2.3 设置目录和文件的默认权限-umask

  • 指定目前用户在新建文件或目录时的权限默认值
  • 新建的文件或者目录的权限为默认最大权限减去umake (普通文件的最大默认权限为6, 目录的最大默认权限为7)
umask设置::umask 022
umask查看: umask

将umask000,新建目录或者文件,查看权限
将umask设为022,新建目录或者文件,再查看权限

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/112155720