Linux权限(上)

简介: Linux权限

🏆一、shell


Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?


从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:


1、将使用者的命令翻译给核心(kernel)处理。


2、同时,将核心的处理结果翻译给使用者。


对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。


shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。


简单来说,我们程序员把命令(需求)交给shell,shell去和操作系统交互,当用户输入非法指令,shell直接拒绝掉。shell存在的意义:变相的保护操作系统。shell在执行命令时,它是通过派生子进程(bash)的方式执行用户的指令,而shell本身并不执行对应的指令。


🏆二、Linux用户


Linux下有两种用户:超级用户(root)、普通用户。


🐱超级用户:可以在Linux下做任何事情,不受限制;


🐱普通用户:在Linux下做有限的事情。


超级用户的命令提示符是“#”,普通用户的命令提示符是“$".


🖊1、su指令


su指令用于用户间的切换,使用su从普通用户切换到root用户,需要输入root密码,而从root用户切换到普通用户,不需要密码,很自由。


这里,强烈不建议root和普通用户密码一样,因为我们在切换用户会出现问题,比如:


1669266477800.jpg


🖊 2、su -指令


su -指令也可以切换到root用户,但是要注意和su之间的差异。


1669266499732.jpg


1、su路径不变,把自己变成root。


我们可以看到,当只使用su时,我们从普通用户切换到root用户下普通用户所在的路径。简单来说。


2、su -回到家目录


当我们使用su -时,就从普通用户切换到/root目录下。


🖊3、root切换


👓①exit退出

1669266511365.jpg

👓 ②su

1669266525407.jpg

👓 ③Ctrl+d

这种比较挫,不建议,因为就是退出登录,然后ssh重新登录。


🖊4、提权


在现实生活中我们有这种场景,我不是root用户,但是我想以root的权限去执行命令。这时候就要提到一个指令:sudo指令。


sudo作用:只要加上sudo,与sudo最近的指令就会以root的身份执行指令。sudo指令一般是普通用户使用,root本身就是超级用户,不需要用sudo。


1669266545929.jpg

1669266553306.jpg


这里不知道大家注意到一个问题了没有,我想短暂提权,为什么要我输入普通用户的密码,如果仅仅输入普通用户的密码就能提权,那我普通用户不就可以恣意妄为了吗?不着急,如果你的普通用户没加入到系统的可信任名单,你提权还是会失败的。


比如这里:


1669266561768.jpg


跳出这个,说明我们需要将当前用户,添加到可信任名单,也就是添加到/etc/sudoers中。


具体怎么添加呢?博主找个没被添加的用户给老铁演示一下:


👓①、赋予sudoer文件写的权限(需要在root账号下操作)

sudo chmod u+w /etc/sudoers


👓②、编辑sudoers文件,给对应的用户添加sudo权限

sudo vi /etc/sudoers


进去后应该看到这样的界面:别乱动,千万别乱动!!!


1669266584091.jpg


这里不要用鼠标的滚轮上下翻动,那无效,用键盘的上下键进行翻阅,往下翻,大概在八十多行找到这样的文本:

1669266593371.jpg

这是博主已经给Gyh用户添加到可信任名单了。

我们照猫画虎,按i/a键就可以编辑:

1669266605634.jpg

然后,按【ESC】键退出编辑。


再按:wq就可以保存退出,这时候我们就成功把用户Zed添加到可提权的可信任用户名单里面了。


🏆三、文件访问者的分类


文件和文件目录的所有者:u--user


文件和文件目录的所有者所在的组的用户:g --grouper


其他用户:o--other

1669266632894.jpg


🏆四、文件类型和访问权限

1669266649126.jpg

🖊1、文件类型


我们常用的Windows系统通常通过文件的后缀来区分文件类型,比如图片就以.jpg .png等为后缀,文本通常以.txt为后缀,可执行程序以.exe后缀等等...但是在Linux下区分文件类型和文件后缀没有关系。


Linux以文件属性的第一个字符代表文件类型!!


1669266662186.jpg


Linux文件类型:(第一个字符)(常见的)


-:普通文件(源代码,库文件,可执行程序,文档压缩包);


d:目录文件


c:字符设备文件


b:块设备


l :链接文件


p:管道文件


可能光谈论文件类型比较抽象,博主就举几个例子来让老铁直观感受一下:


👓①c:字符设备文件

它通常指比如键盘,显示器等。可以看一下Linux下的字符设备文件。


1669266671655.jpg


👓②b:块设备

最直观的块设备:磁盘。上篇博客提过,df - h指令就是具体查看磁盘。


1669266679137.jpg


👓③l:链接文件

链接文件在Windows下最直观的就是软件的快捷方式,就是典型的链接文件。


1669266689220.jpg


👓④p:管道文件

除了之前博客介绍的| 管道,管道还有很多形态。


1669266697322.jpg


1669266704559.jpg

通过管道,我们可以实现用户间的交互。


那既然Linux不以后缀区分文件类型,是否就意味着我们就命名文件就随便写,不加后缀呢?


