账号和权限管理

Posted 老张学coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了账号和权限管理相关的知识,希望对你有一定的参考价值。

账号和权限管理

一、用户账号和组账号基本概述

用户账号

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

组账号

组账号说明
基本组(私有组)基本组账号只有一个,一般为创建用户时指定的组
附加组(公有组)用户除了基本组以外,额外添加指定的组

二、Centos7下用户的UID和GID比较

UIDGID
说明用户标识号组标识号
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允许运行程序,切换目录

归属

归属说明
属组拥有该文件或者目录的组账号
属主拥有该账户或者目录的用户账号

查看文件/目录的权限和归属

权限项执行执行执行
字符表示rwxrwxrwx
数字表示421421421
权限分配文件所有者文件所有者文件所有者文件所属组文件所属组文件所属组其他用户其他用户其他用户

设置文件目录的权限和归属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

以上是关于账号和权限管理的主要内容,如果未能解决你的问题,请参考以下文章

linux账号和权限管理

账号和权限管理

账号和权限管理

Linux中的账号和权限管理(理论讲解部分)

Linux账号与权限管理

linux 账号权限管理