Linux文件管理
学习大纲:
Linux中文件的作用
Linux文件的命名规则
Linux中文件的相关信息
Linux文件类型
Linux文件权限
修改文件创建者身份
修改文件所属组
文件的访问控制列表(ACL)
Linux链接文件
1、Linux文件的作用
在Linux系统中,它将所有的一切都以文件的方式存放在系统中(目录也是一个特殊的 文件)。
因此对系统的管理,就是对文件进行管理。
2、Linux文件的命名规则
文件名最大为255个字符。
文件名中不能包括Linux特殊字符如“\”、“/”等(如果在文件中使用这些特殊符号可通过转义符 “\”将其转义)。
以“.”开头的文件为隐藏文件。
-如果要显示隐藏文件,则需要用户在ls指令后加上-a或-A来显示。
-如果要创建隐藏文件则只需在文件名前加上“.”
3、linux中文件的相关信息
当用户使用指令“ls -l”以长列表方式查看文件的详细信息时,就会显示文件的下面的相关信息
-rw-r--r-- 1 root lonny 12 Apr 19 19:50 file1
- 文件类型、文件权限、硬连接数、文件创建者、文件所属组、文件大小、更动时间、文件名
4、Linux文件类型
当用户查看文件详细时,第一个字符就这个文件的类型。
-:一般文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
p:人工管道
检查文件类型的其它方法
file <文件名>
stat <文件名>
5、文件权限
能够操作文件的用户分类
每类用户能够使用的权限
修改文件权限一般方法
通过数字来修改文件的权限
能够操作文件的用户分类
对于每一个文件,Linux都提供了一套文件权限系统。
在文件权限系统中,将可以操作文件的用户都分成三类:
-- 文件的创建者 (u)
-- 文件所属组的成员(g)
-- 其他用户 (O)
每类用户能够使用的权限
对于每一类用户,权限系统又分别给他们提供三种权限(rwx)
针对文件而言,这三种权限的含义为:
- 读(r) 用户是否有权力读文件的内容
- 写(w) 用户是否有权利改变文件的内容
- 执行(x)用户是否有权利执行文件
修改文件权限一般方法
用户可使用chmod指令来改变文件的权限
- 语法:chmod <权限><文件名>
改变文件权限的方法:
--通过“+”、“-”来为某类用户添加或去掉相关权限
例:chmod u+x file //为文件的创建者添加一个执行的权限
--通过“=”来为某用户赋于某权限
例:chmod g=rx file //为文件所属组赋于一个读与执行的仅限
使用数字来改变文件权限
chmod后还可以用三个数字来表示用户权限
- 第一位数字代表文件创建者权限
- 第二位数字代表文件所属组成员权限
- 第三位数字代表其他用户权限
每一个数字都采用加和的方式得出。
- 4 (读)
- 2 (写)
- 1 (执行)
例:chmod 755 file //为文件赋于rwxr-xr-x权限
分析:u(7=4+2+1 rwx) g(5=4+1 r-x) o(5=4+1 r-x)
只有文件的拥有者和root用户才可以改变文件的权限。
6、修改文件创建者身份
每一个文件都有一个拥有者。
只有root用户才可以用“chown”指令来改变文件的拥有者。
语法:chown <用户名> <文件名>
例:chown student file
7、修改文件的所属组
每一个文件都属于并只能属于一个指定的组。
文件的创建者与root用户,可以用“chgrp”指令来改变文件所属的组。
注:当使用文件创建者来改变属组时,那么被改变的新组中必须包含此用户。
语法:chgrp <组名> <文件名>
例:chgrp grp1 file
8、文件访问控制列表(ACL)
ACL可以为某个文件单独设置该文件具体的某用户或组的权限。
getfacl <文件名>
- 获取文件的访问控制信息
setfacl设置文件的acl
-m修改文件的acl
-x取消用户或组对文件的权限
- 语法:
- setfacl –m u:用户名:权限 <文件名> //设置某用户名的访问权限
- setfacl –m g:组 名:权限 <文件名> //设置某个组的访问权限
- setfacl –x u:用户名 <文件名> //取消某用户名的访问权限
- setfacl –x g:组名 <文件名> //取消某个组的访问权限
- setfacl -m m:[rwx] <文件名>
【先设置文件的acl权限,再设置文件的umask】
9、软连接和硬链接
软链接(符号链接)
- 软链接就有一点像为原文件名创建了一个新的指针。当对软链接操作时,系统就会找到原文 件并对原文件进行操作(与Windows的快捷方式类似)。
- 语法:ln –s <源文件> <新建链接名>
硬链接
- 硬链接文件完全等同于原文件,原文件名和连接文件都指向相同的物理地址。
- 语法:ln <源文件> <新建链接名>
- 硬链接的描述
--不可跨文件系统创建硬连接,也不可为目录建立硬链接。
--文件在磁盘中的数据是唯一的,这样就可以节省硬盘空间
--由于只有当删除文件的最后一个节点时,文件才能真正从磁盘空间中消除,因此可以防止不必要的误删除。
建立软链接和硬链接
创建硬链接: ln 原始文件或文件夹 目标文件或文件夹
创建软链接: ln -s 原始文件或文件夹 目标文件或文件夹
[root@redhat ~]# touch test1 创建文件test1
[root@redhat ~]#ln test1 test2 为test1创建硬链接test2
[root@redhat ~]# ln -s test1 test3 为test1创建软链接test3
[root@redhat ~]# ls -li
1704073 -rw-r--r--. 2 root root 0 May 11 16:52 test1
1704073 -rw-r--r--. 2 root root 0 May 11 16:52 test2
1704076 lrwxrwxrwx. 1 root root 5 May 11 16:53 test3 -> test1 【test3表示软链接】
从上面可以看出:
硬连接文件test2与原文件test1的inode节点相同,均为1704073,然而符号连接文件的inode节点不同。
[root@redhat ~]# echo "im test1" >> test1
[root@redhat ~]# cat test1
im test1
[root@redhat ~]# cat test2
im test1
[root@redhat ~]# cat test3
im test1
[root@redhat ~]# rm -f test1
[root@redhat ~]# cat test2
im test1
[root@redhat ~]# cat test3
cat: test3: No such file or directory
通过上面的测试可以看出:当删除原始文件test1后,硬连接test2不受影响,但是符号连接test3文件无效。
删除软链接
rm -rf symbolic_name 注意不是rm -rf symbolic_name/
[root@redhat ~]# rm test3
rm: remove symbolic link `test3'? y
当删除链接文件时,如果不小心会把原始文件删掉
例:
ln -s /home/user/bak /var/bak
rm /var/bak/ 会提示bak是一个文件夹无法删除这时千万不要用 rm -rf /var/bak/ 来删除, 否则你删除的并不是链接文件 而是真正的 /home/user/bak 文件夹
想要删除链接文件要用以下命令 rm /var/bak 只是少了一个“ / ” ,删除的 就是链接文件, 也就是在文件的最后不要加上/
苦难并非乐事,但能者等闲视之,人生本来就是苦中作乐,切莫长吁短叹,虚度年华。