目录

一、用户管理

1、用户

i、用户的理解

ii、用户及UID

iii、用户信息存储的位置

2、用户的创建

3、用户的修改和删除

i、修改

ii、删除

iii、密码管理

iv、用户身份切换

4、用户组的增删改

i、创建

ii、修改

iii、删除

 iv、用户的切换

二、passwd,shadow,group文件详解

1、passwd

2、shadow

3、group

三、权限

1、逻辑权限

i、修改文件的所有者和属组

ii、修改文件权限

2、物理权限和普通用户超级权限

i、物理权限

ii、普通用户的超级权限 

四、练习

1、练习1

2、练习2


一、用户管理

1、用户

i、用户的理解

用户一个户口本中的每一个成员
用户组户口本中的所有成员组成的组
其他人除用户本人(户主)和用户组(户口本中的成员)外的成员都是其他人

每个用户都可以拥有多个用户组,只能有一个组为主组,其他的都是附加组;

每个用户组都可以容纳多个用户;

ii、用户及UID

在Linux系统中,每一个用户默认都对应了一个UID,而这个UID可以理解是用户的身份证号。

CentOS7.X系统中:

UID 0

root

UID 1-1000

系统预留,作为系统用户来使用

UID 1000 - 65535

自定义账户 (CentOS6.5系统是从500开始计算UID,例如Ubuntu系统是从1000开始。)

iii、用户信息存储的位置

用户信息/etc/passwd
密码信息/etc/shadow
用户组信息/etc/group

        passwd、shadows、group这三个文件不要随意的进行修改,如果想要进行文件内容的查看,建议大家copy出一份,对copy的文件进行修改。 

        把文件copy出来之后,进行保存,再去修改原文件。这样做即便是写错了文件也可以通过单用户的方式将文件恢复。

2、用户的创建

语法:useradd [选项] {UserName}

选项:

-c comment

指定一段注释性描述

-d 目录

指定用户主目录

-g 用户组

指定用户所属的主用户组。

-G 用户组,用户组

指定用户所属的附加组。

-s Shell程序

指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户

-u 用户号

指定用户的用户号

 例如:创建一个用户jerry,指定家目录为/tedu/jerry 主组为adm 附加组为bin,kvm 

指定用户的用户号为20000(虽然CentOS系统中默认的UID是65536个(0-65535),但是可以手动指定它的UID超出此范围。)

 shell程序:默认会是bash

3、用户的修改和删除

i、修改

语法:usermod [选项] {UserName}

选项:

-c comment

指定一段注释性描述  

-d

目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。

-g 用户组

指定用户所属的用户组。

-G 用户组,用户组

指定用户所属的附加组。如果想要在原有的基础上追加附加组,使用-aG的方式。

-s Shell文件

指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。

-u 用户号

指定用户的用户号

 查看用户:vim /etc/passwd

 举例:

ii、删除

语法:userdel [选项] {UserName}

选项:

r

删除账户的同时删除该账户的家目录

 例如:

  

iii、密码管理

语法:passwd [选项] {UserName}

选项:

-l锁定账户
-u解锁账户
-d删除密码

passwd 可以不跟选项、用户名,默认是修改自己的帐号密码。

如果想要修改密码需要当前用户是根账户。

普通账户,只能修改自己的密码。

管理员修改他人的密码,不需要满足密码策略。

普通账户修改密码时,必须满足密码安全策略。as12AS!@、 az12AZ!@

管理员修改他人密码:

        passwd {UserName}

修改自己的密码

        passwd

iv、用户身份切换

su {UserName}

表示切换用户之后,依然停留在当前目录

su - {UserName}

表示切换用户之后,去到该用户的家目录

4、用户组的增删改

i、创建

语法:groupadd [选项] {groupName}

选项:

-g GID

指定新用户组的GID

-o

通常与-g同时使用,使新用户组可以与系统已有的组ID相同。

        系统底层会将两个GID相同用户组识别为同一个用户组,这样做的目的是让两个用户组的权限相同。识别规则,后者遵循前者。

 

ii、修改

语法:groupmod [选项] {groupName}

选项:

-g GID

指定新用户组的GID

-o

通常与-g同时使用,使新用户组可以与系统已有的组ID系统。

-n

用来修改组ID   group -n newGroupName oldGroupName

举例:

 将group2的组标识修改为102

 

 vim /etc/group 命令查看修改结果

将group3,修改其组名为big2022

groupmod -n big1902 group3

iii、删除

语法:groupdel {groupName}

案例:

groupdel big2022

 

注:

如果删除的用户组,已经被用户追加为附加组,对应的所有用户的该附件组会被撤销掉。

如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。(可以理解为像Windows中文件被占用时不能被删除。)

 iv、用户的切换

某用户属于多个用户组的时候,想要访问其他用户组中的内容,就必须切换用户组才行。

newgrp {GroupName}     理解:newgrp 组名

 前提是该账户确实拥有多个用户组。

二、passwd,shadow,group文件详解

1、passwd

在home路径下输入

vim /etc/passwd 

passwd这个文件的每行内容由冒号隔开,分为7段

第一段

账户名

不要使用:. - + /

第二段

密码

passwd这个文件是所有人都可查看,所以密码虽然是加密的,但是依然不安全。

第三段

UID

系统用来标识内部的账户,通常UID和账户是对应的关系。如果出现了两个不同账户名但是却使用的相同的UID,那么系统就将它们两个识别为同一个账户,只不过它们拥有不同的账户名、shell程序、家目录。后者遵循前者。

第四段

GID

此处记录的是该账户的主组信息。

第五段

注释描述

对账户的描述信息,通常自定义账户都不写这个。

第六段

家目录

用户登录系统之后的默认工作空间,该空间除root和本人意外,默认是不允许其他人访问。

第七段

Shell程序

Linux、类Unix系统中的特有程序。

2、shadow

在home路径下输入

 vim /etc/shadow

mengxb:$1$P3i2zUCl$QxgXUAArJQhNWFxl0EFaD1:17365:0:99999:7:::

第一段

用户名

第二段

加密后的口令(注:不允许手动修改密码内容,如果含有不属于集合 { $./0-9A-Za-z }中的字符,则对应的用户不能登录)

第三段

1970年1月1日开始计算到密码创建的天数

第四段

表示上次和下次修改密码之间的间隔,如果是0表示无间隔限制

第五段

自密码创建时刻起,最大的有效期(天)

第六段

密码到期前的N天,提醒用户修改密码。

第七段

缺省值为空,该字段允许密码到期之后N天之内还依然可以登录。

第八段

缺省值为空,该字段表示一个绝对的天数,意为到期之后不允许登录,也可以理解为密码的有效存活期。

3、group

在home路径下输入

vim /etc/group

 root:x:0:jerry

第一段

用户组名

第二段

组的密码,通常用x或者*来表示。部分系统中没有组密码的设定

第三段

GID,记录信息

第四段

组内的成员列表。文件中显示的账户名都是将该组作为附加组。如果是主组,在此不给与显示。

说明:

root账户和root用户组是两码事,某个账户就算是加入了root组,那么也不代表它具备root权限。

因为在Linux系统,默认情况下,用户的权限高于用户组。

三、权限

在Linux系统对于权限的设定非常的敏感,如果某个用户执行一个操作时,提示权限不足,那么根据Linux系统的权限设定的思想(没有权限绝对不会睁一只眼闭一只眼),就能够判断出该用户不具备此文件的执行权限。

在Linux系统中,有以下的权限表示。业内人士称之为:

        逻辑权限

        物理权限

        普通用户的root的权限。

1、逻辑权限

在Linux系统中不管是文件还是目录。(在Linux系统中,将所有的东西都视为文件。)都有固定权限表示。

-                    rw-             r--               r--. 1                        root       root  initial-setup-ks.cfg

 文件类型     用户权限  用户组权限   其他人权限            所有者     属组

-:普通文件        r: 读权限

d:目录文件       w:写权限

                           x:执行权限

根据信息的第一个字母(文件类型)来查看,d表示该文件是一个目录文件,-表示该文件是一个普通文件。

后面每三个权限成为一组,每组中分别有三个权限:

字符

权限

数字

r

4

w

2

x

执行

1

除了第一个字母不参与权限的表示,其他的都为权限标识符。 

每三个为一组,共有三组:

第一组

用户

user

第二组

用户组

group

第三组

其他人

other

 

说明:Linux系统中,不管是什么系统,权限的标识符号的位置是不会发生任何的改变,也就是说,

1个永远是文件类型,

2-4(第一组)永远是读、写、执行,用户的权限,

5-7(第二组)永远是读、写、执行,用户组的权限,

8-10(第三组)永远是读、写、执行,其他人的权限。

如果某个文件权限标识为----------,那么则说明此文件不允许任何的读取、写入、执行 

i、修改文件的所有者和属组

chown   所有者(属主)   文件路径         修改某个文件的所有者

chown       :属组    文件路径     修改某个文件的属组

