目录
- shell命令以及运行原理
- 用户管理
- 添加用户
- 删除用户
- sudo
- Linux权限的概念
- Linux权限管理
- 文件访问者的分类(人)
- 文件类型和访问权限(事物属性)
- 文件权限值的表示方法
- 文件访问权限的相关设置方法
- 目录的权限
- 粘滞位
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度:
Shell的最简单定义:命令行解释器 (command Interpreter) 主要包含:
- 将使用者的命令翻译给核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
总结:
也就是说我们输入的指令是通过shell这个命令行解释器与操作系统沟通的。而常看到的bash是shell的一种。
用户管理
首先要知道,我们购买的服务器后,得到的是一个root用户,该用户就像是规则的制定者,但其不受规则的约束,得到了root用户就得到了整个服务器。在实际使用中是不推荐使用root用户的,原因就是它不受权限的约束,可以肆意妄为,对整个服务器来说是十分危险的。
添加用户
Linux下有两种用户:超级用户(root)、普通用户。超级用户只有一个,而普通用户可以有很多。并且普通用户只能由超级用户root创建。
方法:
- adduser 用户名
- passwd 用户名
删除用户
- 删除时记得带-r选项
以上删除和添加用户都会在home目录下操作,无需指定目录或进入某一路径进行以上操作。
sudo
普通用户是有很多权限约束的,在一些情况下需要短暂使用root权限,这时候就可以使用sudo进行提权,即普通用户使用root的权限进行操作。
语法: sudo 指令
功能: 提升当前指令的权限
sudo配置方法:
文件路径:
vim /etc/sudoers
vim配置
Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 suroot(root可以省略,root只有一个),此时系统会提示输入root用户的口令。
- 选项 - :重新登陆。
Linux权限管理
文件访问者的分类(人)
- 文件和文件目录的所有者:u—User
- 文件和文件目录的所有者所在的组的用户:g—Group
- 其它用户:o—Others
文件类型和访问权限(事物属性)
文件的属性可以用ll指令查看,如下:
- 对于文件访问者而言,只列出了拥有者u,所属组g,其他用户o不进行显示,对于访问者而言不是前面两个u,g,就是其他用户o。
- 文件权限三三一组,分别为:u,g,o的权限。
文件类型:
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
基本权限:
- 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
- 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “-”表示不具有该项权限。
文件权限值的表示方法
字符表示:
Linux表示 | 说明 | Linux表示 | 说明 |
---|---|---|---|
r– | 只读 | -w- | 仅可写 |
–x | 仅可执行 | rw- | 可读可写 |
-wx | 可写和可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | — | 无权限 |
8进制数:
权限符号 | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
— | 0 | 000 |
文件访问权限的相关设置方法
chmod:
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- -R : 递归修改目录文件的权限
注意:只有文件的拥有者和root才可以改变文件的权限
格式:
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
将目录dir拥有者的权限rwx改为—
八进制格式:
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项: -R 递归修改目录文件的拥有者。
更改拥有者是需要使用使用sudo进行提权的;就像实际中别人给你东西,你是有拒绝的权力的,但提权后就是root权限,不接受也得接受。
chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
同样需要root权限。
umask
以下均为八进制表示
功能:查看或修改文件掩码
新建文件夹默认权限=0666 ,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
可以按自己要求设置新建文件,目录的权限;改动需谨慎,默认值为:0002。
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。(忽略第一个0,看后三位)
以普通用户为例:
目录的权限
可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中。
可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
按照以上说法就会发现一个问题:只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。
以上情况由于上面umask的原因一般不会出现,但是当多人需要一起协作时,就会出现以上场景。
如两个普通用户在同一台服务器中需要创建一个共享目录进行协作办公(也就是该目录对其他人o有rwx权限)。
在根目录/下建一个shared的目录作为共享目录,并把其o+w权限。
共享文件示例
这样看起来也太不合理了,既不是root权限,也不是文件的拥有者,还能直接删除该文件。所以为了解决这种情况,引入了粘滞位
从这里再次看出一个文件能否被删除取决于该文件所在目录对应访问者是否有w权限。
粘滞位
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员删除
- 该文件的所有者删除
- 该目录的所有者删除
- 目录被设置为"粘滞位"的其他权限中的x会变为t。
- 在根目录下是有系统默认的”共享文件“tmp。
- t是一种特殊的x。