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

Linux基于用户身份对资源访问进行控制

1.1、用户账号

超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。

普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。

程序用户∶在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。

1.2、组账号

基本组 (私有组)∶基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4字段记录的即为该用户的基本组 GID 号。

附加组 (公共组)∶ 用户除了基本组以外,额外添加指定的组。

可以理解为基本组在创建系统时用户自带的组,附加组为用户自己加入的组。

UID∶ 用户标识号

GID∶ 组标识号

root 用户账号的 UID和GID 号为固定值 0

程序用户账号的 UID和GID 号默认为 Centos5,6∶ 1~499,Centos7∶1~999

普通用户的 UID和GID 号默认为 Centos5,6∶ 500~60000,Centos7∶ 1000~60000

 

二、用户账号设置操作

2.1、用户账号文件/etc/passwd

保存用户名称、宿主目录、登录Shell等基本信息

文件位置在/etc/passwd中,每一行对应一个用户的账号记录,多项操作命令都可进行查看,我们以vim /etc/passwd为例

字段分析:

Linux中的账号权限管理_Linux

字段一(root):用户账号的名称

字段二(x):用户密码占位符“x”

字段三(0):用户账号的UID号

字段四(0):所属基本组账号的GID号

字段五(root):用户全名

字段六(/root):宿主目录(家目录)

字段七(/bin/bash):登录shell信息(/bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统)

 

2.2、用户账号文件/etc/shadow

保存用户的密码、账号有效期等信息

文件位置在/etc/shadow,每一行对应一个用户的密码记录,多项操作命令都可进行查看,我们以vim /etc/shadow为例

字段分析:

Linux中的账号权限管理_Linux_02

字段一(root):用户帐号的名称

字段二(密码):使用MD5加密的密码字串信息,当为"*"或"!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统

字段三:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数

字段四(0):密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制

字段五(99999):密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制

字段六(7):提前多少天警告用户密码将过期,默认值为7

字段七:在密码过期之后多少天禁用此用户

字段八:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用

字段九:保留字段(未使用)

 

2.3、添加用户账号

添加用户账号 useradd 或者 adduser,在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录。

若未明确指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/qroup 和/etc/qshadow文件中。

Linux中的账号权限管理_Linux_03

例如我想创建一个名称为abc,UID号为3000,基本组GID号为1000,失效时间在今年年底,且可以登录系统的账户

操作命令应该为:useradd -d /home/abc -u 3000 -g 1000 -e 2021-12-31 -s /bin/bash abc

Linux中的账号权限管理_Linux_04

Linux中的账号权限管理_Linux_05

注:此时还不能登入操作系统,还需配置密码才可

 

2.4、设置/更改用户口令passwd

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

Linux中的账号权限管理_Linux_06

例如上面创建的abc用户,如果进行passwd—l操作就会锁定账户,登录界面就不会显现

 

2.5、修改用户账号的属性usermod

Linux中的账号权限管理_Linux_07

-u -d -e -g -G -s选项意义和useradd选项意义相同

-U与passwd-u意义相同

-L与passwd-l意义相同

例如将abc用户登录名改为123,操作命令应该是:usermod -l 123 abc

 

2.6、删除用户账号userdel

userdel +用户名 只删除用户名

userdel -r +用户名 表示连用户的宿主目录一起删除

 

2.7、用户账号的初始配置文件

useradd命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件,一般为隐藏文件

这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件

主要的用户初始配置文件有:~/.bash-profile     ~/.bashrc      ~/.bash-plogout

用户宿主目录下的初始配置文件 只对当前用户有效

Linux中的账号权限管理_Linux_08

~/.bash profile:此文件中的命令将在该用户每次登录时被执行,它会设置一些环境变量,并且会调用该用户的~/.bashrc文件

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

~/.bash logout:此文件中的命令将在用户每次退出登录或退出bash shell时执行

 

