shell命令及运行原理
在Linux中,严格意义来说是一个操作系统,我们称之为"核心(kernel)",而在操作时,我们一般是普通用户,不能直接使用kernel。而是通过kernel的外壳程序,也就是我要说的shell,来和kernel来沟通。 如果理解呢? 对比Windows GUI,我们操作windows不是直接操作windows内核,而是通过图形化接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。 shell对于Linux的,有相同的作用,主要是对我们的指令进行解析,解析指令给内核。反馈的结果通过内核运行出结果,共同shell解析给用户。 而从技术角度,shell的最简单的定义:命令解释器(command interpreter)主要包括:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心处理的结果翻译给使用者,
Linux权限的概念
Linux下的用户
在Linux中有两种用户:超级用户(root)、普通用户 超级用户:可以在Linux系统下做任何事情,不受限制。 普通用户:在Linux下做有限的事情。
我们任何区分自己是超级用户还是普通用户呢? 超级用户的命令提示符是‘#’,普通用户的命令提示符是‘$’
Linux创建用户和删除用户
我们一开始一般都是超级用户(root),使用root时不小心误删了一些重要的东西,是不可逆的,为了降低危险,我们创建一个普通用户,用来操作。
创建普通用户要先切换到超级用户(root)中进行: 命令:adduser 用户名 命令:passwd 用户名 注意:在Linux中,输入密码不回显
删除用户,要到root中进行: 命令:userdel -r 用户名
Linux用户切换
在使用Linux的时候,我们要经常来回用超级用户和普通用户,那么 我们要如何切换呢? 指令:su 用户名 功能:切换用户 超级用户切换到普通用户时,使用普通用户的密码 我这里用超级用户切换到普通用户时,并没有要输入密码,使用看情况而定,要输入密码的时候就输,不要就更好。
普通用户切换到超级用户,使用超级用户密码
Linux增加用户权限(添加到信任列表)
在使用普通用户的时候,有些命令需要增加权限来进行的。 例如:在普通用户下修改其他用户的密码 上面是不被允许的,我们要把自己的用户存放到信用列表中: 1、现切换到root用户中 2、进入/etc/sudoers 文件中 格式: vim /etc/sudoers 3、 4、在那一行后面写上: 用户名 ALL=(ALL) ALL 5、切换回自己的用户
最后恭喜你修改成功!
Linux权限的管理
01.文件访问者的分类
问访问者可以分为三类: 1、文件和文件目录的所有者(所属用户) 2、文件和目录的所有者所在的组的用户(所属组) 3、其他用户(other)
02.文件类型和访问权限(事物属性)
我们在Linux系统上创建文件或者目录时,都会有一串字符+数字。
-rw-rw-r-- 1 cxy cxy 0 Jul 28 16:47 text1
文件类型:
d:文件夹 -:普通文件 l:软链接(类似windows的快捷键) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件
基本权限:
r:对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录的权限 w:对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 x:对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 -:表示不具有该权限
03.文件权限值的表示方法
1)字符表示方式 2)8进制表示法
04.文件访问权限的相关设置方法
a)修改文件的访问权限
一个文件或目录,对于所属用户、所属组、other都有他们自己的权限,例如: 由于这个文件或目录是属于我们的,我们是可以修改这个文件或目录的权限属性。 指令:chmod 功能:设置文件的访问权限 语法:chmod 参数 权限 文件名 常用选项:
R:递归修改文件的权限 说明:只要文件的拥有者和root才可以改变文件的权限
chmod 命令的命令权限的格式 1、用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限 =:向权限范围赋予权限代号所表示的权限 用户符号: u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户
2、三位8进制数字
注意:我们也可以还其他组的权限 u+或者u- 是改所属用户的权限 g+或者g- 是改所属组的权限 o+或者o- 是改其他人的权限 a+或者a- 是改所有人的权限 八进制改发也是可以的
如果想一次性修改多个文件,那么后面再加你想修改的文件名
b)修改文件的拥有着
做为所属用户,你对这个文件不喜欢,又舍不得删,嘿嘿,你可以给别人嘛,所以,你可以修改所属用户,把你名下的给别人。
指令:chown 功能:修改文件拥有者 语法:chown 参数 用户名 文件 注意:把文件或目录的所属权给别人,也要看别人收不收,属于在执行前,都加上sudo
c)修改文件或目录的所属组
你也可以修改文件或目录的所属组 指令:chgrp 功能:修改文件或目录的所属组 语法:chgrp 参数 所属组名 文件名 常用选项:-R递归修改文件或目录的所属组 问题来了:如何一次性更改所属用户和所属组呢?
d)查看或修改文件的掩码
我们先要知道:(读写执行看后面三个数字) 新建文件的默认权限是=0666 新建目录的默认权限是=0777 但是事实上,我们新建的目录或文件,看到的权限往往不是上面的这个值。 那是因为,创建文件或者目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建出来的文件权限是:mask & ~umask 格式:umask权限值 说明:超级用户的默认掩码值为0022,普通用户默认为0002 那我们现在如何修改呢? 指令:umask 语法:umask 想改成的值
umask 755 umask //查看 umask 044//设置
目录的权限
1、可执行权限: 如果目录没有可执行权限, 则无法cd到目录中 2、可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 3、可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
于是问题来了~~ 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写 权限. 别人写了一下午的东西,可以让看,结果不小心被你删了,这得多那啥啊!
粘滞位
所以,给目录添加粘滞位,防止这种情况发生。 之后删除就不行了。 当一个目录被设置为粘滞位(用 chmod +t),则该目录下的文件只能由 1、超级用户删除 2、该目录的所属用户删除 3、该文件的所属用户删除
关于权限的总结
- 目录的可执行权限值表示你可否再目录下执行命令
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,既然目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,无法查看目录里有什么
|