账号和权限管理
Posted 老张学coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了账号和权限管理相关的知识,希望对你有一定的参考价值。
账号和权限管理
一、用户账号和组账号基本概述
用户账号
用户账号 | 说明 |
---|---|
超级用户 | root用户,对主机拥有最该权限。系统中超级用户是唯一的 |
普通用户 | 由root用户和其他管理员创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整目录 |
程序用户 | 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或者某个程序的正常运行,如bin、daemon、ftp、mail等 |
组账号
组账号 | 说明 |
---|---|
基本组(私有组) | 基本组账号只有一个,一般为创建用户时指定的组 |
附加组(公有组) | 用户除了基本组以外,额外添加指定的组 |
二、Centos7下用户的UID和GID比较
UID | GID | |
---|---|---|
说明 | 用户标识号 | 组标识号 |
root用户 | 固定值0 | 固定值0 |
程序用户 | 默认为1~999(Centos7) | 默认为1~999 |
普通用户 | 默认为1000~60000 | 默认为1000~60000 |
用户账号文件/etc/passwd
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户可以更改
在早期的UNIX操作系统中,用户账号的密码信息是保存在passwd文件
三、用户账号文件 /etc/passwd
作用:保存用户名称、宿主目录、登录shell等基本信息
说明:
-
文件位置: /etc/passwd
-
每一行对应一个用户的记录
-
权限:基于系统运行和管理需要,所有用户都可以访问passwd的内容但是只有root用户才能进行更改;
-
在早期的UNIX操作系统中,用户账号的密码信息是保存在passwd文件中的,不法用户可以很容易获得密码字串并进行暴力破解,因此存在一定的安全隐患。后来进行改进后,将密码转存入专门的shadow文件中,,而passwd文件中仪保留密码占位符"x"。
注意:因为每个用户都可以访问passwd文件,就容易知道编译方式来进行暴力破解,之后后来放到shadow文件里
###注意passwd不是password
作用:保护用户名称,宿主目录,登录Shell等基本信息
文件位置:/etc/passwd
每一行对应一个用户的账号记录
如下
[root@localhost /]# vi /etc/shadow
[root@localhost /]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
每一行的用户记录有7个字段:
root:x:0:0:root:/root:/bin/bash
7个字段从左到右依次是:用户名称,用户密码(为了安全性就用x占位),UID,GID,用户全名,宿主目录,登录shell信息(有/bin/bash,/sbin/nologin和/bin/false)
### /bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统
四、用户账号文件 /etc/shadow
作用:保存用户的密码、账号有效期等信息
说明:
- 文件位置:/etc/shadow
- 每一行对应一个用户的密码记录
- 默认只有root用户能够读取shadow文件中的内容,且不允许直接编辑该文件中的内容(与passwd的区别,这样可以增加安全性)
- 默认只有用户root才能够用读取shadow文件中的内容,且不允许直接编辑该文件中的内容
每一行记录有9个字段(用“ :”隔开):
root:$6$CHHU6OKd1oUsGHxk$kaQXlTSTEBvxZxDkEZ4.xdJcaU2lSx7fiFu/NQ0e3MGpDcsTzuZr1BtWDo02IybvxzNRbdzeLCQPqkxgAnyA2.::0:99999:7:::
###从左到右依次为1用户名,2密码,3密码修改时间,4密码最短有效天数,5密码最长有效天数,6密码过期警告,7密码过期时间段使用天数,8账号失效时间,9保留字段
###字段一:用户名
### 字段二:使用MD5加密的密码字串信息,当为"*“或”!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统
###字段三:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数
###字段四:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制
###字段五:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制
### 字段六:提前多少天警告用户密码将过期,默认值为7
###字段七:在密码过期之后多少天禁用此用户
###字段八:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。
###字段九:保留字段(未使用)
五、用户账号的操作
1、添加用户账号
useradd命令或者adduser命令
说明:
- 账户添加位置:在/etc/passwd文件和/etc/shadow文件的末尾增加该用户账号的记录
- 未指定用户宿主目录,默认添加在/home下创建一个与账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
- 若未指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group(4个字段,用户名,密码,GID,保留)和/etc/gshadow(4个字段,用户名,密码,GID,保留)文件中。
基本语法:
#格式:useradd [选项 选项的值] 用户名称
选项:
-u:指定用户的UID号,要求该UID号码未被其他用户使用
-d:指定用户的宿主目录(当与—M 一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录
-g:指定用户的基本组名
-G:指定用户的附加组名
-M:不建立宿主目录
-s:指定用户的登录shell,(比如/bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统)
一般连用的方式
### -u 用户UID -g 用户GID
### -M 不建立宿主目录-s 指定登录shell
### -d指定宿主目录
案例:
2、设置/更改用户口令passwd
说明:
- root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码(root最大)
- 普通用户却只能执行单独的"passwd"命令修改自己的密码。
基本语法:
格式:passwd [选项] ...用户名
选项说明:
-d 用户名:清除密码
-l 用户名:锁定用户账户(当发现账户不知道被谁登录的时候可以锁定)
-S 用户名:查看用户状态(有没有被锁定)
-u 用户名:解锁
补充另一种方式修改密码:
echo "密码" | passwd --stdin 用户名
3、修改用户账号的属性usermod
说明:
基本语法:
格式:usermod [选项] 用户名 旧名字
选项说明:
-u:修改用户的UID号
-d:修改宿主目录
-e:修改用户账号失效时间
-g:修改用户基本组名
-G:修改用户的附加组名
-s:指定用户的登录shell
-l:更改用户账号的登录名称
-L:锁定用户登录
-U:解锁用户账号
4、删除用户账号userdel
说明:
基本语法:
格式:userdel [-r] 用户名
就有一个选项 -r:删除账号时将宿主目录一并删除
5、用户账号的初始配置文件
文件来源:
- useradd命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。
- 这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件。(ls -a查看)
主要的用户配置文件
注意:宿主目录下的初始配置文件只对当前用户有效
文件名 | 说明 |
---|---|
~/.bash_profile | 文件中的命令在每次登录时执行,他会设置一些环境变量,,并且会调用该用户的/etc/.bashrc |
~/.bashrc | 此文件中的命令会在每次打开新的bashshell时被执行,并且会调用/etc/bashrc文件 |
~/.bash_logout | 此文件中的命令将会在用户每次退出登录或者退出 bash shells时执行 |
全局配置文件对所有用户有效
文件名 | 说明 |
---|---|
/etc/profile | 这个文件是系统全局变量配置文件,可通过重启系统或者执行source/etc/profile文件被读取 |
/etc/profile.d/ | 这个文件实际上是/etc/profile的子目录,存放的是应用程序所需的启动脚本 |
/etc/bashrc | 每一个运行bash shell用户都会执行此文件,可通过执行bash 命令打开一个新的bash shell时 ,使bashrc被读取 |
w命令可以查看开机时间以及负载情况等
六、组账号文件
说明:与用户账号文件相似
文件名 | 说明 |
---|---|
/etc/group | 保存组账号基本信息 |
/etc/gshadow | 保存组账号的密码信息 |
/etc/group文件信息
示例:
mail:::postfix
man:::
dialout:::
floppy:::
games:::
字段一:组账号名称
字段二:密码,用占位符表示
字段三:组账户的GID号
字段四:组账号包含的组成员(一般不包括基本组对应的用户账号),多个成员以“,”相隔开
添加组账号groupadd
说明:就是将组添加一个账号
基本语法:
格式:groupadd [-g GID] 组账号名
示例:
[root@localhost ~]# groupadd -g 1001 zhangsanfeng
[root@localhost ~]# vi /etc/group###进组账户文件查看
###查找到的文件
zhangsanfeng:x:1001:
添加,删除组成员:gpasswd
说明:
基本语法:
格式:gpasswd [选项] 。。。 组账户名
选项说明:
-a:向组内添加一个用户
-d:向组内删除一个组成员
-M:定义组成员列表,用逗号隔开
案例
查询账号信息
- 查询用户所属组
基本语法
格式:groups 用户名
- 查询用户身份标识
基本语法:
格式:id 用户名
- 查询用户账号的登录属性:finger(需要先安装finger软件包)
基本语法:
格式:finger 用户名
- 查询已经登录到主机的用户信息:w .who,users
文件/目录的权限和归属
访问权限
权限 | 说明 |
---|---|
读取r | 允许查看文件内容,显示目录列表 |
写入w | 允许修改文件内容,允许载目录中新建,移动,删除文件或子目录 |
可执行x | 允许运行程序,切换目录 |
归属
归属 | 说明 |
---|---|
属组 | 拥有该文件或者目录的组账号 |
属主 | 拥有该账户或者目录的用户账号 |
查看文件/目录的权限和归属
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
---|---|---|---|---|---|---|---|---|---|
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 文件所有者 | 文件所有者 | 文件所有者 | 文件所属组 | 文件所属组 | 文件所属组 | 其他用户 | 其他用户 | 其他用户 |
设置文件目录的权限和归属chmod
基本语法:
格式一:chmod [ugoa...] [+-=] [rwx] 文件或目录
选项说明:
‘ugoa’:表示该权限设置针对的用户类别。(缺省时为a)
‘u’: 代表文件属性
‘g’: 代表文件属组内的用户
‘o’ :代表其他任何用户
‘a’:代表所有用户
"+ - =":表示设置权限的操作动作。
‘+’: 代表增加相应权限
‘-’ :代表减少相应权限
‘=’: 代表仅设置对应的权限
“rwx”:是权限的字符组合形式,也可以拆分使用
格式二:chmod nnn 文件或目录
每个n代表一个八进制数,每个八进制数值得是权限的数字表示形式的和
设置文件和目录的归属:chown
基本语法:
格式:chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
选项说明:
-R:递归修改指定目录下所有子目录及文件的归属
设置目录和文件的默认权限:umask
作用
控制新建的文件或者目录的权限
默认权限去除umask的权限为新建的文件或者目录的权限(新建的文件或者目录的权限为默认最大权限减去umask 。普通文件的最大默认权限为6, 目录的最大默认权限为7。)
umask设置: umask 022
umask 查看: umask
以上是关于账号和权限管理的主要内容,如果未能解决你的问题,请参考以下文章