shell原理及Linux权限

Posted 暴躁小程序猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell原理及Linux权限相关的知识,希望对你有一定的参考价值。

shell及Linux权限

目录

一、指令

1.tar指令(重要)

打包/解包,不打开它,直接看内容

tar [-cxtzjvf] 文件与目录 …
参数:

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录

2.热键

[Tab]按键—具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键—让当前的程序『停掉』
[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,你也可以用来取代exit

3.bc命令

bc命令可以很方便的进行浮点运算

4.uname –r指令:

语法: uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明: uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项:

-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

5.关机

语法: shutdown [选项] ** 常见选项: **

-h:将系统的服务停掉后,立即关机

-r:在将系统的服务停掉之后就重新启动

-t sec: -t后面加秒数,是几秒后关机的意思。

6.以下命令作为扩展:

安装和登录命令: login、 shutdown、 halt、 reboot、 install、 mount、 umount、 chsh、 exit、last;
文件处理命令: file、 mkdir、 grep、 dd、 find、 mv、 ls、 diff、 cat、 ln;
系统管理相关命令: df、 top、 free、 quota、 at、 lp、 adduser、 groupadd、 kill、 crontab;
网络操作命令: ifconfig、 ip、 ping、 netstat、 telnet、 ftp、 route、 rlogin、 rcp、 finger、 mail、 nslookup;
系统安全相关命令: passwd、 su、 umask、 chgrp、 chmod、 chown、 chattr、 sudo ps、 who;
其它命令: tar、 unzip、 gunzip、 unarj、 mtools、 man、 unendcode、 uudecode。

二.shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

外壳程序:

bash—CenOs7下的具体的命令行解释器(王婆)

shell----外壳程序的统称(媒婆)

三.权限

1.权限的概念:

访问的对象天然可能没有这种“属性”。

一件事情是否允许被谁做

权限=人+事务属性(事务就是文件,属性都是读写执行)

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

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

命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

3.Linux的文件属性

可以有的属性是 读 写 执行(r w x)

文件属性包括文件类型和文件权限

4.文件权限

1.文件类型

Linux操作系统中不用文件的后缀名区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型。

2.文件名后缀

未来我们该如何看待后缀呢?

a.如果你想用就用,可以给人看

b.将后缀看做成文件名的一部分

gcc软件需要后缀

4.Linux用户

普通用户和root用户之间的切换:su

5.角色划分

1.文件拥有者

2.文件所属组

3.文件的other

6.文件访问权限的相关设置方法

a)chmod

功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名

常用选项:

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

① 用户表示符+/-=权限字符

②三位8进制数字

b)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例:

# chown user1 f1
# chown -R user1 filegroup1

c)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

实例

chgrp users /abc/f2

d)umask

功能

查看或修改文件掩码

新建文件夹默认权限=0666

新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到

umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用

户默认为0002。

实例

# umask 755
# umask //查看
# umask 044//设置

7.目录权限

我们之前了解了文件的权限,那么目录的权限又是怎么样的呢?

首先我们要进入一个目录需要什么权限?

答案是可执行权限,如果我们没有可执行权限(X),那么我们就不能cd进入该目录。

对于目录来讲,如果没有r权限,我们就无法查看当前目录下的文件名+文件属性。

对于目录来讲,如果没有w权限,我们就无法直接在该目录下创建新文件。

想要更深入的了解目录权限就得利用文件系统的知识,后面会对这里进行补充。

8.默认权限

我们创建的普通文件(不包括可执行),为什么文件权限是从664开始,为什么目录的默认权限是从775开始?

其实不同的操作系统可能默认权限是不一样的。

默认权限:就是我们直接看到的

起始权限:系统设定的,普通文件的起始权限是666开始的,没有x(可执行程序),目录文件的起始权限是777(rwx);

系统为了更好的控制文件的权限,系统会有默认的权限掩码的概念!即umask。

**对于root用户,系统默认的umask值是0022;**对于普通用户,系统默认的umask值是0002。

然后通过和权限掩码的处理就可以得到最终权限。

权限掩码:在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限!

== 最终权限=起始权限&(~umask) ==

普通文件的默认权限:

目录的默认权限:

四、粘滞位

我们如果创建一个共享目录,让多个人可以同时共享文件,就会出现一些问题,就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.

举例说明就是张三创建了一个文件,为了不让李四操作,就将自己文件other的写权限关闭,李四就不可以在张三的文件中创建新的文件,但是李四只要有目录的写权限,他就可以直接将张三的文件直接删除掉,这让张三防不胜防,我们粘滞位就是为了解决这一实际问题。

但是有人又说,既然李四要有目录的写权限才可以删除目录中张三的文件,那么我们直接将目录的写权限直接关闭掉,那么李四不就不可以删除掉张三的文件了吗?可是这种方法是拆了东墙补西墙,我们这个目录创建就是为了张三和李四等人能够同时在该目录下操作,你去掉了该目录的写权限,不仅李四不能删除张三的文件,但是张三和李四都不能在该目录下创建新的文件,那么我们这个目录还有什么作用呢?所以这种方式并不能解决这一问题,粘滞位就可以。

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

我们先来看以下dir的权限:

我们给dir目录加上粘滞位后看一下权限:

加了粘滞位之后我们发现dir该目录的other的x权限位置变成了t,这样在dir的目录中没有权限的普通用户就没有办法删除文件了。

那么问题又来了,加上粘滞位后什么情况下才可以删除目录中的文件呢?

答案是在这种特定的目录下,创建文件和删除文件都是由该目录的w权限决定!

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

五、权限的总结

1.目录的可执行权限是表示你可否在目录下执行命令。

2.如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

3.而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读

权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
目录的w权限决定!

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

以上是关于shell原理及Linux权限的主要内容,如果未能解决你的问题,请参考以下文章

shell原理及Linux权限理解

Linux权限Shell命令及运行原理 | Linux权限管理 | 粘滞位

Linux权限Shell命令及运行原理 | Linux权限管理 | 粘滞位

shell原理及Linux权限

< Linux入门 > shell运行原理及Linux权限的理解

Linux入门第二篇:shell命令及运行原理和Linux权限的概念