全局配置文件对所有用户有效

/etc/profile:这个文件是为系统全局变量配置文件,可通过重启系统或者执行source /etc/profile 命令使profile文件被读取

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

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

当有些配置想在每个bash环境中都执行,可以写进/etc/bashrc中,或者写进 ~/.bash profile中,不过需要加上export来使它每次启动都生效

 

三、组账号文件

与用户账号文件相类似

/etc/group:保存组账号基本信息

/etc/gshdow:保存组账号的密码信息

Linux中的账号权限管理_Linux_09

字段分析:

字段一(root):组账号的名称

字段二(x):占位符“x”

字段三(0):组账号的GID号

字段四:组账号包含的用户成员(一般不包括基本组对应的用户账号,包含的是附加组成员),多个成员之间用逗号分割

 

3.1、添加组账号groupadd

goupadd    [-g GID]     组账号名

例如添加一个GID号为1234,名字为111的组账号:groupadd -g 1234 111

Linux中的账号权限管理_Linux_10

 

3.2、添加删除组成员

gpasswd命令:设置组账号密码(极少用)、添加/删除组成员

Linux中的账号权限管理_Linux_11

例如将abc用户添加到111组内:gpasswd -a abc 111

 Linux中的账号权限管理_Linux_12

 

3.3、删除组账号groupdel

操作命令:groupdel   组账号名

 

四、文件/目录的权限和归属

4.1、查询账号信息

查询用户所属组:groups 【用户名】

Linux中的账号权限管理_Linux_13

查询用户身份标识:id  【用户名】

Linux中的账号权限管理_Linux_14

查询用户账号的登录信息:finger  【用户名】(注:需要先安装finger软件包)

Linux中的账号权限管理_Linux_15

查询已登录到主机用户信息:w、who、users命令

此命令还可以查询到cpu的负载情况等

Linux中的账号权限管理_Linux_16 

4.2、文件/目录的权限和归属

访问权限

读取r:允许查看文件内容、显示目录列表

写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

可执行x:允许运行程序、切换目录

归属(所有权)

属主:拥有改文件或目录的用户账号

属组:拥有改文件或目录的组账号

Linux中的账号权限管理_Linux_17

 Linux中的账号权限管理_Linux_18

注:文件默认权限是没有x的,即文件的最大默认权限为666(-rw-rw-rw)

目录默认有x权限,故目录的最大默认权限为777(drwxrwxrwx)

这里的数值都是8进制数值

 

4.3、设置文件和目录的默认权限umask

umask作用

控制新建的文件或目录的权限

默认权限去除umask的权限为新建的文件或目录的权限(默认权限666或777-umask值=新建文件或目录的权限)

可以通过umask操作命令来查看或修改umask值,默认值为022

Linux中的账号权限管理_Linux_19

小实验:设置umask值为111,创建名称000的txt文件,查看其权限

根据默认权限666相减可得新建的文件权限为555,因文件默认没有x权限,所以遇到单数111,333,555需向前进一位变成222,444,666

Linux中的账号权限管理_Linux_20

 

4.4、设置文件和目录的权限chmod

chmod命令:chmod   【ugoa】    【+-=】    【rwx】    文件或目录

u代表属主、g代表属组、o代表其他用户、a代表所有用户

+代表增加、-代表去除、=代表设置权限

r代表读、w代表写、x代表运行权限

或者是 chmod     nnn    文件或目录

nnn代表三个权限的八进制

常用选项-R:递归修改指定目录下所有子项的权限

 

4.5、设置文件和目录的归属chown

chown命mob604756f19185令

修改属主:chown   属主   文件或目录

修改属组:chown   :属组   文件或目录

修改属主和属组:chown   属主:属组   文件或目录

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

例如将123.txt文件的属主和属组改为abc和111

Linux中的账号权限管理_Linux_21

chown abc:111 123.txt

Linux中的账号权限管理_Linux_22