Linux用户与权限管理
- 前言
- 一、管理用户账号
- (1)用户账号概述
- ①用户标识UID (User IDentity,用户标识号)
- ②用户账号文件
- (2)用户账号管理
- ①添加用户账号(useradd)
- ②设置/更改用户口令(passwd)
- ③修改用户账号属性(usermod)
- ④删除用户账号(userdel)
- 二、管理组账号
- (1)管理组账号概述
- ①组账号的分类
- ②组标识GID (Group IDentifi)
- ③组账号文件位置
- (2)组账号管理
- ①添加组账号(groupadd)
- ②添加删除组成员(gpasswd)
- ③删除组账号(groupdel)
- (3)查询账号信息
- ①查询用户账户所属组(groups)
- ②查询用户账号身份标识(id)
- ③查询当前主机的用户登录信息(w、who、users)
- ④查询用户账号的登录属性(finger)
- (4)文件与目录的归属和权限
- ①查看文件与目录的权限和归属
- 三、设置文件与目录权限和归属
- (1)设置文件与目录权限(chmod)
- (2)设置文件与目录归属(chown)
- (3)设置权限掩码创建文件与目录(umask)
- 总结
前言
在Linux中会有不同的用户,我们可以给不同的用户以不同的权限,来实现不同的需求。在企业中也是通过创建不同用户分配不同的权限,来实现企业中的不同的职位分工权限大小。
一、管理用户账号
(1)用户账号概述
- 超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的。
- 普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户: 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。
①用户标识UID (User IDentity,用户标识号)
- root用户账号UID固定值0
- 程序用户账号的UID默认为Centos7: 1~ 999,Centos5,6: 1~499
- 普通用户的UID默认为Centos7: 1000~ 65535,Centos5, 6: 500~ 65535
②用户账号文件
作用:保存用户名称、宿主目录、登录Shell 等基本信息
位置:文件位置:/etc/passwd
-
每一字段对应一个用户的账户记录:
字段1:用户账号的名称,也是登录系统时使用的识别名称。 字段2:经过加密的用户密码字串,或者密码占位符“x”。 字段3:用户账号的 UID 号。 字段4:所属基本组账号的 GID 号。 字段5:用户全名,可填写与用户相关的说明信息。 字段6:宿主目录,即该用户登录后所在的默认工作目录。 字段7:登录 Shell 等信息,用户完成登录后使用的 Shell
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一 定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中, 而passwd文件中仅保留密码占位符“x”。
第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d "1970-01-01 15775 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是 0,则密码可以随时修改
第五列:密码有效期,默认99999,表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出 "修改密码" 的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间
第九列:保留,未使用
这里要注意的是第二列!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
- 如果在环境生产中程序升级程序失败,出现账号已过期的报错,可以将账号设置为永不过期,即将第五个字段更改为99999,表示不进行限制,即可
- shadow的权限是非常高的,不能进行读取编辑与执行
(2)用户账号管理
①添加用户账号(useradd)
格式:useradd [选项] 用户名
选项 | 作用 |
---|---|
-u | 指定用户的UID号,要求该UID号码未被其他用户使用 |
-d | 指定用户的宿主目录位置(当与-M一起使用时,不生效)只能用绝对路径指定目录,且不需要事先创建目录 |
-e | 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式 |
-g | 指定用户的基本组名(或使用GID号),对应的组名必须已存在 |
-G | 指定用户的附加组名(或使用GID号),对应的组名必须已存在 |
-M | 不建立宿主目录。(一般用于系统用户账号) |
-s | 指定用户的登录Shell,(比如/bin/bash为可登陆系统,Isbin/nologin和/bin/false为禁止用户登陆系统) |
示例一: | |
示例二: | |
②设置/更改用户口令(passwd)
- root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码。
- 普通用户只能执行单独的“passwd"命令修改自己的密码。
基本格式:passwd [选项] 用户名
选项 | 作用 |
---|---|
-d | 清空指定用户的密码,仅使用用户名即可登录系统 |
-l | 锁定用户账户,锁定的用户账号将无法再登录系统 |
-S | 查看用户账户的状态(是否被锁定) |
-u | 解锁用户账户 |
示例: | |
③修改用户账号属性(usermod)
- 对于系统中已存在的用户账号,可以使用 usermod 命令重新设置各种属性
- 使用 usermod 命令时,其大部分的选项与 useradd 命令的选项是相对应的,作用也相似
格式:usermod [选项] 参数 用户名
选项 | 格式 |
---|---|
-u | 修改用户的UID号 |
-d | 修改用户的宿主目录位置 |
-e | 修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式 |
-g | 修改用户的基本组名(或使用GID号) |
-G | 修改用户的附加组名(或使用GID号) |
-M | 不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录 |
-s | 指定用户的登录Shell |
-l | 更改用户账号的登录名称 格式:usermod -l 新名称 旧名称 |
-L | 锁定用户账户 |
-u | 解锁用户账户 |
这里值得注意的是,usermod和passwd命令都有锁定和解锁功能,不同的是usermod会在密码占位符前加“!”而passwd则是加“!!”,但是他们都可以互相解锁。 | |
示例: | |
④删除用户账号(userdel)
格式:userdel [-r] 用户名
示例:
这里值得一提的是,当我们因为忘记使用-r删除用户账号,再创建同名账号时,会出现报错信息,提示我们用户已存在,或被占用进程。虽然在虚拟机中,我们可以直接重启解决,但是实际工作当中当然不能随意重启。
这时候,我们只需要进入宿主目录使用rm -rf删除宿主目录
接着,用userdel -f强制删除即可
如果此时依旧提示占用进程,则用ps -u 加用户名查看进程
再用kill +进程号关闭进程即可
二、管理组账号
(1)管理组账号概述
①组账号的分类
基本组(私有组): 基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4段记录的即为该用户的基本组GID号。
附加组(公共组): 用户除了基本组以外,额外添加指定的组。
②组标识GID (Group IDentifi)
- root用户账号的GID固定值0
- 程序用户账号的GID默认为Centos7: 1~ 999,Centos5,6: 1~499
- 普通用户的GID默认为Centos7: 1000~ 65535,Centos5, 6: 500~ 65535
③组账号文件位置
-
/etc/group:保存组帐号基本信息
-
/etc/gshadow:保存组帐号的密码信息
与用户账号相同,每一字段对应一个记录
字段1:组帐号的名称 字段2: 占位符“x” 字段3:组账号的GID号 字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔
(2)组账号管理
①添加组账号(groupadd)
格式:groupadd [-g GID] 组账号
示例:
②添加删除组成员(gpasswd)
格式:gpassdw [选项] 组账号名
选项 | 作用 |
---|---|
-a | 向组内添加一个用户 |
-d | 从组内删除一个用户成员 |
-M | 定义组成员列表,以逗号分隔 |
需要注意的是“-M”是重新定义,而不是追加 | |
“-M”使用后,追加用户只能使用“-a” | |
示例: | |
③删除组账号(groupdel)
格式:groupdel 组账号名
示例:
(3)查询账号信息
①查询用户账户所属组(groups)
格式:groups 用户名
示例
②查询用户账号身份标识(id)
格式:id 用户名
示例
③查询当前主机的用户登录信息(w、who、users)
④查询用户账号的登录属性(finger)
格式:finger 用户名
(4)文件与目录的归属和权限
- 在 Linux 文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限与文件所有者,简称为“权限”和“归属”
- 其中,访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)
- Linux 系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制
①查看文件与目录的权限和归属
- 最前的"-"表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“ l ”(链接文件)等
- 第二段的“rw-”表示该文件的属主用户(User)对该文件的访问权限
- 第三段的“r–”表示该文件的属组内各成员用户(Group)对该文件的访问权限
- 表示其他任何用户(Other)对该文件的访问权限
- 后面的两个root分别表示属主与属组
访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账
三、设置文件与目录权限和归属
(1)设置文件与目录权限(chmod)
格式:
数字方式:chmod nnn 文件/目录名
字母方式:chmod [ugoa···][±=][rwx] 文件名
示例一:
示例二:“-R”可以设置当前目录下所有的文件与子目录的权限
(2)设置文件与目录归属(chown)
格式:
chown:属主 文件或目录
chown: 属组 文件或目录
chown:属主:属组 文件或目录
示例一:
示例二:-R递归修改指定目录下所有文件、子目录的归属
(3)设置权限掩码创建文件与目录(umask)
在我们创建一个新的文件或者目录时,他的权限是由默认权限的,而我们可以用umask来设置这个默认权限。
格式:umask nnn (nnn是权限掩码)
这里的权限掩码与正常的权限设置相反,可以理解为,正常的设置是从0到7权限增加,需求什么权限就用0+n,而权限掩码则是从7到0权限增加,需求什么权限就用7-n。
示例:
总结
文件与目录的权限和归属在Linux中是很重要的知识点,其相关的命令也会比较多。当然虽然多,但都不能理解,多花点精力熟练掌握便好。
更多推荐
Linux用户与权限管理
发布评论