这篇文章主要讲的是linux的文件和目录方面的。
1. 用户和用户组
每一个文件属于一个用户,而每一个用户会属于一个或多个用户组,而系统内会有多个用户组。有些文件用户组之间可以共享,而有些文件被设置成用户个人文件,即使是用户组内的其他用户也不能去读或写。这样的设置使linux下的多任务管理更加简单。
在我们的linux系统下,默认所有用户和root的相关信息都记录在了/etc/passwd里面。个人的密码记录在/etc/shadow里,而linux内所有的组名都记录在/etc/group内。
2. linux的文件属性和权限
linux下的文件构造可以通过ls -al
查看,-a
是指所有的文件(包括隐藏文件),-l
是指文件信息会以列表格式展现出来。1
2
3
4
5
6
7
8
9
10
11
12
13~$ ls -al
drwxr-xr-x 32 zhuchen root 4096 4月 14 18:04 .
drwxr-xr-x 5 root root 4096 3月 16 10:50 ..
drwx------ 3 zhuchen root 4096 3月 15 09:49 .adobe
-rw-r--r-- 1 zhuchen root 25283 7月 17 2015 ascii_dora.png
-rw------- 1 zhuchen zhuchen 13641 4月 14 17:19 .bash_history
-rw-r--r-- 1 zhuchen root 220 3月 14 17:34 .bash_logout
-rw-r--r-- 1 zhuchen root 3771 3月 14 17:34 .bashrc
drwxr-xr-x 20 zhuchen root 4096 3月 30 15:16 .cache
drwx------ 26 zhuchen root 4096 4月 7 18:17 .config
drwx------ 3 zhuchen root 4096 3月 14 19:26 .dbus
drwxr-xr-x 2 zhuchen root 4096 3月 23 15:29 Desktop
首先解读一下每列字段的意义。
第一列代表这个文件的类型和权限。具体含义我们后面再说。
第二列代表有多少文件名连接到此节点(i-node)。
第三列代表文件(目录)所有者(用户)的账号。
第四列代表文件(目录)所属的用户组。
第五列代表文件(目录)的大小,默认单位为B。
第六列代表文件(目录)的修改日期(未修改过则是创建日期)。
第七列代表文件(目录)的名字。
下面我们重点解读一下第一列字符串,文件权限和类型的含义。以drwxr-xr-x
为例子。
第一个字符代表这个是目录,文件还是别的。
- [d]:目录
- [-]: 文件
- [|]: 连接文件(linkfile)
- [b]: 设备文件里可供存储的接口设备。
- [c]:设备文件里的串行接口设备(键盘,鼠标)。
例子中的第一个字符是d,也就是文件。
后面的字符每三个一组总共三组。第一组为’文件所有者的权限’,第二组为’一个用户组内其他用户的权限’,第三组为’不同用户组的用户的权限’。
而每一组里有三个字符,第一个r代表可读,第二个w代表可写,第三个x代表可执行。这三个权限的位置不会改变,当没有这个权限的时候,该位置用-表示。
例子中的rwxr-xr-x
分为三组:
- 第一组
rwx
说明文件所有者对该文件可读,可写,可执行。 - 第二组
r-x
说明同用户组内其他用户对该文件可读,不可写,可执行。 - 第三组
r-x
说明不同用户组的其他用户对该文件可读,不可写,可执行。
3. 改变文件的属性和权限
chgrp:改变文件用户组
chown:改变文件所有者
chmod:改变文件权限
linux每个文件的基本权限有九个,分别是owner,group,other三种身份各有自己的三个权限(rwx)。而这9个权限是三个一组的。其中,我们用数字来代表各个权限。r:4,w:2,x:1。我们这里拿rwxrw-r-x
举例
owner = rwx = 4+2+1 = 7
group = rw- = 4+2+0 = 6
other = r-x = 4+0+1 = 5
所以我们可以看出,如果要是想将这个文件的权限改为-rw-r--r--
,就可以用 chmod 644 filename
。
4.权限对于文件和目录的作用
文件:
r:可以读取文件的实际内容。
w:可以编辑,新增和修改内容,但是不能删除。
x:可以被系统执行的权限。
至于w权限为什么不可以删除该文件,是因为这里的rwx权限都是对于文件本身的内容来说的,而不是文件的存在。
目录:
r:可以读取该目录结构列表的权限。也就是可以用ls这个命令了。
w:表示你可以更改该目录结构的权限。即:
- 新建新的文件和目录
- 删除存在的文件和目录
- 重命名存在的文件和目录
- 转移存在的文件和目录
x:表示用户能否进入该目录成为工作目录的权限。所谓的工作目录就是你目前所做的目录。也就是你能用cd
将转变目前的工作目录成该目录的权限。