第五学时 文件属性操作
文件属性分为:
1)权限
2)所有者
3)组
5.1 文件类型
5.1.1 判断文件类型
要判断一个文件的类型,可以给ls加上-l选项。将会列出所有类型。
例如:
$ ls -l /home/ranga/.profile
输出:
-rwxr-xr-x l ranga users 2368 Jul 11 15:55 .profile*
第一个字符是一个连接符(-),指出该文件是一个普通文件。
对于特殊文件,第一个字符将是下列字符其中之一
字符 文件类型
- 普通文件
t 符号链
c 字符特殊文件
b 块特殊文件
p 命名管道
s Socket
d 目录文件夹
5.1.2 普通文件
普通文件:存储任何类型的数据,这些数据可以是纯文本、应用程序特定格式或系统可执行的特定二进
制格式。
$ file /etc/php.ini
输出:ASCII English text
5.1.3 符号链
符号链是指向系统中另一个文件的特殊文件。(类似于windows下的快捷方式)
1.创建符号链
ln -s source destination
这里的source是原文件的相对路径或绝对路径,destination是链的名字。
例如:
$ ln -s /home/httpd/html/users/ranga /home/ranga/public_html
常见错误:
1)目标文件已存在
2)目标文件是一个目录
如果声明的目标是一个目录,ln在那个目录中创建一个与源文件同名的链。
例如,若当前目录下有一个pub目录。
$ ln -s /home/ftp/pub/ranga pub
创建一个链pub/ranga,而不是报告目标是一个目录。
5.1.4 设备文件
用户可以通过读写设备文件来访问Linux设备。这些设备文件是设备在文件系统内的访问点。
设备文件通常位于/dev目录下。两种主要的设备文件是:
1)字符特殊文件
2)块特殊文件
1.字符特殊文件
提供每次一个字符与设备通信的机制。通常,字符设备代表一个“原始”设备。
2.块特殊文件
块特殊文件提供通过文件系统与设备驱动程序通信的机制。这些文件被称作块设备,块设备每次传输一
个大的数据块。这种文件类型的典型代表是一盘和可移动媒介。
例如:
$ ls -l /dev/sda
返回:brw-r----- 1 root disk 8, 0 Nov 18 04:08 /dev/sda
这里第一个字符是b,指出文件是一个块特殊文件。就像字符特殊文件一样,这些文件有主数字和从数字
。
5.1.5 命名管道
Unix的一个伟大特征是用户可以花费很少的代价而把一个程序的输出重定向为另一个程序的输入。
例如,命令 who ! grep ranga 使who命令的输出成为grep命令的输入。
这叫把一个命令的输出用管道传送到另一个命令中。
5.2 所有者、组、权限
Unix的每一个文件都有以下属性:
1)所有者权限
2)组权限
3)其他权限
所有者权限决定了文件的拥有者可以对文件执行哪些操作。
组权限决定了一个用户作为一个文件所数组的一员时可执行哪些操作。
其他权限显示所有其他用户可以对文件实施哪些操作。
用户可以对文件执行以下操作:
1)读,若用户有读权限,则可以浏览文件的内容。
2)写,若用户有写权限,则可以更改文件的内容。
3)执行,若用户有执行权限,则可以把文件当一个程序来执行。
5.2.1 查看权限
用户可以用ls -l命令显示对文件拥有的权限。
例如:$ ls -l /home/ranga/.profile
输出:
-rwxr-xr-x 1 ranga users 2368 Ju1 11 15.57 .profile*
因为第一个符号是'-',所以该文件是一个普通文件。接着后面的三个字符显示文件所有者的权限。
再下面的三个字符显示文件相关分组的权限,最后三个字符显示其他用户的权限。
基本权限列表:
r 读 用户可以浏览文件内容
w 写 用户可以修改文件内容
x 执行 用户可以像运行程序一样运行文件。对于目录,必须拥有执行权限
才能进入目录
1.目录权限
目录的x位授权对目录的访问权起决定作用。
目录的读权限可以使用户查看目录中的文件和属性。
目录的写权限使用户能在目录中添加或删除文件。
若用户只被授予目录的执行权限,则不能查看目录中的文件或从目录中增加、删除文件,但用户可以运
行目录中的可执行文件。
2.SUID、SGID文件权限
5.2.2 改变文件和目录权限
使用chmod命令来改变文件和目录权限。
$ chmod (who) (action) (permissions)
列表who
u 所有者
g 组
o 其他
a 所有
列表actions
+ 增加权限
- 删除权限
= 显示的设置权限
列表permissions
r 读
w 写
x 执行
s SUID或SGID
例如:$ chmod a=r *,把一个目录中所有文件的读访问权限赋予给所有用户
$ chmod go-w .profile 删除除.profile的所有者之外的任何用户写该文件。
-R选项,遍历所属目录下所有文件及文件夹,进行权限设置。
5.2.3 改变所有者和组
有两条命令可以用来改变文件的所有者和组:
1)chown。改变拥有者
2)chgrp。改变组
1.改变所有权
chown命令改变一个文件的所有权。
chown options user:group files
chown ranga: /home/httpd/html/users/ranga
把给定目录的所有者改成用户ranga
2.限制
超级用户root可以无限的改变文件拥有权,但对普通用户则有一些限制条件。
3.改变组所有权
$ chown user:authors /home/ranga/docs/ch5.doc
把所给文件的组改变为athors下的user用户