chown    所有者:属组    文件路径     修改某个文件的所有者和属组

ii、修改文件权限

 chmod命令可以用来修改某个文件或文件夹的权限。

        选项:

-R

递归处理

修改文件/夹的权限时,可以使用字符权限,也可以使用数字权限。

 

 0表示没有权限,如果属组可读可写,其成员也是可读可写的。

ugo的方法也可以修改:

注意:+w 选项只会给用户加上写的权限

2、物理权限和普通用户超级权限

i、物理权限

修饰某个文件/夹不允许被修改。注意:不能给/  /tmp /dev /var 加保护

即便是root权限也不一定所有的文件都可以删

chattr [选项] file/dir

选项:

i

表示不能以任何方式进行文件/夹的修改,追加,删除

a

表示文件/夹只能追加,不能修改,删除

+<属性>

表示开启某文件/夹的权限

<属性>

表示关闭某文件/夹的权限

R

表示递归处理。

举例:

chattr +i demo.log   # 表示该文件不允许修改,删除,增加。

chattr +a big1902_1 # 表示该文件只允许追加内容,不允许删除和修改。

 追加hello到demo.log文件中

 

ai的使用场景:

通常情况,log文件用a的属性。如果是cfg(配置文件)文件用i的属性。

lsattr 查看文件的物理权限(属性)

lsattr [选项] 文件/夹

选项:

R

表示递归处理

a

表示查看所有文件的属性,包括隐藏

d

显示目录的属性,而不是目录下的文件的属性

ii、普通用户的超级权限 

        sudo(SuperUser Do),它可以让普通用户执行root的权限。sudo可以限制用户执行部分root的权限。

sudo会记录用户执行过的每一条命令,便于查阅服务起出事之前的状态。

好处:

        使用自己配置好的用户环境

        不需要知道root密码,保证root的密码安全

        可以限制用户执行有限的root权限

        sudo执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。

如果想要监控普通用户通过管理员权限执行过什么命令可以配置监控文件的产生的地址。

vim  /etc/sudoers

 添加: Defaults   logfile=/home/log

举例:

        如果我想以root的身份执行一些命令,怎么办呢?

首先我们可以打开sudoers文件

vim  /etc/sudoers

 

然后执行命令的时候,必须加上sudo

 sudoers文件解释:

四、练习

1、练习1

需求:现在大数据部门有一个加密狗,大数据部门的人都可以去连接它给大家上课,但是别的部门不行

1,在/home目录下touch 加密狗文件。

2,创建大数据组

3,修改加密狗文件的所有者为root和大数据组

4,修改加密狗文件的权限为:root用户可读可写可执行,大数据组的成员可读可写可执行,其他人没有权限

4,编辑加密狗文件实现其功能(写一句话就行)

5,创建大数据组的成员,并将其加入到大数据组

通过不同权限的人,来观察加密狗的使用情况

2、练习2

需求:现在大数据班有两个组,一个是A组,另外一个是B组。

其中A组成员有zhangsan,lisi。B组成员有wangwu,zhaoliu。

A组成员的家目录在/BIGclass/A/目录下,且只有A组的人可以进

B组成员的家目录在/BIGclass/B/目录下,且只有B组的人可以进

现在要实现,组内之间资料共享,其他人无权查看。

资料如下:A组有两本书:

book1:所有者和属组为root用户和A组。权限为root用户可读可写可执行,A组的人可读可写可执行,其他人没有权限。

book2:所有者和属组为root用户和A组,权限为root用户可读可写可执行,A组的可读可执行不可写,其他人没有权限。

#创建用户并指定家目录

useradd -d /BIGclass/A/zhangsan -m zhangsan

useradd -d /BIGclass/A/lisi -m lisi

useradd -d /BIGclass/B/wangwu -m wangwu

useradd -d /BIGclass/B/zhaoliu-m zhaoliu

#创建用户组:

groupadd -g 1000 A

groupadd -g 1001 B

#将用户分别加入对应的组内

usermod -g A zhangsan

usermod -g A lisi

usermod -g B wangwu

usermod -g B zhaoliu

既然是组内的成员进行共享,那么就应该可以使用权限的方式来实现,先修改组的目录权限为其他人无权限

chmod 750 A

chmod 750 B

通过ll命令我们能看到A组和C组所有者为root用户和root组。

所以修改A目录的所有者为A,B组的所有者为B

chown root:A A

chown root:B B

在A组目录中touch book1,并修改权限为770,所有者为root:A,同时创建book2,修改权限为750,所有者为root:A

 

 

Logo

更多推荐