引言
Linux操作系统是一个多用户的操作系统,可以同时存在多个用户去访问我们的设备;在同一台Linux设备下,当我们不希望我们的文件被其它用户访问时,我们可以为其设置相应的权限~
Shell外壳程序及其运行原理
在开始介绍今天的内容之前,我们先一起来思考一个问题:
作为用户的我们,在访问操作系统(Linux)时是怎样的一个过程呢?是直接访问?为什么呢?
是什么:在我们访问操作系统时,我们并不是直接地与操作系统层面进行访问和交互;而是通过shell外壳程序(如..图形化界面 && 指令操作),间接地访问操作系统。
为什么:作为用户的我们,因为缺乏专业性,从而不善于直接与操作系统“打交道”;而且如果让用户直接访问操作系统,操作成本特别高,且容易出错!
这就好比(为什么银行需要提供专门的柜台服务):
- 银行需要有专门的柜台服务员,来为办理相关业务的用户提供服务,而不是让用户直接访问银行内部的系统,去自主办理其所需的相关业务;
- 其次,如果让用户通过直接访问银行内部系统的方式,来进行业务办理,那么用户需提前对银行业务系统的操作进行学习和熟练掌握,操作成本极高!
- 其每个用户对系统掌握的熟练程度不一,从而出错率极高!
所以,操作系统的设计者,是不会让用户直接去访问操作系统的!
shell外壳程序的意义
- 是用户和操作系统交互的中间软件层。
- 可以在一定程度上,起到保护操作系统的作用。
shell外壳程序的运行原理
- 将使用者的命令翻译给操作系统核心(kernel)处理。
- 同时,将核心的处理结果翻译给使用者。
另外,我们经常见到的bash就是shell程序的其中一种。
Linux权限相关概念
学习完了shell外壳程序,我们正式开始今天的内容~
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户(root):可以在Linux操作系统下做任何事情,不受任何的限制。
- 普通用户:在Linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“¥”。
命令:su[用户名]
功能:切换用户
举例:
- root用户切换到普通用户,使用 su user
- 从普通用户切换到root用户,使用 su root
Linux权限管理
1. 文件访问者的分类(人)
- 文件或文件目录的自身所有者(onwer)
- 文件或文件目录的所有者所在分组的用户(group),即与文件或文件目录所有者同在一个组织当中
- 与该文件或文件目录无关的其它用户(other)
2. 文件类型和访问权限(事物属性)
a)Linux中文件类型的表示
- d :文件
- - :不同文件
- l : 软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
b)基本权限
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件的权限
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,据有进入目录的权限
- “—”:表示不具有该项权限
3. 文件权限值的表示方法
a)字符表示法
Linux表示 |
说明 | Linux表示 | 说明 |
r-- | 只读 | -w- | 仅可写 |
--x | 仅可执行 | rw- |
可读可写 |
-wx | 可写和可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | --- | 无权限 |
b)8进制数值表示法
权限符号(读写执行) | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
4. 文件访问权限的相关设置方法
a)chmod
功能:设置文件的访问权限
格式:chmod[参数] 权限 文件名
常用选项:
- R-> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
①用户表示符+/-/= 权限字符
- + : 向权限范围增加权限代号所表示的权限
- - : 向权限范围取消权限代号所表示的权限
- = : 向权限范围赋予权限代号所表示的权限
- u : 拥有者
- g : 拥有者同组用户
- o : 其它用户
- a : 所有用户
实例:
# chmod u+w /home/abd.txt
# chmod o-x /home/abc.txt
# chmod 664 /home/abc.txt# chmod 640 /home/abc.txt
b)chown
功能:修改文件的拥有者
格式:chown[参数] 用户名 文件名
实例:
# chown user1 f1
# chown -R user1 filegroup1
c)chgrp
功能:修改文件或目录的所属组
格式:chgrp[参数] 用户组名 文件名
常用选项:
- -R 递归修改文件或目录的所属组
d) umask
功能:
- 查看或修改文件掩码
- 新建文件夹默认权限 = 0666
- 新建目录默认权限=0777
- 但实际上,我们所创建的文件或目录,看到的权限往往不是上面这两个数值。原因是创建的文件或目录还要受到umask的影响;假设默认权限是mask,则实际创建出来的文件或目录的权限是: mask & ~umask (umask按位反操作之后,再和mask进行按位与操作)
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生创建文件时的预设权限。超级用户的默认掩码值为0022,普通用户的默认权限掩码值为0002.
# umask 755
# umask //查看
#umask 044 //设置
5. file指令
功能说明:辨识文件类型。
语法:file[选项]文件或目录
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容
使用sudo分配权限
(1)修改/etc/sudoers文件分配文件
# chmod 740 /etc/sudoers
# vim /ect/sudoer
格式:接受权限的用户登录的主机 = (执行命令的用户) 命令
(2)使用sudo调用授权的命令
$ sudo -u 用户名 命令
实例:
$ sudo -u root /usr/sbin/useradd u2