目录
1 shell命令以及运行原理
1.1 理解
1.2 意义
2 Linux权限的概念
2.1 概念
2.2 用户分类
2.3 Linux文件属性
2.4 Linux文件权限
2.4.1 文件访问者的分类(人)
2.4.2 root&&普通用户 vs 拥有者&&所属组&&other
2.4.3 文件类型和访问权限(事物属性)
2.4.4 图解
2.4.5 描述一个文件的权限
3 文件访问权限的相关设置方法
3.1 chmod指令
3.1.1 功能
3.1.2 格式
3.1.3 常用选项
3.1.4 命令权限的格式
3.2 有vs没有权限
3.3 sudo
3.4 chown
3.4.1 功能
3.4.2 格式
3.5 chgrp
3.5.1 功能
3.5.2 格式
3.5.3 常用选项
3.6 file指令:
3.6.1 功能说明
3.6.2 语法
3.6.3 常用选项:
4 目录的权限
5 默认权限
6 粘滞位
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义: 命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。对比windows GUI,我们操作windows 不是直接操作windows内核 ,而是 通过图形接口 ,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。shell 对于Linux,有相同的作用,主要是对我们的指令进行解析, 解析指令给Linux内核 。反馈结果在通过内核运行出结果, 通过shell解析给用户 。帮助理解:如果说你想找对象,那 shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的对象。你看上了别人,但是有不好意思直接表白,那就让你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给别人,而我们找到媒婆姓王,所以我们叫它 王婆,它对应我们常使用的bash 。shell是外壳程序的统称,bash是centos 7的外壳程序当心动的对象思考媒婆的话的时候,相当于执行用户所给的指令,并将结果反馈给王婆,王婆再反馈给你(用户),( 帮助进行命令行传递和返回结果); 如果心动对象心悦李四,而不是你,王婆一看缘分太浅,这红线不能牵,只能回绝你的非法请求,从而也保护了心动的对象,( 保护操作系统);王婆觉得说媒的老招牌不能倒,但是这种不能完成的煤约请求次数多了,会坏了她的招牌,所以王婆招聘了一批实习生帮她解决这种指令,这样不会坏了她自己的口碑,(执行命令的时候,创建子进程来进行执行)
1. 帮助进行命令行传递和返回结果
2. 保护操作系统
限制人的,访问的对象天然可能没有这种“属性”权限:一件事情是否运行被谁“做”
权限=人+事物属性
Linux 下有两种用户:超级用户( root )、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
文件可以有的属性是:读、写、执行
文件和文件目录的 所有者 :u---User(中国平民 法律问题)文件和文件目录的 所有者所在的组 的用户:g---group(不多说)其它用户 :o---Others (外国人)帮助理解:某家公司允许多组做同样的事情,现有A组B组两组,组长分别为小A小B,张三通过校招进了A组,李四在B组,A组代码提交到A_code,B组代码提交到B_code,张三写了一份文件,提交到A_code,张三就是这份文件的所有者,(若此时没有所属组),那么组长小A对于张三写的文件来说就是other,如果开了other的权限,那么组长小A与李四都能看到,而李四于张三是竞争关系,所以引入所属组的概念,将想给看的人拉一个组,对这个组开权限(也可以类比朋友圈的权限仅部分人可见中选择了某个标签的好友,例如:同学,家人)
root&&普通用户 可能是某某文件的拥有者、other,所属某组
人可以是某某角色
- 文件类型
d :文件夹- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件
描述一个文件的权限:人+事物属性
拥有者是某某,所属组有某某,other包括某某某
拥有者有某某权限,所属组有某某权限,other有某某权限
权限=人+事物属性
所以从人or事物属性下手
设置文件的访问权限
chmod [参数] 权限 文件名
R -> 递归修改目录文件的权限说明: 只有文件的拥有者和root才可以改变文件的权限可以先whoami看看用户是否是拥有者或者root[root@VM-12-17-centos lesson3]# whoami root
① 用户表示符+/-=权限字符+:向权限范围增加权限代号所表示的权限-:向权限范围取消权限代号所表示的权限=:向权限范围赋予权限代号所表示的权限用户符号:u:拥有者g:拥有者同组用o:其它用户a:所有用户②三位8进制数字
例如:
- chmod u-r test.txt 关闭拥有者的写权限
[root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rw-r--r-- 1 root root 93 Jan 6 10:18 test.c [root@VM-12-17-centos lesson3]# chmod u-r test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt --w-r--r-- 1 root root 93 Jan 6 10:18 test.c
- chmod g+w test.c 所属组增加可写权限
[root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rw-r--r-- 1 root root 93 Jan 6 10:18 test.c [root@VM-12-17-centos lesson3]# chmod g+w test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rw-rw-r-- 1 root root 93 Jan 6 10:18 test.c
- chomd g+wx test.txt给所属组增加可写可执行的权限
[root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rw-rw-r-- 1 root root 93 Jan 6 10:18 test.c [root@VM-12-17-centos lesson3]# chmod g+rx test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rw-rwxr-- 1 root root 93 Jan 6 10:18 test.c
- chmod u+x,g+r,o+x test.c
[root@VM-12-17-centos lesson3]# chmod u+x,g+r,o+x test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rwxrwxr-x 1 root root 93 Jan 6 10:18 test.c
- chmod u-rwx,g-rwx,o-rwx test.c
[root@VM-12-17-centos lesson3]# chmod u-rwx,g-rwx,o-rwx test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt ---------- 1 root root 93 Jan 6 10:18 test.c
- chmod a+x test.c给所有的用户都增加可执行的权限
[root@VM-12-17-centos lesson3]# chmod a+x test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt ---x--x--x 1 root root 93 Jan 6 10:18 test.c
- chmod 777 test.c (777----111 111 111)
[root@VM-12-17-centos lesson3]# chmod 777 test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt -rwxrwxrwx 1 root root 93 Jan 6 10:18 test.c
- chmod 000 test.c (000----000 000 000)
[root@VM-12-17-centos lesson3]# chmod 000 test.c [root@VM-12-17-centos lesson3]# ll total 36 -rwxr-xr-x 1 root root 8408 Jan 6 10:18 a.out drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 51 Jan 6 15:19 my.txt ---------- 1 root root 93 Jan 6 10:18 test.c
[xy@VM-12-17-centos ~]$ ll total 0 ---------- 1 xy xy 0 Jan 8 12:13 test.txt [xy@VM-12-17-centos ~]$ cat test.txt cat: test.txt: Permission denied [xy@VM-12-17-centos ~]$ whoami xy [xy@VM-12-17-centos ~]$ echo "hello world" >> test.txt bash: test.txt: Permission denied
[xy@VM-12-17-centos ~]$ su Password: [root@VM-12-17-centos xy]# ll total 0 ---------- 1 xy xy 0 Jan 8 12:13 test.txt [root@VM-12-17-centos xy]# whoami root [root@VM-12-17-centos xy]# cat test.txt #include
int main() { printf("hello world\n"); return 0; }
sudo touch test.txt
以root的身份创建test.txt
修改文件的拥有者
chown [参数] 用户名 文件名
修改文件或目录的所属组
chgrp [ 参数 ] 用户组名 文件名
-R 递归修改文件或目录的所属组
辨识文件类型。
file [选项] 文件或目录...
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。-z 尝试去解读压缩文件的内容
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容(文件名+文件属性).
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
于是, 问题来了~~换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉 ?
我使用的系统,创建普通文件(不包括可执行文件)默认权限是644 目录默认权限是755,不同操作系统,默认权限可能不同[root@VM-12-17-centos lesson3]# touch new_dir [root@VM-12-17-centos lesson3]# ll total 32 drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 115 Jan 6 21:38 my.txt -rw-r--r-- 1 root root 0 Jan 9 00:31 new_dir -rw-r--r-- 1 root root 6 Jan 8 21:27 normal.txt -rw-r--r-- 1 root root 59 Jan 8 21:28 test.c -rw-r--r-- 1 root root 72 Jan 8 02:32 test.txt [root@VM-12-17-centos lesson3]# rm new_dir rm: remove regular empty file ‘new_dir’? y [root@VM-12-17-centos lesson3]# mkdir new_dir [root@VM-12-17-centos lesson3]# ll total 36 drwxr-xr-x 3 root root 4096 Jan 6 15:57 dir -rw-r--r-- 1 root root 9901 Jan 6 10:33 mylog.txt -rw-r--r-- 1 root root 115 Jan 6 21:38 my.txt drwxr-xr-x 2 root root 4096 Jan 9 00:31 new_dir -rw-r--r-- 1 root root 6 Jan 8 21:27 normal.txt -rw-r--r-- 1 root root 59 Jan 8 21:28 test.c -rw-r--r-- 1 root root 72 Jan 8 02:32 test.txt