Bootstrap

Linux——基础指令2 + 权限

目录

1.zip/unzip

2.tar

3.bc

4.uname –r 

5.重要的几个热键 

6.扩展命令

7.shell命令以及运行原理 

8.Linux权限的理解

关于权限的三个问题:

1.目录权限

2.缺省权限

3.粘滞位


1.zip/unzip

打包、压缩:使用特定的算法,文件进行合并或者压缩,减少体积。

打包/压缩作为一个整体。

原因:1)文件体积减少,节省资源、磁盘空间,减少网络传输成本

           2)多个文件转一个文件,可以提高文件传输的容错性

语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理


举例:

可以得到结果如下:

 

再进行解压操作如下:

 

unzip XX.zip -d 路径   //解压到指定路径中

 那么怎样实现Linux 和 Windows 之间文件的互相传递呢?

1)将Linux中的文件传到Windows中

此时在桌面上(或者你所选择的位置上)就可以看见test.zip文件 

 

其中打开之后就可以看见你在文件中所填的内容

2)将Windows中的文件传到Linux中

可以直接进行拖拽,也可以用 rz 的命令。

2.tar

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

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

这里我们举例压缩和解压的方法——

1)压缩

tar -czf dst.tgz src

 例如:

2)解压

tar -xzf XXX.tgz

例如:

 

若要展现压缩过程或者是解包压缩过程,只需要在选项中添加 v 即可,例如:

tar -cvzf test.tgz test
 tar -xvzf test.tgz

 若要解压缩到指定路径——

tar -xzvf XXX.tgz -C 指定路径

 在上述,我们知道了Linux和Windows之间文件的互传,那么Linux 和 Linux之间该怎样互传呢?

用 scp 指令(这里由于条件的限制,暂时省略)

3.bc

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

 例如:

4.uname –r 

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

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

 

5.重要的几个热键 

tab键进行命令或者路径的补齐

ctrl + c 终止当前的程序

上/下键可以翻阅历史的命令

ctrl + r 搜索历史命令 

通过上述的内容,我们可以知道,Linux 系统会记录历史命令

 

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。

7.shell命令以及运行原理 

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。 

shell通常会进行创建子进程的方式进行命令行解析(进行命令行解析,同时保护内核) 

 

然而,在Linux中通常是bash ,那么bash 和Linux之间有什么联系呢?

bash是shell的一个称呼,所有的都可以成为shell(可以理解bash是shell中的一个) 

---这里是一个相对浅显的概念,在之后的学习中,我们将会进行深入的理解---

8.Linux权限的理解

权限:权限首先是限制特定身份角色的,目标事物的属性也会影响权限,所以,权限 = 角色 + 事物属性。

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

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

 当处于普通用户的时候,我们执行命令 ‘ su ’后,输入密码就可以转换到root中。再回退到普通账号,只需要输入 ctrl + d 或者 exit 就可以回到普通用户。

例如:

或者也可以使用“ su - ”命令,此时家目录也会发生变化。 

在普通用户时使用“ su ”也可以转换成其他的用户,不过要知道该用户下的登录密码,但是,在超级用户上时,不用输入密码。

在Linux安装软件时,一般是在root身份下安装的,所以,此时在普通用户的账号下时需要进行指令提权。

其中,文件类型如下:

d   目录

-    普通文件

c   字符设备文件

b   块设备文件

p   管道文件

l    链接文件 

其中,字符设备文件最常见的就是显示器和键盘。

块设备文件最常见的就是磁盘。

---管道文件和链接文件在后续的学习中会讲到--- 

Linux中角色可以分为三类:

1)文件拥有者

2)文件所属组

3)other 

 

其中,r 表示读,w 表示写,x 表示可执行。(当有时表示可以,否则不可以)

也可以改变拥有者/所属组/other的权限,例如:

chmod u-r test.txt   //拥有者
chmod g-r test.txt   //所属组
chmod o-r test.txt   //other
chmod u-r,g-rw,o-w test.txt
chmod u+rw,g+r,o+w test.txt
chmod a+r test.txt   //修改所有具有读的权限

需要注意的是:

1)要修改权限,必须为拥有者,或者是超级用户。

2)并不是有权限就可以执行,Linux下能够执行的条件是:

     真的是一个可执行文件 + 可执行权限。

3)在user,group,other 和我自己之间进行身份对比的时候,是依次只对比一次。

其中,命令中的760,777 是用八进制来进行转换

 

 修改角色——>可以使用以下的命令:

chown (user name) test.txt
sudo chown (user name) test.txt//强制更改

改变时,需要有root 权限或者是提权。

修改所属组——>

sudo chgrp (user name) (文件名)

对于一个文件,没有 r 权限,那么用任何工具都不行。(权限限制的是用户/操作者)

关于权限的三个问题:

1.目录权限

r 对于目录的意义:是否有权查看指定目录下的文件信息

w对于目录的意义:是否有权在指定目录内部新建、删除、修改文件名等修改文件的操作。

x 对于目录的意义:是否具有进入目录的权限 

2.缺省权限

 

1)根据图片可以看出,文件的起始权限是固定的 

2)umask 权限掩码

     

     修改权限掩码,达到修改Linux文件缺省权限的问题!

3)最终权限(缺省权限)

      结论:最终权限(默认)= 起始权限 & (~umask)

      umask可以进行改变

      umask设置的目的是为了增加灵活性

这里有个图片来进行解释——

3.粘滞位

1)Linux多用户下,对于文件的访问,是隔离的。

2)需求:我们想让Linux下不同的账号共享文件,则该文件不能再任何一个普通账号的家目录里。

3)存在的问题:

      1. 在共享目录下,可以执行文件的删除操作。(因为存在 w 权限)

      2.粘滞位:任何用户,在设置了粘滞位的目录下,自己只能删除自己的文件,其他人无法删               除。

      3.粘滞位只用给目录设置,不需要给普通用户设置。 

;