一个文件一经创建就具有三种访问方式:
1.读
2.写
3.执行
按照所针对的用户,文件的权限可分为三类:
1.文件属主
2.同组用户
3.其他用户
1.1文件
一个文件一经创建系统将保存其所有信息(文件位置、文件类型、文件长度、文件的权限等)
1.2文件类型
文件的类型有7种(可以用ls -l 命令查看得出的结果的第一位看出)
d 目录
l 符号链接(指向另一个文件)
s 套接文字
b 块设备文件
c 字符设备
p 命令管道文件
- 普通文件(不属于以上类型的文件)
1.3权限
使用touch创建一个测试文件
# touch test
然后使用 ls -l查看
#ls -l
-rw-r--r-- 1 root root 0 05-22 11:58 test
第一个 - 告诉我们这是一个普通文件
接下来的9个字符代表的意思分别为:
rw- 文件属主的权限
r-- 同组用户的权限
r--其他人的权限
接着是1 表示该文件硬链接的数目
root 文件的属主
root 文件属主所在的用户组
0 文件的长度 不是K字节
05-22 11:58 文件更新时间
test 文件名
三组字符中每一组字符中含有三个权限为:
r 读权限
w 写权限/更改权限
x 执行该脚本或程序的权限
(- 表示被禁用)
下面我们来看一下刚才创建的文件权限-rw-r--r--
- rw- r-- r--
属于普通文件 属主可以读写但不可以执行 同组用户可以读 但不可以写和执行 其他用户可读 但不可写和执行
示例:
- rwx r-x rw-
属于普通文件 属主可以读写执行 同组用户可以读和执行 但不可以写 其他用户可读写 但不可执行
1.4改变权限位
符号模式
chmod 格式:
chmod [who] operator [permission] filename
who :
u 文件属主权限
g 同组用户权限
o 其他用户权限
a 所有用户
operator :
+ 增加权限
- 取消权限
= 设定权限
permission:
r 读
w 写
x 执行
s
t
........
我们来修改我们刚才创建的文件:-rw-r--r-- 1 root root 0 05-22 11:58 test
使其属主具有执行的权限
#chmod u+x test
使其同组用户具有写的权限
#chmod g+w test
赋于同组用户和其他用户写的权限
#chmod go+w test
绝对模式:
chmod [mode] file
mode是一个八进制数
对于八进制数和文件权限表
0400 文件属主可读
0200 文件属主可写
0100 文件属主可执行
0040 同组用户可读
0020 同组用户可读
0010 同组用户可执行
0004 其他用户可读
0002 其他用户可写
0001 其他用户可执行
看我们刚才的文件:-rw-r--r-- 1 root root 0 05-22 11:58 test
rw- = 0400 + 0200 = 0600
r-- = 0040
r-- = 0004
最后结果等于:0600 + 0040 + 0004 = 0644(644即表示rw-r--r--权限)
另外一种算法
r w - r - - r - -
4 +2 4 4 =644
r w x r - - r - -
4+2+1 4 4 = 744
r w x r w - r w -
4+2+1 4+2 4+2 =766
现在我们可以用绝对模式把我们刚才创建的文件进行修改:
目前我们的文件:-rwxrwxr-- 1 root root 0 05-22 11:59 test
我们使其同组用户和其他用户只具有读权限
#chmod 744 test
#ls -l
-rwxr--r-- 1 root root 0 05-22 11:59 test
我们使属主不具有执行 并且同组用户具有读写 其他用户只具有读权限
#chmod 664 test
#ls -l
-rw-rw-r-- 1 root root 0 05-22 11:59 test
如果想要一次设置一个目录下面的所有文件的权限 可使用下面命令:
chmod 644*
这将使文件属主不具有执行 并且同组用户具有读写 其他用户只具有读权限
还可以使用-R选项连同子目录下的文件一起设置
chmod -R 644 /usr/local/home/*
这样就可以一次将/usr/local/home/
目录下的所有文件连同各个子目录下的文件的权限全部设置成644权限