目录
Shell的运行原理
用户切换
su - / su
sudo
权限
chmod
chown
chgrp
八进制方法修改文件属性
目录权限
粘滞位
umask
自定义默认权限
Shell的运行原理
广义上,Linux发行版 = Linux内核 + 外壳程序
Linux 从广义上来理解它是一个操作系统 而从狭义上来理解它则是一个核心 (kernel)
针对Linux这个核心 程序员或商业公司们制作出各种不同的发行版本 比如说 centos retcap ubuntu kail等等
所以说我们用户在操作的时候并不是直接操作Linux kernel 而是通过kernel的外壳程序来和kernel沟通
shell是什么?
shell的中文翻译是外壳 我们一般认为它是一个命令解释器 用来连接用户和 linux kernel
为什么要设置一个shell外壳而不让用户直接来和 linux kernel沟通呢?
用户不擅长直接和 Linux kernel进行沟通
shell作用:
传递请求指令,让OS执行命令保护 Linux kernelshell的原理是什么
shell的原理部分涉及进程相关知识 ps axj 显示进程
shell是对于所有外壳程序的统称 在centos中这个外壳程序是 bash 它是对于一个抽象概念的实例化
用户切换
Linux中,默认有两类用户 root :超级管理员,具有非常高的权限 普通用户:具有一般权限,需要受权限约束的
su - / su
su - 切换到 root 用户 su:切换的时候路径不变
创建新的Bash
root 可以 su - xxx 切换到任何用户(不建议)创建新Bash
quit / ctrl + d 可以从root 回退
sudo
临时权限提升,执行后续命令,以 root 身份执行
需要普通用户的密码,需要添加信任关系
权限
权限:一件事情是否允许被特定的人做
权限约束的是人,文件本身具有天然的权限属性:r + w + x
Linux中的用户类别:
拥有者 owner所属组 group其他 other
拥有者 / 所属组 / other : 指的是一种角色身份
root / 普通用户:指的是具体的一个人
第一列 标识文件类型
- : 普通文件 【文本 各种动静态库 可执行程序 源程序】d :目录文件c :字符设备文件 【键盘 显示器】b :块设备文件 【磁盘】p :管道文件 【通信】l :链接文件 【软链接】s :套接口文件
Linux下一切皆文件
gcc系统上层的命令 要求c文件要以.c结尾
是否具有读(r / -) 是否具有写(w / -) 是否具有可执行(x / -)
chmod
修改文件权限 (永久修改)
[wzy@VM-24-2-centos lesson2]$ chmod u+x file.txt
用户类别 | 权限 | 文件 | |
chmod | u(拥有者) | + - r w x | |
g(所属组) | |||
o(other) | |||
a(all) |
root几乎不受权限约束,root如果想修改执行文件,可以手动添加权限
chown
改文件拥有者
普通用户需要 sudo
root可以直接改
[wzy@VM-24-2-centos lesson2]$ sudo chown root file.txt
__:__
可以改拥有者和所属组
[wzy@VM-24-2-centos lesson2]$ sudo chown root:root file.txt
chgrp
改文件所属组
普通用户需要sudo
文件属于拥有者 所以 拥有者可以直接取回来 不用sudo
[wzy@VM-24-2-centos lesson2]$ sudo chgrp root file.txt
八进制方法修改文件属性
权限位置是确定的而且是两态的 可以用二进制表示 三个二进制可以用八进制表示
[wzy@VM-24-2-centos lesson2]$ chmod 777 file.txt
目录权限
r代表读目录下的内容 w代表创建文件 x 进入目录
没有x权限 有r权限 可以看文件名
粘滞位
如果目录本身对other具有w权限
other可以创建文件,也可以删别人的文件
需求:other可以在特定的目录下创建文件,并写入 但是不想让任何人删掉自己的文件
[wzy@VM-24-2-centos lesson2]$ sudo chmod o+t test
粘滞位 chmod o+t dir 只能对目录
对设置了粘滞位的目录,在该目录下,只能文件的拥有者(root,目录的所有者)可以删除,其他人不能删除
有时候,有很多人,或者系统会有很多的临时数据,所有的临时文件放在系统的 /tmp 需要所有的权限放开 但是只想文件的拥有者自己删除自己的文件
umask
权限掩码 凡是在umask中出现的 都应在起始权限中去掉
八进制 002
为什么系统中的文件,创建出来的默认权限,是看到的样子
默认权限:
普通文件,起始权限 666
目录文件,起始权限 777
110 110 110&~ 000 000 010---------------- 110 110 100 6 6 4
自定义默认权限
本次登陆有效