再举两个例子来感受一下:


1669266717512.jpg


我这里成功编译了a.out文件,我们修改一下名字,看它是否还执行:


1669266727284.jpg


仍旧执行,印证了后缀在Linux下就是文件名的一部分。但是毕竟这样很不舒服我们查看文件的类型。再来看一个例子:


1669266736022.jpg


这里可能有的老铁要困惑了,既然Linux文件类型和后缀无关,为什么我用gcc编译器编译test.c文件可以成功,改成test.txt名字就会报错:无法识别文件类型呢?


这里有个误区需要提醒大家:


Linux系统对文件识别与后缀无关,但是不代表gcc等工具识别文件和文件后缀没有关系!!!gcc等工具可能要看文件后缀。


所以,😂,综上所述,为了我们看着舒服,方便识别文件类型,也方便各种工具使用,我们在命名时最好还要加上后缀!!


🖊2、访问权限


介绍完了文件属性中第一个字符代表文件类型,那么剩下的9个字符什么意思呢?

1669266762661.jpg

???


首先要说明一下‘r’、‘w’、‘x’、‘-’分别是什么含义。


👓①基本权限

r: Read对文件而言,具有读取文件内容的权限;对目录而言,具有浏览改目录信息的权限。


w: Write对文件而言,具有修改文件内容的权限;对目录而言具有删除移动目录内文件的权限


e:execute对文件而言,具有执行文件的权限;对目录而言具有进入目录的权限。


- :表示不具有该项权限。


👓②三种角色的权限

了解了基本权限,我们再把这九个字符分成三组。


1669266777846.jpg


这三个位置是固定的,就是r-w-x的位置,有就有相应的字符,没有就是-.


1669266786521.jpg


🏆3、如何操作权限


操作权限涉及两方面:

1、设置文件属性    ----  chmod指令

2、设置文件所属角色  --chown、chgrp指令


👓①chmod指令

功能:设置文件的访问权限。


格式:chmod 角色 +/-  权限 文件。


常用选项:


               R ->递归修改目录文件的权限。


               注意:只有文件的拥有者和root才能改变文件的权限!!


🐂+:向权限范围增加权限代号所表示的权限。


🐂 -:向权限范围取消权限代号所表示的权限。


🐂=:向权限范围赋予权限代号所表示的权限。(基本不用)


🐂用户符号:


                     u:拥有者


                     g:所属组


                     o:其他用户


                     a:所有用户


示例:


1669266824141.jpg

1669266835721.jpg

1669266847008.jpg

1669266853442.jpg

1669266862637.jpg


这里只显示了对单个角色的权限操作。如果我想同时操作多个角色的权限呢?


比如我想同时去掉拥有者和other的所有权限,怎么操作?


1669266886093.jpg


只要在中间加上逗号就可以了。


👓②chmod a-/+ 权限 文件名


1669266901380.jpg

a:表示all ,就是全体角色,对全体角色权限操作。


👓③没有权限

操作完权限,我们来演示一下没有权限会发生什么:

1669266911799.jpg


相关文章
|
29天前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
45 2
|
30天前
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
1月前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
34 1
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux专栏10:Linux权限详解(上)
Linux专栏10:Linux权限详解(上)
38 3
|
22天前
|
Unix Linux Go
Linux中的chmod权限问题
Linux中的chmod权限问题
16 0
|
28天前
|
安全 Linux 数据安全/隐私保护
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
在Linux中,使用rsync服务模式时,如果指定了⼀个密码文件,那么这个密码文件的权限应该设置成多少才可以?
|
28天前
|
Linux
在Linux中,如何使用xargs和exec实现把当前目录下所有后缀名为.txt的⽂件的权限修改为777。
在Linux中,如何使用xargs和exec实现把当前目录下所有后缀名为.txt的⽂件的权限修改为777。
|
29天前
|
安全 Linux 数据安全/隐私保护
Linux安全大揭秘:一键切换root权限背后隐藏的秘密
【8月更文挑战第23天】Linux操作系统因其出色的灵活性和安全性备受推崇,用户权限管理是其核心功能之一。本文介绍如何安全地在用户间切换,特别是切换至拥有最高权限的root用户。我们探讨了两种主要的方法:`su` 和 `sudo` 命令,并通过示例展示了它们的应用场景。`su` 命令适合需要执行多个root权限操作的情况,而 `sudo` 更适用于临时执行单个高权限命令。同时,文章还提供了一些最佳实践,如避免长时间使用root账户、定期审查 `sudoers` 文件等,以确保系统的安全性。正确理解和应用这些工具和原则对于维护Linux系统的安全至关重要。
35 0
|
29天前
|
安全 Linux 数据安全/隐私保护
在Linux中,什么是最小权限原则?
在Linux中,什么是最小权限原则?
|
1月前
|
Linux Go
在Linux中,文件和目录的权限有何作用以及如何修改?
在Linux中,文件和目录的权限有何作用以及如何修改?