前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux之用户和权限管理(干货)

linux之用户和权限管理(干货)

原创
作者头像
CodeGoat24
发布2022-02-14 17:05:04
1.2K0
发布2022-02-14 17:05:04
举报

前言

linux作为多用户、多任务的系统,相比windows系统,增添了许多与身份、权限相关的概念,而如何创建、管理用户的身份及对应权限、同一文件对不同身份用户的权限设定等等无疑都是非常重要的。

本章概要

  • 用户和用户组管理
  • 文件的权限设置
  • #sudo 的配置使用

一、用户管理

先了解系统的用户信息配置文件所在位置

/etc/passwd 存储用户的关键信息

/etc/group 存储用户组的关键信息

/etc/shadow 存储用户的密码信息

1、添加用户

①语法:

#useradd 选项 用户名

②选项:

-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名

-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名

-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义

-c comment:添加注释

补充:

1.组有什么作用?

组,类似生活里的小组。系统的多个用户可以同属一个组也可以不在一个组内

假如组B的用户创建了一个文件txt,那么txt属于组B的文件,txt对B组内用户的权限组外用户的权限有所不同。

2.什么是主组和附加组?

主组

- 用户的初始组

- 用户有且只能属于一个主组

- 用户只能更换主组而不能删除主组(若主组为空,则系统会自动删除

- 用户创建的文件属于该用户的主组

附加组:

- 用户可以属于零个或多个附加组

- 附加组可以直接被删除而无需关心是否所属于用户

- 附加组可以新增和移除任意个所属用户

- 用户被删除时所属附属组不会受影响

③示例

1、创建用户zhangsan,不带任何选项

# useradd zhangsan

验证是否创建成功:查看/etc/passwd文件最后一行

注意:不添加选项的时候,执行useradd之后会执行一系列的操作

a. 创建同名的家目录;

b. 创建同名的用户组;

2、添加选项,创建用户lisi,让 lisi 属于附加组1001(zhangsan的组id),设置用户id为666,主组由系统创建。

# useradd -G 1001 -u 666 lisi

在 /etc/group 查看附加组信息

可以看到 lisi 有自己的主组,也属于张三的组内

2、修改用户

①语法:

#usermod 选项 用户名 (Usermod:user modify,用户修改)

②选项:

-g:表示修改用户的用户主组,选项的值可以是用户组的id,也可以是组名

-G:表示修改用户的用户附加组,选项的值可以是用户组的id,也可以是组名

-u:uid,用户的id(用户的标识符)

-l修改用户名

③示例

1. 修改zhangsan用户主组为500,附加组改为501

#usermod -g 1000 -G 1001 zhangsan

2. 修改zhangsan用户用户名,改为wangwu

#usermod -l wangwu zhangsan

3、设置密码

Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。

语法:

#passwd 用户名

示例:

1. 设置zhangsan用户的密码

#passwd zhangsan

4、删除用户

语法:

#userdel 选项 用户名 (Userdel:user delete 用户删除

选项:

-r:表示删除用户的同时,删除其家目录

示例:

1. 删除zhangsan用户

#userdel -r zhangsan

注意:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。

5、切换用户

语法:

#su [用户名] (switch user)

切换用户需要注意的事项:

a. 从root往普通用户切换不需要密码,但是反之则需要root密码

b. 切换用户之后前后的工作路径是不变的

c. 普通用户没有办法访问root用户家目录,但是反之则可以;

二、用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户默认属于与它同名的用户组,这个用户组在创建用户时同时创建。(如果在创建用户时,使用 -g 选项设定主组了,那以选项设定为主)

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

/etc/group文件内容
/etc/group文件内容

文件结构:用户组名:密码:用户组ID:组内用户的用户名

1、用户组添加

语法:

#groupadd 选项 用户组名

选项:

-g:表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增

示例

使用groupadd指令创建一个新的用户组,命名为Administrators

#groupadd Adminstrators

2、用户组编辑

语法:

#groupmod 选项 用户组名

选项:

-g:表示选择自己设置一个自定义的用户组ID数字

-n:表示设置新的用户组的名称

示例:

修改Administrators用户组,将组ID从502改成520,将名称改为admins

3、用户组删除

语法:

#groupdel 用户组名

注意

当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。

三、权限管理

1、概述

Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限

多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用。

2、权限介绍

1.权限:

对于文件夹来说,读权限影响用户是否能够列出目录结构

对于文件来说,读权限影响用户是否可以查看文件内容

2.权限:

文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档

对于文件来说,写权限影响用户是否可以编辑文件内容

3.执行权限:

一般都是对于文件来说,特别脚本文件

3、身份介绍

Owner身份:文件所有者,默认为文档的创建者

Group身份:与文件所有者同组的用户

Others身份:其他人,相对于所有者所在组

Root用户:超级用户,管理着普通用户,具有所有权限

4、查看文件权限

到文件所在目录,输入

#ls -l (简写 ll)

十位字符表示含义:

第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软链接”、“s表示套接字”等等;

第2-4位:表示文档所有者的权限情况,第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,w表示可写,-表示不可写,第4位表示执行权限的情况,取值有x、-。

第5-7位:表示与所有者同在一个组的用户的权限情况,第5位表示读权限的情况,取值有r、-;第6位表示写权限的情况,w表示可写,-表示不可写,第7位表示执行权限的情况,取值有x、-。

第8-10位:表示除了上面的前2部分的用户之外的其他用户的权限情况,第8位表示读权限的情况,取值有r、-;第9位表示写权限的情况,w表示可写,-表示不可写,第10位表示执行权限的情况,取值有x、-。

5、权限设置

语法:

#chmod 选项 权限信息 文档

选项:

-R递归设置权限 (当文档类型为文件夹的时候)

权限信息:就是对该文档的不同身份使用者需要设置的权限信息

文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。

注意:

如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者

6、字符形式命令:

权限信息参数:

给谁设置:

u:表示所有者身份owner(user)

g:表示给所有者同组用户设置(group)

o:表示others,给其他用户设置权限

a:表示all,给所有人(包含ugo部分)设置权限

如果在设置权限的时候不指定给谁设置,则默认给所有用户设置

权限字符:

r:读

w:写

x:表示执行

-:表示没有权限

权限分配方式:

+:表示给具体的用户新增权限(相对当前)

-:表示删除用户的权限(相对当前)

=:表示将权限设置成具体的值(注重结果)【赋值】

示例:

给anaconda-ks.cfg文件(-rw-------.)设置权限,要求所有者拥有全部的权限同组用户拥有读和执行权限其他用户只读权限

#chmod u+x,g+rx,o+r anaconda-ks.cfg

#chmod u=rwx,g=rx,o=r anaconda-ks.cfg

补充:

可以使用root用户设置所有人都有执行权限,可以写成

①#chmod +x anaconda-ks.cfg

②#chmod a=x anaconda-ks.cfg

③#chmod a+x anaconda-ks.cfg

a意为all,可忽略

7、数字形式命令:

读:r 4

写:w 2

执行:x 1

示例:

需要给anaconda-ks.cfg设置权限,权限要求

所有者拥有全部权限,

同组用户拥有读、执行权限,

其他用户只读。

全部权限(u):读+写+执行=4+2+1=7

读和执行(g):读+执行=4+1=5

读权限(o):读=4

#chmod 754 anaconda-ks.cfg

注意

在Linux中,如果要删除一个文件,不是只看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。

若对于当前用户,文件有写的权利,但对文件夹没有写的权限,那也无法删除

8、属主与属组设置

属主:所属的用户(文件的主人)

属组:所属的用户组

前面的那个root就是属主

后面的那个root就是属组

注意:

这两项信息在文档创建的时候会使用创建者的信息(用户名、用户所属的主组名称)。

如果有时候去删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改。

1、chown

作用:更改文档的所属用户和所属组

语法:#chown -R username:groupname 文档路径

示例:将lib目录的所属用户和用户组改成codegoat24,并且包含其子目录

#chown -R codegoat24:codegoat24 ./lib

9、sudo的使用

1.痛点:reboot、shutdown、init、halt、user管理,在普通用户身份上无权操作,但是有些特殊的情况下又需要有执行权限。又不可能让root用户把自己的密码告诉普通用户,这个问题该怎么解决?

可以使用sudo(switch user do)命令来进行权限设置。Sudo可以让管理员(root)事先定义某些特殊命令谁可以执行。

2.sudo的权限配置

打开sudo配置文件:/etc/sudoers

#visudo

Root表示用户名,如果是用户组,则可以写成“%组名”

ALL:表示允许登录的主机(地址白名单)

(ALL):表示以谁的身份执行,ALL表示root身份

ALL:表示当前用户可以执行的命令,多个命令可以使用“,”分割

示例:

本身test用户不能添加用户,要求使用sudo配置,将其设置为可以添加用户,并且可以修改密码(但是不能修改root用户密码)。

注意:

在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径

路径可以使用which命令来查看

语法:#which 指令名称

设置完后,可以切换到test用户下,使用 #sudo -l 查看自己的特殊权限

总结:

看到这里,想必大家已经学会了linux系统下用户、用户组和权限的管理的相关操作了吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 本章概要
  • 一、用户管理
    • 1、添加用户
      • 2、修改用户
        • 3、设置密码
          • 4、删除用户
            • 5、切换用户
            • 二、用户组管理
              • 1、用户组添加
                • 2、用户组编辑
                  • 3、用户组删除
                  • 三、权限管理
                    • 1、概述
                      • 2、权限介绍
                        • 3、身份介绍
                          • 4、查看文件权限
                            • 5、权限设置
                              • 6、字符形式命令:
                                • 7、数字形式命令:
                                  • 8、属主与属组设置
                                    • 9、sudo的使用
                                  • 总结:
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档