目录
1.shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
1.将使用者的命令翻译给核心(kernel)处理。
2.同时,将核心的处理结果翻译给使用者。
注:存在的意义对命令行进行解释,保护OS,对于用户的非法请求直接拦截。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的
操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
2.Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su/su - [用户名]
功能:切换用户
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
root(root可以省略),此时系统会提示输入root用户的密码。
su - 和 su 的区别在:
su:以普通用户的身份变成root的身份,不会改变当前所处路径。
su - :以root的身份重新登陆,登陆时可以看到上一次的登陆时间,并且回到root的家目录。
注:Linux中所有的用户,都要有密码,无论是root还是其他,即便是多个普通用户,也要设置密码。当其他用户想要切换使用其他人的用户使用需要输入用户对应的密码,而root不需要输入密码。从这种形式下可以看到root用户不受权限的约束。
如果我们想要暂时的对一条指令进行提权可以使用 sudo [指令名]。但是会有提示无法进行提权
目前我们使用adduser新建的用户,没有办法执行sudo,系统不信任你,除非未来你将普通用户,添加到系统的信任白名单里。
3.Linux权限管理
3.1文件访问者的分类
文件和文件目录的所有者:u---User
文件和文件目录的所有者所在的组的用户:g---Group
其它用户:o---Others
文件具有可读,可写,可执行,的属性,访问者可以对文件进行操作,那么所有者就可以有权限制访问者的操作。
3.2文件类型和访问权限(事物属性)
文件类型:
d:文件夹 -:普通文件 l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件
基本权限:
读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x):执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
"-":表示不具有该项权限
3.3文件访问权限的相关设置方法
chmod指令
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
-R:递归修改目录文件的权限 说明:只有文件的拥有者和root才可以改变文件的权限
chmod命名权限的格式:
+:向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限 =:向权限范围赋予权限代号所表示的权限 用户符号: u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户
实列:
# chmod u+w abc.txt # chmod o-x abc.txt
chown指令:
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:
-R : 处理指定目录以及其子目录下的所有文件
实列:
chgrp指令:
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名文件名
常用选项:-R 递归修改文件或目录的所属组
注:其实chown兼备了这个功能,这两个只需要记住chown指令就好,如果想要去了解可以自行搜索。
3.4文件权限值的表示方法
字符表示方法:
Linux表示 | 说明 | Linux表示 | 说明 |
r-- | 只读 | -w- | 仅可写 |
--x | 仅可执行 | rw- | 可读可写 |
-wx | 可写和可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | --- | 无权限 |
8进制数组表示方法:
权限符号 | 八进制 | 权限符号 | 八进制 |
--- | 0 | r | 4 |
x | 1 | r-x | 5 |
w | 2 | rw- | 6 |
wx | 3 | rwx | 7 |
3.5目录的权限
1.目录的可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
2.目录的可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
3.目录的可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
那么问题来了,只要用户具有目录的写权限,那么用户就可以删除目录中的任何文件或者子目录而不论这个用户是否有这个文件的写权限。普通用户自己的家目录权限是700,在自己的家目录创建的文件别人看不到,那么有时候,我们有多个用户想进行文件数据的共享时,就需要创建一个用来共享文件的目录。(注:我们所建立的共享文件,不能创建在任何一个用户的家目录底下)。
3.6粘滞位
当一个目录被设置为"粘滞位"(用chmod +t [目录名]),则该目录下的文件只能由:
一、超级管理员(root)删除
二、该目录的所有者删除
三、该文件的所有者删除
关于权限的总结
1.目录的可执行权限是表示你可否在目录下执行命令。
2.如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
3.而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。