Linux入门教程:P10->用户权限类

本系列文章为尚硅谷武晟然老师的Linux入门教程学习笔记,前面的系列文章链接如下
Linux入门教程:P3->Linux文件系统
Linux入门教程:P4->Vim编辑器
Linux入门教程:P5->网络配置
Linux入门教程:P6->系统管理
Linux入门教程:P7->Shell介绍
Linux入门教程:P8->文件目录类
Linux入门教程:P9->时间日期类


一、用户管理

背景

Linux系统是一个多用户多任务的分时操作系统,所以可能会有很多人都用同一台机器进行操作,甚至有可能还是同时登陆同时操作的。所以人一多,我们就要进行很好的管理才行,必须对于不同的用户给予他们一个相应的身份呢。也就是说给用户一个特别的帐号,这个帐号可以设置自己的密码,然后就会有着不同的权限。用户想要登录系统的时候,就分配的账号去登录系统,然后就可以获取到不同的系统资源。这就是用户管理的基本的思想。(注:必须以root的身份去进行用户管理操作)


useradd 添加新用户

基本语法: useradd 用户名 (功能描述:添加新用户)
示例: root用户的主目录是/root,普通用户的主目录是/home/用户。现在通过useradd tony创建一个普通用户tony,看看是否会存在/home/目录下。
在这里插入图片描述
可以看出创建的普通用户出现在/home/目录下。
示例: 对于普通用户的主目录是可以改变的。我们通过useradd -d /home/dave david创建一个普通用户david,同时让其主目录为/home/dave
在这里插入图片描述
可以看出,当我们查看home目录时,出现的是david的主文件夹名称dave,但是用户的名称是david。

passwd 密码设置

基本语法: passwd 用户名 (功能描述:设置用户密码)
示例: 通过passwd tony给tony设置密码。
在这里插入图片描述
设置之后就可以用tony的账号登录了。

id 查看用户是否存在

基本语法: id 用户名
示例: 通过id查看一些用户是否存在。
在这里插入图片描述
可以发现存在的用户会打印出uid(用户ID)和gid(组ID),而dave是david的主目录而不是用户名称,所以不存在。

cat /etc/passwd 查看创建了哪些用户

示例: 通过查看passwd文档来查看创建了哪些用户。
在这里插入图片描述
从中可以看出:
①最上面有一堆其他的用户,这些用户好像我们都从来没见过,没什么用。实际上这里的大多数用户都是系统默认创建出来的,比方说bindaemonshutdown等。这都是跟系统服务相关的,这些用户就是单独创建出来运行相应的系统服务。所以这些用户一般被称为系统用户,或者叫伪用户,就是它并不能作为真正用户的身份去登录,它就是用来去运行系统里边的服务。
②刚才创建出来的那些用户在文档最后面。分别列出了uid、gid、主目录、登录交互方式。
在这里插入图片描述
每个用户登录系统时需要跟系统进行交互,/bin/bash代表跟shell交互。前面很多系统用户跟系统交互的方式都是nologin,即不用去登录,本身默认就是运行系统服务的。

su 切换用户

基本语法
su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)
案例: 通过su xzz切换用户xzz,可以看到当前的主目录也变成了/home/xzz
在这里插入图片描述
当前用户是xzz,我们继续使用su tony切换到tony用户,可以看出要输入密码。执行ls,可以发现普通用户无法查看另一个普通用户的主目录下的内容。
在这里插入图片描述
切换回root用户
①通过su root
②当前的用户切换跳转是一个层层嵌套的会话,即root嵌套xzz嵌套tony。我们可以通过exit层层返回。
在这里插入图片描述
查看当前登录的用户
who am i查看当前登录的用户的进程相关信息。
whoami查看当前登录的用户。
案例: 通过root用户登录,查看登录的用户信息。然后切换用户,再查看登录的用户信息。可以看到who am i始终显示真正的登陆的用户,因为切换用户还是基于当前的root用户创建的会话,这个进程还是root创建的。
在这里插入图片描述

sudo 设置普通用户具有root权

现在我们登录的是普通用户tony,无法访问root用户的主目录。
在这里插入图片描述
如果我们想临时赋予tony一些超级管理员的权限,可以使用sudo加上命令。
在这里插入图片描述
但是这里还是没有成功,我们需要在root用户下去修改/etc/sudoers这个配置文件。可以看到下面这一行代表了root可以在任何地方执行任何指令。
在这里插入图片描述
于是我们赋予tony同样的权限。
在这里插入图片描述
然后进行测试,此时就可以使用sudo ls查看root主目录下的内容了。
在这里插入图片描述

userdel 删除用户

