行文结构如下:
- 用户和用户组
- Linux文件权限概念
- Linux目录配置
- 重点回顾
1、用户与用户组
Linux是个多用户、多任务的系统,可能有多人同时使用这台机器进行工作,为了考虑每个人的隐私和工作环境,“文件所有者”角色既用户角色显得相当重要。另外,如果有2个组同时在一台机器上开发,但是这2个组有竞争关系。需要相互隔离对方,杜绝访问自己的资源,但是自己组成员可以访问本组资源。这就引出了用户与用户组的概念。
在Linux系统中,每一个文件都有用户(User)、用户组(Group)、其他人(Others)3中个别权限。当然,从角色角度来看,还有一个终极Boss,那就是root,Root权限可以去系统中任意想去的地方。所以在使用root操作时,要小心误操作。
Linux系统中账号都记录在/etc/passwd文件内,个人密码记录在/etc/shadow,组名记录在/etc/group内,不要随便删除这3个文件。
2、Linux文件权限概念
2.1、Linux文件属性
文件属性表示该文件的类型,是否可读、可写、可执行。比如下图:
是Linux根目录下的文件
dr-xr-xr-x. 24 root root 4096 Sep 22 16:06 .
dr-xr-xr-x. 24 root root 4096 Sep 22 16:06 ..
-rw-r--r-- 1 root root 0 Sep 11 12:53 .autofsck
-rw-r--r-- 1 root root 0 Nov 9 2016 .autorelabel
dr-xr-xr-x. 2 root root 4096 Nov 9 2016 bin
dr-xr-xr-x. 4 root root 4096 Nov 10 2016 boot
drwxr-xr-x 2 root root 4096 Nov 9 2016 data
上面的前十位表示该文件的权限内容,第一个[d]表示这是一个目录,[-]表示这是一个文件,后面的三个三个一组,从左到右分别表示用户的权限,用户组的权限,其他人的权限。[r]表示可读,[w]表示可写,[x]表示可执行,[-]表示此项权限不存在。
紧接着的数字表示连接数,之后的root,root表示文件所属的用户和文件所属的用户组的名称。之后的数字表示这个文件的大小。再后面是文件的最后修改时间,最后是文件的名称。
TIPS:
如果文件前面有.,代表这个文件为隐藏文件
如果目录的[x]为空,表示只可访问到该目录,不能进入到目录中访问其子文件
2.2、如何改变文件属性与权限
chgrp:改变文件所属用户组
chown:改变文件所有者
chmod:改变文件权限
使用chgrp和chown的后,temp文件的用户和用户组从root,root变成了bin,users。
另外在[cp]命令复制文件的时候,也会相应复制其用户和用户权限
cp的命令格式为:
cp 源文件 目标文件
接上面图片,改变temp目录的文件权限
发现,修改temp文件的权限为:用户可读可写可执行(4+2+1),用户组可读可写(4+2),其他人可读可写(4+2)
TIPS:
目录权限:
系统有user用户,该用户不支持root用户组,则user用户可以查询此目录下的文件列表,但是没有x权限,所以user用户不能切换到此目录内部。
2.3 、Linux文件种类和扩展名
文件种类:
普通文件分为:二进制文件、纯文本文件、数据格式文件;
目录:在Linux中,一切皆文件,目录也不例外;
连接文件:类似于Windows中的快捷方式文件;
设备与设备文件:分为Block块设备文件、character字符设备文件,通常在/dev目录下;
套接字文件:网络传输数据的文件;
管道文件:FIFO文件,用于解决多个程序同时访问一个文件所造成的错误问题。
3、Linux目录配置
3.1、Linux目录配置标准:FHS(FileSystem Hierarchy Standard)
我理解:主要是定义一套标准,让不同用户在使用时,按照这套标准新建,删除,放置目录和文件等操作,而不是随意新建,删除,放置文件和目录,造成系统混乱的局面。
其中所有文件的根文件时"/",任何其他文件都是在它基础上挂载的,下面介绍下部分文件名称及其作用:
/:根目录,与开机、还原、系统修复有关,FHS标准要求:/所在的分区应该越小越好,且应用程序安装的软件最好不要和根目录放在你同一个分区,保持根目录越小越好。
/bin:这个文件下存放的是一些系统常用命令,如cat,ls,chmod,data,mkdir,MV,cp等。
/boot:这个目录主要放置开机时会使用到的文件,包括内核文件和开机的配置文件等
/dev:任何设备和设备接口都是以文件形式存在这个目录中的。
/etc:系统的主要的配置文件都放在这个文件中,比如人员的账号,密码。各种服务的起始文件等。
/home:系统默认的用户主文件夹,在你创建一个一般用户账号时,默认的用户主文件夹都会规范到这里来。文件夹中有两种代号:~:代表目前用户的主文件夹,~dmtsai:代表dmtsai的主文件夹。
/lib:系统加载所需要的函数库都在这个目录下了。
/opt:这是给第三方软件放置的目录【我本来以为第三方软件指的是jdk,tomcat这种,后来查看这个目录下没有,感觉这个是针对系统的第三方软件,比如像桌面程序?大概jdk,tomcat这种是叫应用软件吧?有大神知道,
还请指导下】
/usr:usr目录不是user的简称!!!而是UNIX Software Resource的简称,也就是UNIX操作系统软件资源所放置的目录,并不是用户的数据。类似于Windows下的C:/Windows和C:/Program Files两个目录的综合体,
我们安装的jdk和tomcat等应用软件,就是安装在/usr/local下。
/var:如果说/usr是在软件安装的过程中占用硬盘容量的话,那么/var就是在系统运行后逐渐占用硬盘用量的,其里面是针对常态性变动的文件,比如缓存,登录文件以及运行时产生的文件。
3.2、目录树(directory tree)
3.3、绝对路径和相对路径
绝对路径:由根目录/开始写起的文件名活目录名称,例如:/home/temp
相对路径:相对于目前路径的文件名写法。例如“./home/dmstai”,反正开头不是/就是相对路径的写法。
所以当你cd ..的时候,就是相对于当前目录的上一级目录,而如果现在由 /home/helloworld和/home/20170920temp这两个目录,通过cd ../helloworld/就可以进入到同级目录下的helloworld下。这就是相对路劲
同样 ./run.sh 表示执行当前目录下的run.sh的脚本。
4、重点回顾:
- Linux下权限依次分用户、用户组、其他人三种身份。
- ls -al 显示所有文件的详细信息,包括:10位长度的权限,文件连接数,文件容量,文件最后修改日期,文件名。
- 如果文件名前多一个".",代表这个文件时隐藏文件
- 对文件来说,权限分为:r:可读,w:可写,x:可执行文件(类似windows的exe),
- 对目录来说,权限分为:r:可读目录中的内容,w:可修改目录中的内容,x:可访问这个目录,但是不能访问目录内的内容
- FHS定义的三层主目录为:/,/usr, /var