目录
一、Linux简介
Linux是一个基于Unix的操作系统内核,由芬兰程序员Linus Torvalds于1991年开发。Linux内核是开源的,这意味着任何人都可以查看、修改和重新分发它。Linux操作系统则是由Linux内核与其他软件组件(如GNU工具和图形界面)组成的完整操作系统。
但Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统, 它包括GUI组件和许多其他实用工具。
二、shell命令和运行原理
shell外壳的核心工作 : 用户和内核之间,需求指令 <-shell-> 结果
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。(张三 --- 用户 王婆 --- shell外壳程序 / 图形化界面 如花 --- 操作系统)
shell ---本质:其实也是一个执行起来的程序(进程),系统启动期间,一直存在。
shell命令有风险吗? 用户自定义的指令---shell都是通过创建子进程的方式让子进程去执行有风险的指令。
Shell是一种计算机操作系统的命令行解释器,它提供了与操作系统内核进行交互的接口。通过Shell,用户可以输入命令并执行操作系统提供的功能和应用程序。
Shell可以理解为一个命令解释器,它接收用户输入的命令,并将其解析并转发给操作系统内核执行。它还提供了一些额外的功能,如变量、条件语句、循环等,使用户能够编写脚本来自动化任务和批量处理操作。 在Unix、Linux和类Unix系统中,常见的Shell有Bourne Shell(sh)、Bourne Again Shell(bash)、C Shell(csh)、Korn Shell(ksh)等。每种Shell都有自己的特点和语法,但它们都提供了基本的命令行操作和脚本编程功能。
对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。 换句话说,图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。 然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。 由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。你看,在用户和内核之间增加一层“代理”,既能简化用户的操作,又能保障内核的安全,何乐不为呢? 用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。 Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。
每次进行xshell登录时,操作系统(OS)都给你这个用户的当前登录,新启动一个shell或者bash。
如何一个系统内没有人登录,则没有shell,没有用户。则外壳程序不存在。
三、Linux用户切换
root 超级管理员
非root 普通用户。root只有一个,非root可以多个。
身份切换:root和非root密码尽量不一样
-
普通用户切换到root:
使用 su 或 su - 切换身份
su :用户身份切换root ,以此方式切换到root后pwd,路径仍是切换前的路径。(普通用户切换root,需要输入root密码。而root切换普通用户不需要。)
su - :以root身份重新登陆一次,由于此方式相当于重新登陆,则路径变为/root。
ctrl + d 或 exit 退出 。
-
root切换到其他:
su 名字:可以变成任何人,不需要密码。
ctrl + d 或 exit 退出。
-
普通用户切换到另一个普通用户:
su 名字 :需要输入对方的密码。
什么样的人,会具有root的密码? 一般都是管理员。
-
不把自己变成root,还想让我(普通用户)以root的权限执行一条命令。
sudo 指令 :对指定的指令进行提权(以root用户执行指令)。
若一个用户用户名在该配置文件中,才允许用户执行sudo。若一个用户用户名不在该配置文件中,则不允许这个用户执行sudo。
四、Linux权限管理
权限一定是限制人的。对应的操作对象,一定要有对应的满足人的需求的属性。
root账号几乎不被权限限制。
Linux下有两种用户:
超级用户:可以再linux系统下做任何事情,不受限制。
普通用户:在linux下做有限的事情。 注:超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
1、 文件访问者的分类
Linux群体(人)--- 更多的是角色(身份)
文件访问者的分析:
-
文件和文件目录的所有者: u---User
-
文件和文件目录的所有者所在组的用户:g ---Group
-
其他用户: o --- Others
Linux中是操作对象的属性。
2、文件类型和访问权限
文件权限属性上 --- r(读) w(写) x(执行)
访问文件时首先确认自己的权限,由前一次往后。只匹配权限一次,从前往后访问。若你是拥有者,则与拥有者权限的字母匹配,依次往后。
linux下一切都是文件。目录文件也是文件。
-: 代表普通文件,文本,源代码,图片,视频,库,可执行等。 d:目录文件 b:block,块设备文件—— 磁盘(允许随机访问被称为块设备) (查看磁盘:ll /dev/vda) c:char,字符设备文件(进行显示)—— 键盘、显示器(不支持随机访问, 按顺序访问)显示器通常以终端(xshell黑色的终端)的形式显示出来。(查看 :ll /dev) l:链接文件——类似快捷方式 p:管道文件—— s:socket文件——
linux的文件类型不通过后缀区分。(不代表Linux文件不用后缀,而是代表两者关系不大。) Linux中对于文件后缀的态度:虽然Linux不通过文件后缀识别文件类型,但是不推荐没有后缀。原因:1、工具使用 2、人需要
权限:拦住特定的人,不让他做特定的事。
读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 “—”:表示不具有该项权限
2.1 修改文件权限
文件权限属性的修改(这个文件的拥有者才能改权限):
chmod u-r 文件 :即给文件的拥有者减去读的权限
chmod u-x,g-w,o+w 文件 :即u减去读,g减去写,o加上执行
chmod u-rwx,g-rwx,o-rwx 文件:即此对此文件什么权限都没有
chmod a+r 文件: 即给u,g,o(a代表所有人)读的权限
chmod 777 文件: 等同于chmod a+rwx
2.2修改文件隶属者
chown 改变文件的拥有者
普通用户 :sudo chown 用户名 文件名 root用户:chown 用户名 文件名
chgrp 改变文件的所属组
普通用户 :sudo chgrp 用户名 文件名 root用户:chgrp 用户名 文件名
chown 改变文件的拥有者和所属组
chown 用户名:所属组 文件名
2.3 目录的权限
可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中。
可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
可写权限(w): 如果目录没有可写权限,,则无法在目录中创建文件, 也无法在目录中删除文件。
file 文件名 :可以查看文件类,辨识文件类型。
常见的权限三个问题:
1、对一个目录而言,进入他需要什么权限? 进入目录与读(r)写(w)权限无关 与可执行权限(x)有关。对一个目录没有读权限则无法查看次此文件的内容。 在目录权限中,读(r)权限决定了我们是否可以查看此文件。 在目录权限中,写(w)权限决定了我们是否可以在此目录中创建、删除内容、修改文件 。没有写权限可以改文件的属性, 不能创建文件,不能删除内容,不能修改内容、不能改名字。
root在目录权限000的情况下,可以对目录进行任何操作。即root不受权限控制。
2、权限最大时是777,为什么我们创建的普通文件默认权限是664,创建的目录文件是775?(起始权限:普通文件666 普通目录777) umask:权限掩码(定制一个文件被创建的时后的默认权限—)。umask指令可以查看默认掩码。 从起始权限中,去掉在umask中出现的权限。 因此,起始权限&(~umask) = 最终权限
目录拥有者的目录中一个文件是否可以被删除,并不取决于文件本身!!而取决于文件所处的目录,目录的拥有者是否具有w权限。就算文件是root的,且此时用户没有权限,也能删除。
3、如果大家需要在一个特定的文件内工作,实现数据的共享?
drwxrwxrwt. 8 root root 4096 Oct 24 19:17 tmp
权限t:粘滞位。即给目录(共享目录)中的other设置的一个权限位,既具有x的意义,同时也进一步对目录权限进行特殊限定: 该目录里面的文件,只有root或者文件的拥有者有权利删除,其他人都不允许。
当一个目录被设置为”粘滞位“时(chmod 用户+t),则该目录下的文件只能由:
超级管理员删除
该目录的拥有者删除
该文件的所有者删除
当多个用户在公共目录下文件共享时,使用粘滞位。
五、易错点
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。