目录
shell命令以及运行原理
将使用者的命令翻译给核心( kernel )处理。同时,将核心的处理结果翻译给使用者。
Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash
Linux权限的概念
用户之间的相互切换
语法: su 用户名
功能: 用户切换
- 从普通账号切换为root账号时,可直接 su (即省略root)
- 切换用户后,若想切回上次的用户,可通过Ctrl+D实现
提升普通用户的权限
由于普通用户在使用某些操作会存在Permission denied(权限拒绝),因此我们就必须切换成root用户,有没有可以不切换root就可以执行操作呢?
下面我介绍一种提高普通用户权限的方法:
sudo + 需要操作的指令
一般只有root用户有权限来创建新用户,下面我们在普通用户下使用sudo来创建一个新用户
注:
sudo能扩大普通用户权限,因此为了避免权限的泛滥,Linux下存在信用列表sudoers文件(类似白名单),只有在sudoers文件里面才能使用sudo命令
普通用户添加到信任列表
普通用户想添加到信任列表,先要切换成root用户,再进行如下操作:
[root@VM-4-14-centos ~]# vim /etc/sudoers
使用vim进入sudoers在该文本最底行找到如下内容,并进行操作(vim操作后期会详细介绍)
普通用户添加到信任列表中,就可直接使用sudo了
[xb@VM-4-14-centos home]$ ls
lighthouse xb
[xb@VM-4-14-centos home]$ sudo adduser yc
[xb@VM-4-14-centos home]$ ls
lighthouse xb yc
Linux权限管理
文件访问者的分类(人)
- [ root && 普通用户 ]和[拥有者、所属组、other]的区别:[ root && 普通用户 ]是具体访问者,而 [拥有者、所属组、other]是一种角色或身份,[ root && 普通用户 ]都可能是其中的某一个或多个。
- 所属组的概念:在某一个公司中,可能会存在多个小组团队在同一个Linux服务器上进行着同一款项目的开发,而你就是A组当中的一员,为了使自己的代码能让自己团队内部的人员访问,而其余团队无法访问你的代码,就定义出所属组这一概念(即所属组内部成员可以访问自己小组内其他成员的文件)
- 除了文件拥有者和文件所属组之外的都叫other
文件类型和访问权限(事物属性)
文件类型
不同的字符代表不同的文件类型:
d :目录- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件
注:
在Linux当中,文件类型与文件后缀无关。
基本权限
rwx— 就是文件基本访问权限:
r 读 : Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限w 写 : Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限x 执行: execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限—: 表示不具有该项权限
文件权限值的表示方法
Linux表示 | 说明 |
---|---|
r - - | 仅可读 |
- w - | 仅可写 |
- - x | 仅可执行 |
r w - | 可读可写 |
r - x | 可读可执行 |
- w x | 可写可执行 |
r w x | 可读可写可执行 |
- - - | 无权限 |
权限符号(读写执行) | 二进制 | 八进制数值表示法 | 说明 |
---|---|---|---|
r - - | 100 | 4 | 仅可读 |
- w - | 010 | 2 | 仅可写 |
- - x | 001 | 1 | 仅可执行 |
r w - | 110 | 6 | 可读可写 |
r - x | 101 | 5 | 可读可执行 |
- w x | 011 | 3 | 可写可执行 |
r w x | 111 | 7 | 可读可写可执行 |
- - - | 000 | 0 | 无权限 |
文件访问权限的相关设置方法
一、修改文件属性
chmod
语法: chmod 选项 权限 文件名或目录名
功能: 设置文件的访问权限。
常用选项: -R 递归修改目录文件的权限。
格式一: 用户符号 +/-/= 权限字符
+:向权限范围增加权限代号所表示的权限。
-:向权限范围取消权限代号所表示的权限。
=:向权限范围赋予权限代号所表示的权限。
用户符号:
u:拥有者。
g:所属组。
o:other。
a:所有用户。
要同时设置不同类用户的访问权限,则需用逗号隔开。
二、修改"人"
chown
注:
修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。
chown指令可同时修改文件的拥有者和所属组,需拥有者和所属组的用户名用冒号隔开
chgrp
注:
修改文件的所属组也需要进行权限提升。
三、文件掩码
一般新建文件的默认权限=0666 (rw-rw-rw-)、新建目录的默认权限=0777(rwxrwxrwx)
[xb@VM-4-14-centos lesson6]$ umask
0002
注:
umask 权限值我们只关心后三位数,即002
目录的权限
可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中
可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容
可写权限:如果目录没有可写权限 , 则无法在目录中创建文件, 也无法在目录中删除文件
一个文件能否被删除与文件本身的属性无关,是与用户是否有该文件上一级目录的可写权限下面我们思考一个问题:当多个用户共享一个目录,需要在该目录下,进行读写,创建删除文件,怎样避免被别人删除自己的文件?
可能会有人说可以将这个共享目录的可写权限去掉,下面我们尝试一下
创建的共享目录:
drwxrwxrwx 4 root root 4096 Aug 19 16:31 myfile
去掉共享目录的可写权限:
drwxrwxr-x 4 root root 4096 Aug 19 16:31 myfile
结论:我们发现在一个共享目录中,去掉可写权限虽然其他用户无法对自己的文件进行删除,但同时自己也无法删除自己的文件和创建新文件,为了解决这个不合理的问题,Linux引入了粘滞位的概念。
粘滞位
用法: chmod + t 目录名
[root@VM-4-14-centos /]# chmod +t myfile/
[root@VM-4-14-centos /]# ll
total 1
drwxrwxrwt 4 root root 4096 Aug 19 16:31 myfile
因此在共享目录中加上粘滞位能提高用户之间文件的保护。