Linux文件与目录管理
一、用户与用户组
1.文件拥有者 作为某文件拥有者时,你有设置该文件的适当的权限。
2.用户组概念 用户组是许多用户组成的群体,其作用是,有一个文件夹,当你对某个用户组设置了权限,那么该用户组查看此文件的时候,只能看到那个用户组所设置的权限
3.其他人的概念 跟用户组很像,但却不在用户组里面就称为其他人。
Linux用户身份与用户组记录的文件
在Linux系统中,默认情况下,所有系统上的账号与一般身份用户,还有root相关信息,都记录在/etc/passwd这个文件内,至于个人密码则记录在/etc/shadow这个文件内,此外Linux所有组名都记录在/etc/group中。这三个文件可以说是Linux系统里面账号、密码、用户组信息的集中地,不要随便删除这三个文件。
二、Linux文件权限概念
1.Linux文件属性
该图中每个文件都有7个字段
以第一个文件.来距离
dr-xr-x---. 代表文件类型权限
5 代表链接数(这个文件夹内有多少个文件)
第一个root 文件拥有者
第二个root 文件所属用户组
225 代表文件大小
后面就是文件最后修改时间,在后面就是文件名。
第一栏代表这个文件的类型与权限
第一个字符代表这个文件是目录、文件、或链接文件等(也就是文件类型)
d 代表目录
- 代表文件
l 代表链接文件(link file)
b 表示设备文件里面的可共存储的周边设备
c 表示设备文件里面的串行端口设备,例如键盘 鼠标
接下来的字符中,以三个为一组,且均为rwx的组合,r代表可读,w代表可写,x代表可执行,位置不会边,没有则出现-号
第一组为文件拥有者的权限
第二组为加入此用户组之账号的权限
第三组是其他人权限
第二栏表示有多少文件名链接到此节点
每个文件都会将它的权限与属性记录到文件系统的inode中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个inode,这个属性记录的就是有多少不同的文件名链接到相同的inode号码。
第三栏表示这个文件(或目录)的拥有者账号
第四栏表示这个文件的所属用户组
第五栏位这个文件的容量大小,默认单位为Bytes
第六栏为这个文件的创建日期或是最近的修改日期
第七栏位这个文件名
这个字段就是文件名,如果文件名之前多一个.代表这个文件是隐藏文件
三、如何修改文件属性和权限
命令chgrp(change group) 修改文件所属用户组
格式:chgrp 修改目标的用户名 文件名
命令chown(change own) 修改文件拥有者
要注意的是,用户必须是已经存在的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能修改
chown还可以顺便直接修改用户组的名称。此外,如果要连目录下的所有子目录或文件同时更改拥有者的话,直接加上 -R的选项即可
格式:chown 修改目标用户名 文件名
命令cp 复制文件(权限那些东西都会复制)
格式 cp 源文件 目标文件
命令chmod 修改权限
各权限数字代表如下
r:4
w:2
x:1
每种身份(owner,group,others)各自三个权限的数字都是需要累加的例如-rwxrwx---数字则是:
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
others=---=0+0+0=0
所以权限的数字就是770
格式:chmod 修改目标权限 目标文件
有些文件你不想让别人看到时候可以设置为740,不想让别人修改则可以设为664
其中还有个符号类型修改文件权限
user u
group/others g/o
命令 chomod u=rwx,go=rx filename
当然还有+和-
chmod a+w filename 代表所有用户全部都加上w这个权限
chmod a-w filename 代表所有用户全部减去w这个权限
四、目录与文件的权限意义
权限对文件的重要性
文件是实际含有数据的地方,包括一般文本文件、数据库文件、二进制可执行文件等 因此权限对于文件来说它的意义是这样的:
r(read):可读取此文件的实际内容,如读取文本文件的文字内容
w(write):可以编辑、新增或是修改该文件的内容(但不含删除该文件)
x(execute):该文件具有可以被系统执行的权限
其中在Linux中文件的可执行是跟权限x有关的,而不是跟扩展名有关,能执行则是x,否则-
当你对一个文件具有w权限时,你可以具有写入编辑、新增、修改文件内容的权限,但并不具备有删除该文件本身的权限。
权限对目录的重要性
文件是存放实际数据的所在,目录主要的内容在记录文件名列表
r(read contents in directory)
表示具有读取目录结构列表的权限,查询该目录下的文件名数据,所以你可以用ls命令将该目录的内容列表显示出来
w(modify contents of directory)
它代表你具有改动该目录结构列表的权限,也就是下面的这些权限:
建立新的文件与目录
删除已经存在的文件或目录进行更名
移动该目录内的文件、目录位置
x(access directory)
目录的x代表的是用户能否进入该目录称为工作目录,所谓工作目录就是你目前所在的目录。只要你没x权限,你就不可能进入该文件夹
注:如果你是文件拥有者,但又没有x权限,但你还是可以读取的,如果没有r则没有读取的权限,并且w对文件拥有者的权限也是等效的
五、Linux文件种类与扩展名
文件种类
常规文件
就是我们在进行读写的类型文件,在由ls-al所显示出来的属性方面,第一个字符为-号。
而常规文件又分为3中文件
纯文本文件(ASCII):这是Linux中最多的一种文件类型,称为纯文本文件。可以执行cat ~/路径 看到该文件的内容
二进制文件:Linux中的可执行文件(scripts)就是这种格式
数据文件:有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件。例如/var/log/wtmp记录我们登录信息,它通过last这个命令读出来,但使用cat会乱码
目录
第一个属性为d
链接文件
就是类似于Windows里面的快捷方式,第一个属性为I
设备与设备文件
注:与系统周边及存储等相关的一些文件,通常都集中在/dev这个目录之下
去块(block)设备文件:就是一些存储数据,以提供系统随机存取的接口设备,距离来说硬盘与软盘就是。你可以随机地在硬盘的不同区块读写,这种设备就是块设备。 可以查一下/dev/sda就会发现第一个属性是b
字符设备文件:亦即使一些串行端口的接口设备,例如键盘、鼠标等。这些设备的特色就是一次性读取,不能够截断输出。距离来说,你不可能让鼠标跳到另一个画面,二十连续性滑动到另一个地方,第一个属性c
数据接口文件(sockets)
这种类型的文件通常在网络上的数据交换了。我们可以启动一个程序来监听客户端的要求,而客户端就可以通过这个socket来进行数据的沟通了,第一个属性为s,最常在/run或/tmp这些个目录中看到
数据输送文件(FIFO,pipe)
FIFO也是一种特殊的文件类型,它主要的目的是解决多个程序同时读写一个文件所造成的错误问题,第一个属性是p
Linux文件扩展名
Linux中文件的可以被执行与可以执行成功是不一样的,x代表的是这个文件具有可执行的能力,但是能不能执行成功,还是得看文件的内容。
几种常用的文件扩展名:
.sh:脚本或批处理文件,因为批处理文件使用shell写成,所以扩展名就编成.sh
Z、.tar、.tar.gz、.zip、.tgz 经过打包的压缩文件,这是因为压缩软件分别为gunzip、tar等,由于不同的压缩软件,而取其相关的扩展名
.html、.php:网页相关文件,分别代表HTML语法与PHP语法的网页文件。.html的文件可使用网页浏览器来直接开启,至于.php文件,则可以通过客户端的浏览器来服务端浏览,以得到运算后的网页结果。
文件的权限修改经常发生在文件传送过程中,在网上下的文件很有可能发生文件修改,因而不能被执行。
Linux文件名长度限制
单一文件或目录的最大容许文件名为255字节,以一个ASCII英文占用一个字节来说,则最大可达255个字符长度。若是以每个汉字占用2字节来说,最大文件名就是大约在128个汉字之间。
Linux文件名的限制
由于在Linux在命令模式下的一些命令操作关系,一般来说,在设置Linux下面的文件名时,最后可以避免一些特殊字符例如:
* ? > < ; & ! [ ] | \ ' " ` ( ) { }
因为这些符号在命令行模式下,是由特殊意义的。另外,文件名的开头为小数点.时,代表这个文件为隐藏文件.同时还要避免由- 和 +
六、Linux目录配置
Linux目录配置的依据——FHS(Filesystem Hierarchy Standard)
根据FHS的标准文件指出,它们的主要目的是希望让用户可以了解到已安装软件通常放置于那个目录下,所以他们希望独立的软件开发商、操作系统制作者以及想要维护系统的用户,都能够遵循FHS的标准。也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。
/(root,根目录):与启动系统有关;
/usr(unix software resource):与软件安装/执行有关;
/var(variable):与系统运行过程有关
目录树
另外,在Linux下面,所有的文件与目录都是根目录的开始的。那是所有目录与文件的源头,然后在一个一个的分支下来,由于像树,所以称这种配置方式为目录树
它主要特性有:
目录树的启始点为根目录(/,root)
每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统。举例,可以有Network File System (NFS)服务器挂载某特定目录等
每一个文件在此目录树中的文件名都是独一无二的
CentOs的观察
命令uname
参数
-r 查看内核版本
-m 查看操作系统版本
参考了鸟哥的私房菜的第五章