【Linux】权限管理,谁动了我代码?!

目录

一,shell命令以及运行原理

二 ,Linux用户权限

1. su —— 用户切换 

三,权限管理

1. 理解 

 2. 用户

 3. 文件类型

 4. 文件基本权限

 5. 设置文件权限方法

1. chmod ——  修改文件访问权限

2. chown  ——  修改文件拥有者

3. chgrp   ——  修改文件所属组

4. umask —— 文件掩码

6.  对于目录而言的权限

1. r : 

2. x: 

3. w :

4.  t ——粘滞位(目录文件限定)


一,shell命令以及运行原理

Linux 严格意义上说的是一个操作系统,我们称之为 核心(kernel) ,但我们一般用户,不能直接使用 kernel 。而是通过kernel 外壳 程序,也就是所谓的 shell ,来与 kernel 沟通。
从技术角度, Shell 的最简单定义:命令行解释器( command Interpreter )主要包含:
  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者
shell统称也就是下面的具体的 bush

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

 那如何理解shell(外壳程序)功能呢?

1. 方便用户完成操作。

我们如果想打开一个文件,而文件存在磁盘中,不可嫩我们专卖去学习一下机器码,所以我们同过简单指令告诉shell我的请求,让她和内核进行沟通,打开文件。

2. 处理内核返回的消息。

如果用户发送明显的错误请求,shell会直接返回错误信息,不会向内核发送请求,这样也就保护内核

如果多个用户向shell发送多条请求,shell会为每个用户创建一个子进程,再向内核发出请求。

二 ,Linux用户权限

Linux 下有两种用户:超级用户( root )、普通用户。
超级用户:可以再 linux 系统下做任何事情,不受限制。
普通用户:在 linux 下做有限的事情。
(注意:超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$”)

1. su —— 用户切换 

命令 su - [ 用户名 ]
功能 :切换用户。
1.   su -     切换root下的 路径(超级管理员) 注意: 一定不要和普通用户密码不同

2.   su - [用户名]    当我们在root身份下,使用该指令可以访问任意创建的用户

3.  我们在普通用户下,登陆root,那我们如何回到用户,可不只su - [用户名]。

Ctrl + d  即可

(注意: 我们在普通用户中,运用su - 变成root,其本质是创建一个子进程,而我们回退到原来的普通用户建议使用strl + d,因为su -[用户名]会创建一个新的子进程,没必要叠加这么多的进程)

三,权限管理

权限 = 用户 + 事物的属性(文件属性)

就好比如:我是一名普通的学生,可以随意进出我的宿舍,但我缺无法随意进入校长的办公室。

事物的属性: 比如:面包具有被吃的属性,汽车具有被开的属性,桌子具有被办公的属性。

1. 理解 

我们出来权限就可以通过这两方面进行修改,比如:总统桌在那里,我没有使用的权限是用户受限,桌子没有失掉他的属性;

但如果是总统,而桌子因为长年累月已经不平了,那么就失去了其作为办公的属性。

 2. 用户

1. 拥有者(owner)

2. 所属组(group)

3. 其他    (other)

 3. 文件类型

 - : 普通文件,比如: 文本,动静态库,可执行程序(.exe),源程序

d: 目录文件

c: 字符设备文件:键盘与显示器

b: 块设备文件(block):磁盘

p: 管道文件(pipe):通信

l : 链接文件(link):软链接

 (注:在linux下一切皆文件)

 4. 文件基本权限

 

 5. 设置文件权限方法

1. chmod ——  修改文件访问权限

 语法:chmod [参数] 权限 文件名

常用选项:
-R -> 递归修改目录文件的权限 说明:只有文件的拥有者和root 才可以改变文件的权限

方法一: 

用户表示符    +/-=     权限字符
+:  增加权限
-:   取消权限
=:  向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户

比如: 

# chmod u+rw  abc.txt ...支持多文件修改
# chmod o-rx    abc.txt

 

注意:

 方法二: 

 三位8进制数字进行表示

用法: chmod   xxx  [文件名]

2. chown  ——  修改文件拥有者

  语法: chown [参数]   用户名  文件名(支持多文件修改)

  own位与group位都进行修改: chown  [新own] : [新group]  文件名(支持多文件)

(1.   root与普通用户。以root身份修改(我是老大,拿来,给予不用商量)

 在root身份下,直接用 chown [新用户]  [目标文件] —— 拿回来也不用商量

(2.  普通用户之间。普通用户修改(文件给别人,和拿回来都得客客气气地,需要得到允许(需要输入密码))

      方法:

  法一sodo  chown  [新用户名]  [目标文件] —— 现在学的还使用不了sodo

 法二: 用root老大身份切换。先su (不用带- 会保留在普通用户的路径)提升权限,然后对普通用户文件拥有者进行修改。

3. chgrp   ——  修改文件所属组

 语法:chown [参数]   用户名  文件名 

 chgrp可以类比于chown,同样地有这样特性:

(1. root老大还是可以直接换所属组。

(2. 普通用户之间得需要用sodo进行权限提升,说人话是得“经过同意后”,才能进行文件所属组的修改。

4. umask —— 文件掩码

功能: 查看,修改文件掩码

文件掩码里面的权限是文件,目录创建时不能拥有的权限

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask
 
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为0002

文件默认掩码:0666

目录默认掩码:0777 

实例:

umask   //查看掩码

umask   

6.  对于目录而言的权限

 1. r : 

功能:在目录外,可以查看目录内容;(注:但如果没有打开权限(x),无法查看详细信息。)

2. x: 

功能:打开目录的权限

面试题: Linux中打开目录的权限是什么?

答案:是 X ——执行权限

3. w :

功能:目录的创建,删除文件或者新目录

思考:但我们会发现会有这样使用场景,允许他人写入文件,但不允许删除其他人的权限,而w权限既能写入,又能删除;

在组内还好,可以查到是谁恶意删除他人文件,但other删除他人文件我们却无能为力,怎么办?

4.  t ——粘滞位(目录文件限定)

功能:作为一个仅目录文件使用的一权限符号,一般对other使用。

与X同一位置

当一个目录被设置为 " 粘滞位 "( chmod +t ), 则该目录下的文件只能由:
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

7. file指令

功能说明 辨识 文件类型。
语法 fifile [ 选项 ] 文件或目录 ... 
常用选项
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容

结语

本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论;如果给小伙伴带来一些收获请留下你的小赞,你的点赞和关注将会成为博主创作的动力。

猜你喜欢

转载自blog.csdn.net/qq_72112924/article/details/130782922