分享:人生三件事:自己的事,别人的事,老天的事。
shell外壳/命令行解释器
- 为什么?
用户通过shell外壳程序/图形化界面的方式与操作系统进行交互,用户不能直接访问操作系统,为什么?–>操作系统不容易被普通用户使用,会有安全问题。
- 是什么?
核心工作:用户与内核之间交互,需求指令<=shell=>执行结果
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者
- 怎么办?
shell—本质是一个执行起来的程序(进程)系统启动期间,一直存在
如果用户发出的指令有风险(用户自定义的指令)—shell都是通过创建子进程去执行有风险的指令。shell 是所有外壳程序的统称,还有bash、sh、等命令行解释器。
每次通过xshell登录时,OS都要给你这个当前用户,新启动一个shell / bash 每一个用户都有一个。
su/sudo
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
普通用户切换到root用户需要root密码。
root用户切换普通用户不需要密码。
普通用户切换到另一普通用户需要另一普通用户密码。
sudo
通常用途:指令提权(将普通用户权限提高到root用户权限)
sudo [指令]
sudo -u centos 切换身份
-V 显示版本信息等配置信息
-u user 默认为root
-l 列出当前用户可以使用的所有sudo命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 认证信息失效,清除时间戳(1970-01-01),下次需要重新输密码
-b 在后台执行指令
3.文件访问者的分类
文件权限一定是限制人的!!
文件和文件目录的所有者:u—User(中国平民 法律问题)
文件和文件目录的所有者所在的组的用户:g—Group(不多说)
其它用户:o—Others (外国人)
4.文件类型和访问权限(事物属性)
5.修改文件属性
chmod指令
语法:chmod [who] [+ | - | =] [mode] 文件名
5.1文字修改方案
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
5.2八进制修改方案
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
语法:chmod [mode] 文件名
需要sudo 在root权限权限下
例如:取消所有权限
chmod 421 file.txt
解释:421代表:八进制421即二进制:100 010 001(文件所有者可读可写可执行 所属组可写 其他人可执行)
5.3修改文件拥有者或所属组
chmon命令(将问文件给别人)需要sudo 在root权限权限下
语法:chmon [用户] [文件]
解释:用户:文件修改后的所属用户名或所属组
例如:
chmon jz file.txt
解释:将 file.txt 文件的所属用户改为 jz 用户
例如:
chmon jz:jz file.txt
解释:将 file.txt 文件的所属用户改为 jz用户 并将所属组改为 jz 用户
5.4文件可执行的必要条件
- 必须具有可执行权限x
- 必须是可执行程序
修改权限时,权限的角色只会匹配一次
例如:
当文件的所有者和所属组都是 jz 用户时,但该文件没有所有者的w权限,所属组有w权限,当 jz 用户对该文件进行修改时,不能修改,因为该文件的所有者没有w权限,那 jz 也在所属组呀所属组有w权限呀?为什么不能修改呢?
因为:在对文件进行修改时要先匹配文件角色(即是user /group/ other)在看有没有对应的权限,再修改,而问文件在匹配角色时只会匹配一次。所以不能修改。
root下几乎无权限
文件类型
Linux文件类型不通过后缀区分,(不代表Linux不用后缀)
对于文件后缀的态度:虽然Linux不通过文件后缀区分文件的类型,但是依旧推荐使用,
1.一些工具需要,gcc等等
2.人需要,通过后缀来辨别文件类型
5.5文件类型的分类:
Linux下一切皆文件
- -:普通文件:文本、源代码、图片、视频 、库、等等
- d: 目录文件(directory 意思是目录)
- b:(block)块设备文件 通常支持随机访问
- c:(char)字符设备文件
- l:链接文件(类似于Windows中的快捷方式)
- p: 管道文件
- s: socke 文件
可以通用file 命令来查看文件类型:例如 查看test.c文件类型:
file test.c file [文件名]
常见的权限的三个问题?
1.对于一个目录而言,要进入一个目录需要什么权限呢?
- r决定了是否可以查看目录下的文件信息(文件属性列表) 如:ll ls -al等
- w决定是否可以在该目录下删除或新建文件或重名名文件
- x决定了是否可以进入这个目录
2.目录和普通文件创建时,默认权限
目录初始权限777,普通文件初始权限666
为什么创建普通文件时默认权限是664?
为什么创建目录文件时默认权限是775?
权限掩码:umask–作用:制定一个文件被创建时的默认权限
权限掩码:从起始权限中去掉umask中出现的权限
初始权限&(~umask) = 最终权限(默认)
3.粘滞位
一个文件能不能删,不取决于他本身 而取决于文件所处的目录下拥有者是具有W权限
如果我们需要在一个特定的目录下,实现文件共享呢??
为了实现文件让多个用户之间数据共享,tmp目录将other的RWX权限都开放,----->删除一个文件与这个文件无关---->做到了让其他人看到或者写—>但是我们防不住被别人删除这个文件。---->所以就有了粘滞位 -t:给共享目录中的other设置的一个权限位,具有X的意义,同时也进一步对目录权限进行特殊限定:该目录里面的文件,只有root用户或文件拥有者有权利进行删除!!!其他人一概不允许删除。
好啦,关于Linux中权限就先学到这里,如果对您有所帮助,欢迎一键三连,您的支持是我创作的最大动力!!!