这篇博客主要来记录linux文件的一些基本知识,在GNU/linux里,文件管理是非常重要的,我个人认为原因主要体现在两个方面。首先,linux从UNIX系统继承下来的一切设备皆文件的理念,对硬件设备的管理也体现在对文件的管理上;其次是linux是一个多用户多任务的操作系统,从安全的角度,对不同用户文件权限的管理显的尤为重要。下面我们来看一下linux系统有关文件的一些基本知识:
linux文件访问类别主要有3个类别,owner、group、other,权限分别为read、write、excute;与windows不同之处
在于,windows下可执行文件以.bat或者.exe后缀名;而linux下可执行文件以其是否拥有可执行权限来判定,当然普通文件即使有可执行权限也是不能执行的,这主要
是因为其内容不可执行。
- [huang@myhost/etc]$ cd /dev/
-
[huang@myhost/dev]$ ls -l
-
total 0
-
crw-rw---- 1 root video 10, 175 Oct 2 22:33 agpgart
-
drwxr-xr-x 2 root root 80 Oct 2 22:33 bsg
-
lrwxrwxrwx 1 root root 11 Oct 2 22:33 core -> /proc/kcore
-
## 部分内容省略 ##
- [huang@myhost/~]$ ls -l
-
drwxrwxrwx 23 root root 4096 Jun 29 00:28 openssl-0.9.8r
-
-rw-r--r-- 1 huang huang 26347 Sep 18 20:12 Unsaved Document 1
-
drwxr-xr-x 4 huang huang 4096 Sep 22 03:20 work
-
## 部分内容省略 ##
其中
- -rw-r--r-- 文件类型及文件权限
-
1 链接数
-
huang 文件拥有者
-
huang 文件所属组
-
26347 文件大小
-
Sep 18 20:12 文件最后一次修改时间
-
Unsaved Document 1 文件名 , 如果文件名前有.,表示这个文件为隐藏文件
我们再来看看“ -rw-r--r-- ”这行。这一行总共有10个字符宽度,第一个字符为" -
"表示改文件为普通文件。在这个位置还可以出现其他几个字符分别为:d , c , l , b , 他们分别代表着这个文件为目录( d
)、字符设备文件,例如键盘、鼠标( c )、链接文件( l )、和块设备文件( b ).
接下来9个字符的宽度分别代表文件拥有的权限,[r] 代表可读( read ) , [w] 代表可写( write ) , [x] 代表可执行( excute ). 用数字表示分别为 [r] = 4 , [w] = 2 , [x] = 1 .
再来看这个文件拥有者为huang, huang对其有读、写权限,所属huang用户组的用户对该文件有读的权限,其他用户对这个文件也只有读权限。
下面来看看文件管理的3个常用命令:chown , chmod , chgrp .
- chown -- 改变文件所属用户
-
[-R] 递归的改变文件夹内文件
-
[-f] 忽略错误信息
- [huang@myhost/~]$ touch ./test ## 新建测试文件
-
[huang@myhost/~]$ ls -al ./test
-
-rw-r--r-- 1 huang huang 0 Oct 2 23:36 ./test
- [huang@myhost/~]$ sudo cp ./test /home/whu/ ## 拷贝文件后,文件的用户及用户组都发生变化
-
[whu@myhost ~]$ ls -al
-
-rw-r--r-- 1 root root 0 Oct 2 23:36 test
- [whu@myhost ~]$ sudo chown huang ./test ## 修改文件用户组
-
[whu@myhost ~]$ ls -l ./test
-
-rw-r--r-- 1 huang root 0 Oct 2 23:36 ./test
- [whu@myhost ~]$ sudo chown whu:whu ./test ## 修改用户及用户组
-
[whu@myhost ~]$ ls -l ./test
-
-rw-r--r-- 1 whu whu 0 Oct 2 23:36 ./test
- chmod -- 改变文件的权限属性
-
常用的修改方法有两种,一种是用英文字符来设置改变权限( w , r , x ) ; 另外一种是用数字来直接设置([r] = 4 , [w] = 2 , [x] = 1 );
-
chmod -[参数] [文件]
-
[-f] 忽略错误
-
[-R] 递归改变文件目录下的所有文件
这个例子用字符来改变/home/huang/test文件的属性:
- [huang@myhost/~]$ ls -l ./test
-
-rw-r--r-- 1 huang huang 0 Oct 2 23:36 ./test
-
[huang@myhost/~]$ chmod u=rwx,g=rw,o=r ./test
-
[huang@myhost/~]$ ls -l ./test
-
-rwxrw-r-- 1 huang huang 0 Oct 2 23:36 ./test
如果我们要对u,g,o三者赋予相同的权限,可以用‘ a ’来表示:
- [huang@myhost/~]$ chmod a=rwx ./test
-
[huang@myhost/~]$ ls -l ./test
-
-rwxrwxrwx 1 huang huang 0 Oct 2 23:36 ./test
当然也可以用‘ + ' , ' - ' 来分别表示增加和减少某些权限,例如:
- [huang@myhost/~]$ chmod o-xw ./test ## other减少 wx 权限
-
[huang@myhost/~]$ ls -l ./test
-
-rwxrwxr-- 1 huang huang 0 Oct 2 23:36 ./test
下面来简单介绍一下用数字来表示,我们用数字来改变文件的属性:
- [huang@myhost/~]$ chmod 733 ./test
-
[huang@myhost/~]$ ls -l ./test
-
-rwx-wx-wx 1 huang huang 0 Oct 2 23:36 ./test ##文件属性为733
- chgrp -- 更改文件所属用户组
-
chgrp -[参数] [文件]
-
[-f] 忽略错误信息
-
[-R] 递归改变目录下文件
-
[-H] 如果参数是某个目录的符号链接,转化改连接
看看下面一个简单例子,把test所属用户组修改成root组:
- [huang@myhost/~]$ ls -l ./test
-
-rwx-wx-wx 1 huang huang 0 Oct 2 23:36 ./test
-
[huang@myhost/~]$ sudo chgrp root ./test
-
[huang@myhost/~]$ ls -l ./test
-
-rwx-wx-wx 1 huang root 0 Oct 2 23:36 ./test
总结一下吧,这篇博文主要是对文件管理的一点总结而已,内容很简单也很基础,不需要太多赘述。
阅读(1441) | 评论(0) | 转发(2) |