基本语法:
userdel 用户名 (功能描述:删除用户但保存用户主目录)
userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
注:该操作要在root用户下操作。
示例: 使用userdel tony删除tony用户,但是保留主目录。一般这种情况用的多,因为虽然用户不在了,但是可能他之前的文件还有用。
在这里插入图片描述
使用cat /etc/passwd可以看到没有tony用户了
在这里插入图片描述
我们userdel -r david删除david,可以看到主目录没了。
在这里插入图片描述
同时,passwd文件也没有david用户了。
在这里插入图片描述


二、用户组管理

用户组管理

用户组就相当于一个小组,比如一个公司里面有研发组、测试组、运维组等等。每个组内的用户负责不同的事情,这就相当于拥有了系统里面不同的权限。Linux里面默认创建新用户时,会创建一个跟用户名相同的组名、跟用户ID相同的组ID。
在这里插入图片描述
现在,我们想新建一个meifa组,使用命令groupadd meifa。然后使用命令cat /etc/group去查看group配置文件,可以看见成功创建了meifa组。
在这里插入图片描述
如果想修改组名,可以通过group -n 新组名 老组名来完成修改,我们这里将meifa修改为harcut。
在这里插入图片描述
现在我们想将tony和david加入haircut组,可以使用usermod -n 用户组 用户名
在这里插入图片描述
此时查看tony和david的gid,可以发现已经变为1005了。
在这里插入图片描述
最后,由于将tony和david移动到了haircut组,所以我们将原来的david和tony组删除。可以通过groupdel 组名来删除。
在这里插入图片描述
查看group配置文件,可以发现已经删除了。
在这里插入图片描述

wheel用户组

sudoers配置文件中有一个wheel用户组,它比较特殊,是管理组。在这个组里面的用户拥有权限去执行所有的命令。
在这里插入图片描述
我们可以先将atguigu用户移动到wheel组,然后切换到atguigu用户,执行sudo ls。可以发现虽然sudoers配置文件里面没有设置atguigu用户,但是仍然可以直接使用命令,这就是由于atguigu在wheel工作组里面的原因。
在这里插入图片描述
可以看到这里还是需要输入密码,可以使用下面那一行,即在sudoers配置文件的wheel后面加上NOPASSWD:ALL。这样使用sudo就不用输入密码了。
在这里插入图片描述


三、文件属性和权限

背景

问题: 前面我们介绍了用户管理和用户组管理的相关命令,我们就会思考一个问题:用户组划分出来之后是为了干什么?
答: 就是为了把很多用户做集中化管理。
问题: 这些用户集中在一起构成了一个用户组,怎样去针对他和其他的组进行区别?
答: 他们的区别在于拥有不同的系统操作权限。
问题: 用户除了可以访问各自的主目录里面的内容,其他的目录里的内容谁才可以访问呢?
答: 除了用户自己的主目录访问外,别的文件和文件夹针对不同的用户、用户组也有一个权限的划分。这就是文件权限的管理。

文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定,具体如下图所示。
在这里插入图片描述
文件权限涉及到硬件是因为Linux系统里边一切皆文件,所有的设备也是用文件来进行管理的,当然就得有对应的文件类型。对应这些设备文件可以在/dev/设备目录下边看到所有的内容。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。
在这里插入图片描述
文件权限标识字符:
①0首位表示类型
-:代表文件
d:代表目录
l:代表链接文档(link file)
c:字符类型的设备文件。比如鼠标键盘,它们输入的操作可能涉及到字符。
b:块设备文件。比如硬盘。
在这里插入图片描述
②第1-3位确定属主(该文件的所有者)拥有该文件的权限 —User
③第4-6位确定属组(所有者的同组用户)拥有该文件的权限 —Group
④第7-9位确定其他用户拥有该文件的权限 —Other
rwx 作用文件和目录的不同解释:
①作用到文件:
[r]代表可读(read): 可以读取,查看
[w]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前
提条件是对该文件所在的目录有写权限,才能删除该文件。
[x]代表可执行(execute):可以被系统执行
②作用到目录:
[r]代表可读(read): 可以读取,ls查看目录内容
[w]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[x]代表可执行(execute): 可以进入该目录,即cd命令
示例: 下面这些目录文件夹对于属主root有读、写、可执行权限,属组和其他用户拥有读和执行。
在这里插入图片描述
我们可以测试一下。
①退到根目录/,然后ll看当前目录的权限。可以看到root是有权限访问这个root目录的,root组的用户也可以访问,但是其他用户不能。
在这里插入图片描述
②使用ls -al,其中-a代表可以看到隐藏文件和目录(以一个点开头的)。因此,我们这里可以看到...对应的权限,对于当前目录.其他用户是无法访问的。
在这里插入图片描述
示例: 将这里的anaconda和initialsetup这两个cfg文件拷贝到普通用户xzz的用户目录下。
在这里插入图片描述
可以看到这两个文件的所属还是没变,权限也没变。因此使用cat访问anaconda这个配置文件就会出错。
在这里插入图片描述
而initialsetup配置文件是可以访问的,但是不能写入,除非使用sudowq!
在这里插入图片描述
文件基本属性解释
在这里插入图片描述
其中,如果查看到是文件:链接数指的是硬链接个数。如果查看的是文件夹:链接数指的是子文件夹个数。
示例: 这里的公共目录里面有2个子文件夹。
在这里插入图片描述
但是进去ls后发现是空的。
在这里插入图片描述
使用ls -a可以看到里面有...,这本质上也是两个文件夹
在这里插入图片描述


