文章目录
- 前言
- 一、shell 命令
- 1、什么是 shell?
- 2、什么是 shell 脚本?
- 3、shell环境
- 4、总结
- 二、Linux权限
- 1、su命令
- 2、Linux文件类型
- 3、Linux文件权限
- 4、文件访问权限的相关设置
- 4.1 chmod指令
- 4.2 chown指令
- 4.3 chgrp指令
- 4.4 总结
前言
一、shell 命令
1、什么是 shell?
(1). Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。
(2). Shell 既是一种命令语言,又是一种程序设计语言。
(3). Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问 Linux 内核的服务。
2、什么是 shell 脚本?
(1). Shell 脚本(shell script),是一种为 shell 编写的脚本程序,一般文件后缀为 .sh。
(2). 业界所说的 shell 通常都是指 shell 脚本,但 shell 和 shell script 是两个不同的概念。
3、shell环境
Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Shell 的解释器种类众多,常见的有:
(1). sh - 即 Bourne Shell。sh 是 Unix 标准默认的 shell。
(2). bash - 即 Bourne Again Shell。bash 是 Linux 标准默认的 shell。
(3). fish - 智能和用户友好的命令行 shell。
(4). xiki - 使 shell 控制台更友好,更强大。
(5). zsh - 功能强大的 shell 与脚本语言。
4、总结
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。因为如果用户直接使用kernel的话,首先用户需要对操作系统非常熟悉才可以正确的使用操作系统,而且用户可能会烦一些错误,所以在操作系统kernel与用户之间就多了一层操作系统提供的shell外壳程序,外壳程序是用户和操作系统交互中间软件层,可以在一定程度上,起到保护操作系统的作用。
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
对于windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户。而Linux标准默认的 shell就是bash。
二、Linux权限
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
1、su命令
语法:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。
需要注意的是如果从root用户直接su到user用户,此时不需要输入用户的密码,而且切换到user用户后此时所在目录还是刚刚root所在的目录。
如果从user用户直接su到root用户,则需要输入root用户的密码,而且切换到root用户后此时所在目录还是刚刚user所在的目录。如果使用su - 切换root目录,则切换后的root用户会在/root 目录下。
如果从一个user1用户直接su另一个user2用户,则需要输入user2用户的密码,而且切换到user2用户后此时所在的目录还是刚刚user1所在的目录。
ctrl+d通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思,但是也可以退出账户登录。
2、Linux文件类型
当我们使用 ls - l 指令显示出当前目录下文件的详细信息时。我们可以看到每个文件的详细信息,那么这些信息都分别表示文件的什么信息呢?
我们可以从每个文件信息的第一列信息开始看,下图中红色方框内的每一个文件的第一个信息其实代表了该文件为什么类型。Linux下不以文件后缀来区分文件类型。
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
3、Linux文件权限
在Linux系统中,一个文件的访问者可以分为下面的三类用户。
文件和文件目录的所有者(拥有者):u — User。
文件和文件目录的所有者所在的组的用户(和文件所有者同组的用户):g — Group。
其它用户(和该文件和文件目录所有者没有关系的普通用户):o — Others。
下面为文件信息中文件所有者和所在组的信息。
在Linux中,每个文件都具有以下三种权限。
读权限: r — 读,Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
写权限: w — 写,Write对文件而言,具有修改文件内容的权限;对目录来说,具有删除、创建、移动目录内文件的权限。
执行权限:x — 执行,Execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
下面我们再分析每个文件的这些权限在文件信息的哪些位置。
字符表示法
在文件信息中,表示文件类型的字母后面的九个字母三三为一组,第一组表示该文件所有者对该文件的权限,第二组表示文件所有者所在组的其它用户对该文件的权限,第三组表示other(其他人)对该文件的权限。
例如下面第一个文件aa.pdf文件的信息表示,拥有者具有读写权限,没有执行权限;所属组具有读权限,没有写和执行权限;other(其他人)具有读权限,没有写和执行权限。这九个字母中三三一组,顺序永远为rwx,并且结果只有两种,有或者没有,其中 - 就代表没有。
其实除了使用字符rwx表示文件的权限外,还有一种八进制数值表示法,即将九个字母分成三组后,每一组对应一个八进制数字。具体转换如下图所示。即如果该文件有读权限,就将二进制的第一位置为1。如果有写权限就将二进制的第二位置为1,如果有执行权限就将二进制的第三位置为1,如果没有这些权限就将对应的二进制位置为0。然后将该二进制转为八进制。
4、文件访问权限的相关设置
4.1 chmod指令
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
(1). R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式: 用户表示符 + - = 权限字符
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
权限操作符:
+:向权限范围增加权限代号所表示的权限。
-:向权限范围取消权限代号所表示的权限。
=:向权限范围赋予权限代号所表示的权限。
举例:
使用字符表示法修改权限。
root用户的权限是最大的,就算没有对文件的读写执行权限,也可以对文件进行读写执行。
所谓的权限是限制普通用户,root一直有权限,root不受权限约束。root还可以更改文件的拥有者、所属组、other访问者的权限
使用八进制表示法修改权限。
4.2 chown指令
上面我们使用了chmod指令来修改拥有者、所属组、other(其他人)对文件的一些权限,而chown指令是修改文件的拥有者的,即将该文件的拥有者改为另一个用户。
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归修改文件或目录的所属组
举例:
如果一个普通用户user1将他拥有的myfile.txt文件给另一个普通用户user2时,这个过程是无法完成的,此时需要切换到root用户下,然后才有权限将myfile.txt文件的拥有者从user1改为user2。
4.3 chgrp指令
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
举例:
普通用户user1虽然不能将文件的拥有者修改,但是如果该文件的拥有者为user1,但是所属组为user2,则此时user1可以将该文件的所属组改为user1。但是如果该文件的所属组为user1后,user1就没有权限再将该文件的所属组改为user2了。
4.4 总结
权限只会认定一次,哪怕一个用户即是拥有者,又是所属组,但是判断了拥有者的权限后,不会再判断所属组的权限。
进入一个目录,需要该目录的执行权限 – x。
查看目录下的文件列表需要该目录的读权限 – r。
在目录下创建、删除或者移动文件需要该目录的写权限 – w。