Linux __命令和权限
目录
一、几个指令
bc
uname -r 指令
重要的几个热键
二、Shell命令以及运行原理
为什么有外壳
外壳是如何工作的
什么是操作系统,为什么要有操作系统
三、文件类型
1、Linux的文件类型
2、文件类型
四、用户
用户问题和切换问题
增加普通用户
root -> 普通用户
普通用户 -> root
权限提高(提权)
添加白名单
五、权限的的理论解释
文件属性(权限属性)
权限的修改
文件权限属性
编辑
修改身份
六、目录的权限
粘滞位
七、权限大总结
一、几个指令
bc
语法:bc
功能:计算器
退出可使用ctrl+c(如果命令行卡住都可以使用)
uname -r 指令
语法:uname[选项]
功能:uname用来获取linux主机所用的操作系统的版本、硬件的名称等基本信息 可显示linux主机所用的操作系统的版本、硬件的名称等基本信息
常见选项:
-a或者-all详细输出所用信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
重要的几个热键
tab--具有命令 -- 具有命令补齐和档案补齐的功能
ctrl-c按键--让当前的程序停掉
ctrl-d按键-- 通常代表着:键盘输入结束的意思,另外,他也可以用来取代exit
ctrl -r按键-- 对历史命令进行搜索
!命令字符 :执行历史命令
关机
语法:shutdown
常见选项:
-h:将系统的服务停掉后,立即关机
-r:在系统的服务停掉之后就重新启动
-t sec: -t 后面加秒数,亦即过几秒后关机
histroy :展现最多一千多条历史
二、Shell命令以及运行原理
Linux严格意义上来说是一个操作系统,我们称之为核心,但我们一般用户,不能直接使用他.而是通过他的外壳程序,也就是所谓的shell,来和他沟通。
从技术角度,Shell的简单定义:命令行解释器主要包含:
- 将使用者的命令翻译给核心处理
- 同时,将核心的处理结果翻译给使用者
对比windows GUL ,我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入C盘,我们通常是双击D盘盘符,或者运行起来一个应用程序)。
Shell对于Linux,有相同的作用,主要是对我们指令进行解析给Linux,反馈结果通过内核运行出结果,通过shell解析给用户
为什么有外壳
1、可以保护操作系统
2、方便用户操作,减少用户使用操作系统的使用成本
外壳是如何工作的
使用shell的子进程来进行
什么是操作系统,为什么要有操作系统
是什么:由上图可知操作系统是一款进行软硬资源管理的软件
为什么:对下做好软硬件的管理工作(手段)
操作系统要给用户提供一个良好的运行环境(目的)
什么是良好:稳定 高效 安全
三、文件类型
1、Linux的文件类型
windows区分文件类型,是用文件名后缀区分的,Linux区分文件类型,是用文件的属性列区分的
但是虽然Linux不以文件后缀区分文件类型,但并不代表用户或者用户使用的工具不可以使用后缀
2、文件类型
d: 文件夹
-:普通文件(源代码 文本文件 可执行程序 音文件)
l: 软链接(类似Windows的快捷方式)
b: 块设备文件(例如硬盘 光驱)
p:管道文件
c:字符设备文件(例如屏幕等串口设备,显示器和键盘 :不支持随机读取,按照字符为单位)
s:套接口文件
四、用户
root: Linux管理员(只有一个)
普通用户: 可以有多个
用户问题和切换问题
增加普通用户
adduser 用户名 //增加用户
password 用户名 //设置密码
userdel -r 用户名 //删除
注意:密码不回显,会有再一次确定密码,二者不相同会重新输入密码
root -> 普通用户
su 用户名(因为是管理员不需要输入密码)
普通用户 -> root
su root (输入root密码)
但是在一些系统中 su root 是在家目录中如:/home/c su -root是在管理员目录中:/root
普通用户 -> 普通用户
su 普通用户(输入普通用户的密码)
权限提高(提权)
指令的前面加上sudo 在输入普通用户的密码(使用这项命令的前提是root将该普通用户添加到白名单)
添加白名单
白名单:etc/sudoers
添加:可以使用nano(记事本打开sudoers,添加用户)
打开后一直往下翻一直到上图绿标的位置将普通用户名加上就完成了提权
五、权限的的理论解释
权限 = 人 + 事物属性 而Linux下一切皆文件 所以文件 = 用户 + 文件属性(权限属性)
文件属性(权限属性)
r w x(可执行程序,但是一个可执行文件 = 可执行权限 + 本身能执行,x仅仅提供一个可执行权限和 能执行时两回事)
当我们观察一个文件的详细属性
根据我们上面所说的认识到
我们可以观察到第一个字母之后 有九个字母(分别都是 r w x 或者是-) 它是linux的角色分别所对应的权限分别为:拥有者(创建这个文件的用户)所属组(拥有者所在组的用户)other其他
上图红色框内就分别对应他们的拥有者和所属组
我们可以得出结论 :人 = 角色 + 真实的你(例如如果你是校长,所有人都很尊重你,但其实他们尊重的是校长这一个角色,权限约束的永远是角色)所以 权限 = 角色 +文件权限属性(我们对于权限的操作也会从这两个方面入手)
权限的修改
文件权限属性
chmod
功能:设置文件的访问权限
格式: chmod[参数]权限 文件
常见选项:
R -> 递归修改目录文件的权限
说明:只用文件的拥有者和root才可以改变文件的属性
chmod命令权限值的格式:
用户表示符+/-=权限字符
+:向权限范围增加权限代号所表达的权限
-: 向权限范围取消权限代号所表达的权限
= :向权限范围赋予权限代号所表示的权限
用户符号:
u: 拥有者
g: 所属组
o: 其他用户
a: 所有用户
示例:
多人用,隔开
方法二:使用八进制
ps: root 可以无视所有的限制(即使将他的权限给全部限制他还是可以r w x)
身份匹配,只会从拥有者,所属组,other的顺序,匹配成功一次(如果一个文件他的拥有组 和所属组是一个人的话,那么他的身份是拥有者)
修改身份
chown
功能:修改文件的拥有者
格式:chown[参数] 用户名 文件名
ps:因为我们修改拥有者一般需要征求别人的统一,所以需要在命令之前加一个sudo来提权
chgrp
功能:修改文件或目录的所属组
格式:chgrp[参数] 用户组名 文件名
常用选项 :-R 递归修改文件或目录的所属组
实例:
更简单的方法 sudo chown 用户名:用户名 文件名(可以将所属组和拥有者全部改掉)
六、目录的权限
可执行程序x:如果目录中没有可执行权限,则无法cd到目录中
可读权限r: 如果目录没有可读权限,则无法用ls等命令查看目录的文件内容
可写权限w: 如果目录没有可写权限,则无法再目录中创建文件,也无法在目录中删除文件(但是我们可以修改目录中文件的属性)
所以Linux的文件或者目录属性默认
普通文件:起始权限:666
目录文件: 起始权限:777
但是我们可以看到当我们创建的时候和上面的是不一样的那是因为我们每一个设备上是有(权限掩码)umask 最终权限 = 起始权限 去掉(起始权限&(~umask))umask
我们只需要看后三位,通过改掩码可以验证
文件的删除
我们可以观察到root创建的文件 m.txt对other的权限是只读,所以我们不可以向m.txt进行写入等操作,但是我们可以将m.txt删除 那是因为对文件进行删除是目录w的工作,那么如果我们希望该目录下的文件只能拥有者和root删除该怎么办呢——粘滞位
粘滞位
当一个目录被设置为粘滞位(chmod + t)则该目录下的文件只能由
1.超级管理员删除
2.该目录的拥有者
3.该文件的拥有者
举例:
七、权限大总结
目录的可执行权限是表示你可否在目录下执行命令
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使这个目录仍然有-r读权限(这个地方容易犯错)
而如果目录有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读的权限 即可以执行ls命令,但是没有权限读出目录下的文档。