提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!
提示:以下是本篇文章正文内容,下面案例可供参考
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
1、将使用者的命令翻译给核心(kernel)处理。
2、同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
权限就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源,比如vip,门禁之类的。
权限和人有关,权限和事物的属性有关
权限=人(角色)+事物(文件)属性有关
- 文件和文件目录的所有者:u—User(中国平民 法律题)
- 文件和文件目录的所有者所在的组的用户:g—Group(不多说)
- 其它用户:o—Others (外国人)
一个文件的权限,谁能修改?
文件的拥有者、root
chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
① 用户表示符+/-=权限字符 实例:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:?
u:拥有者(user)
g:拥有者同组用(group)
o:其它用户(other)
所属组和其他用户的权限操作和拥有者都是一样的,同上述操作。
a:所有用户(all)
- 对于普通用户,自身要受到对应权限的约束,即使这个文件是自己的!
注意:对于文件的拥有者,如果删除了文件的拥有者权限,但是所属组的没有删除,它也会禁止读写操作.
结论:权限只会匹配一次!
- 这个时候我们把拥有者的改成root用户,但是所属组还是原来的
结论:身份识别的时候只识别一次,一旦匹配成功就不继续匹配了,如果失败就继续匹配
这里如果再加上other的读和写的权限,就又可以了!
怎么不见修改other的权限呢?
因为不需要的。
如上图所示:如果有一个字符的权限有,就是1;如果是-,就是0.
如果我们想去掉所有人的所有权限可以这样做。
chmod 000 test.txt
赋予所有权限就是下面这条命令.
chmod 777 test.txt
保留拥有者的读写权限
chmod 600 test.txt
windows是通过后缀名来区分文件类型的。
Linux不通过后缀名来区分文件类型。(并不是说Linux不用后缀)
那么通过什么区分呢?
ls -l第一个属性列
-:普通文件,文本文件,可执行程序,库等都叫做普通文件
d:目录文件
b:块设备文件(磁盘等)
c:字符设备文件(显示器等)
p:管道文件
l:链接文件
我们创建一个管道文件
mkfifo pipe
如果我们要进入一个目录,需要什么权限? ----> 进入一个目录,需要x权限
能执行 = 具有可执行权限 (x)+ 一个可执行文件
总结:
进入一个目录需要x权限
目录的r权限:用户能否查看指定目录的文件信息
目录的w权限:决定用户是否能在指定的目录内新建,修改,删除文件
umask
在创建文件的时候,要在起始权限中,过滤掉(不是简单的减法)再umask中出现的权限
umask 0000
修改了umask后,创建出来的文件权限也发生了改变,所以是uamsk影响了我们的默认权限
为什么我们普通人竟然可以删除别人的文件(包括root)合理吗?
删除一个文件和目标文件有关系吗? ---->没有关系!!!
那么和谁有关系呢? ---- >和我所在的目录有关系!!!
这个目录的拥有者和所属组所拥有的权限是rwx,root是超级管理员账号,他想干什么就干什么,root可以随便在别人的目录里面创建文件,也可以随便删除别人的文件。
但是,当root在别人的为目录里创建文件的话,还不让这个文件让任何人看。
这个文件的拥有者和所属组具有x权限可以进入目录,在具有r权限,仍然看不了root的文件内容,但是当具有w权限时,便具有了删除root文件的能力,当然只能删除root的文件,还是不能修改。
所以创建一个目录的时候是默认去掉写权限的,一个外来用户进入到这个目录是不能进行创建文件的,当然root除外~~
如果我们想在Linux下,由多个用户建立一个共享文件,来被大家共同访问,怎么办?
首先这个文件不能在我们各自的家目录下创建,为什么?
因为家目录其他人是无法进来的。
所以,我们只能在系统的非用户目录下创建。(除了自己的家目录的一亩三分地之外,就只剩下root的地盘了),所以,我们要在root的家目录下,由root创建共享目录。
普通用户想要在root账号下创建目录,只能用sudo指令来提升mkdir的权限了。
我们来看一下具体的操作
因为root超级管理员把other的权限全打开了,所以其他用户都能够读写、修改并删除。
突然小红出现了,它想搞恶作剧,把小明跟小王聊天的文件给删掉了,那么有没有什么方法防住小红呢?
这时候我们就得引入一个新的概念粘滞位。
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。
不积硅步,无以至千里;不积小流,无以成江海。