四、更改文件权限

chmod 改变权限

背景: 如果当前想要去访问或修改一个文件里面的内容,但是又没有权限,这时最简单的想法当然就是切成root用户,或者说加上sudo,但是这个权限显然是非常大的。一般情况我只想访问某一个文件的时候,只要把对应这个文件的权限进行更改即可,这就相当于给我们提供了更加丰富、更加精细的对于权限的管理。
基本语法
在这里插入图片描述
第一种方式变更权限: chmod [{ugoa}{+-=}{rwx}] 文件或目录
其中:ugoa分别代表属主、属组、其它、全部。+-=分别代表增加、减少、指定权限。rwx代表读、写、执行。
示例: 使用chmod u+x initial-setup-ks.cfg命令为initial这个配置文件添加属主的执行权限。
在这里插入图片描述
通过chmod a=rw initial-setup-ks.cfg为所有用户指定对initial配置文件的读写权限。
在这里插入图片描述
第二种方式变更权限: chmod [mode=421] [文件或目录]
其中,r=4 w=2 x=1, rwx=4+2+1=7,其实就对应了rwx三位二进制的值。
rwx
1-x。001
2-w。010
3-wx。011
4-r。100
5-rx。101
6-rw。110
7-rwx。111
示例: 使用chmod 777 initial-setup-ks.cfg为initial配置文件指定所有权限。
在这里插入图片描述
修改目录的权限
问题引出: 修改目录的权限涉及到另外一个问题:我们对于目录进行操作,当前目录拥有可读可写可执行权限了。假如它下面还有其他的子目录和子文件的话,那里边还是不可读不可写,那怎么办呢?
答案: 这时我们希望嵌套地递归,内部的所有子文件、子文件夹都拥有相关的权限。具体做法为:加上-R,如chmod -R 777 xiyou/。这是比较强大的一招,接下来这个目录就相当于谁都可以用,但是也要小心,这相当于开放了完整的权限,谁都可以去改,谁都可以去删。

chown 改变所有者

基本语法: chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有
者)
选项: -R:递归操作,用于更改目录的所有者。

chgrp 改变所属组

基本语法: chgrp [最终用户组] [文件或目录](功能描述:改变文件或者目录的所属组)
示例: 修改initial配置文件的属主和属组用户。
在这里插入图片描述


五、综合应用案例

案例描述: 在公司里有不同的部门不同的组,比如大数据是一个部门,测试是一个部门。同一个组里面的人可以读取、修改属于该组的文件和目录,但是其他组成员就只能访问。

1、创建组和用户

使用groupadd bigdatagroupadd test创建大数据组和测试组。
在这里插入图片描述
查看/etc/group配置文件,可以看到成功创建。
在这里插入图片描述
使用useradd -g 组名 用户名为大数据组和测试组添加成员,并使用id 用户名查看相关信息。
在这里插入图片描述
还可以看到home目录下各个用户也有对应的主目录文件夹。
在这里插入图片描述

2、创建文件

切换到用户小明,在其主目录下创建代码文件import_code
在这里插入图片描述
该文件的权限如下。
在这里插入图片描述
此时如果切换到同组的小亮,可以看到小亮无法访问小明的主目录。
在这里插入图片描述
切换到home目录去,可以看到小明的主目录只对小明有所有权限
在这里插入图片描述
因此,需要让小明的主目录为属组成员开启可执行权限(代表可进入目录)和可访问权限。
在这里插入图片描述
此时小亮就可以进入小明的主目录并访问import_code文件了。
在这里插入图片描述
但是不能去修改该文件
在这里插入图片描述
即使加上wq!也无法保存,因为加感叹号相当于执行sudo,而小亮是没有sudo权限的。
在这里插入图片描述
如果想让该文件对组内成员可修改,则切换到小明,然后修改import_code的权限。
在这里插入图片描述

3、组外成员访问

假设测试组的小红想要访问该文件,可以看到连小明的主目录都进不去,于是需要为小明的主目录指定权限。
在这里插入图片描述
然后小红就能进去并访问import_code目录了,但是仍然不能修改。
在这里插入图片描述
如果此时测试组的小蓝转部门到大数据组,则可以看到成功转过来了。
在这里插入图片描述
小蓝此时对import_code文件也有修改权限了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知初与修一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值