Linux判断一个文件是否可读,可写,可执行的方法不同于Windows一样,Linux是通过给
每个文件/目录拥有的权限位的方式来判断的,而Win则是通过文件的后缀名来判断的.
(1).查看一个文件/目录的权限
ls -l 文件
ls -ld 目录
上面的命令会看到如下形式的内容
-rwxr-xr-- 1 root root 2012 Sep 8 14:06 example.txt
1.1 说明:上面的输出可以看到第一列为 -rwxr-xr--
共占10个字符,它表示的是该文件的类型和权限位.
第一个字符表示的是该文件的类型,可能为:
- :表示普通的文件,如文本文件
d 表示目录
c 表示字符文件(Linux中所有设备皆文件,如键盘)
b 块设备文件(如磁盘)
l(注:小写字母l) :符号链接文件
p :管道文件
s:socket文件
1.2 后面的9个字符可以分为3组,每组3个字符,3组依次表示文件拥有者的权限,
文件拥有的群组的权限,其他人的权限.如实例中:
文件拥有者的权限:rwx
文件拥有的群组的权限:r-x
其他人的权限:r--
说明:字母r表示可读权限,字母w表示可写权限。字母x表示可执行权限。
实例中表示:文件拥有者对该文件有可读,可写,可执行的权限。文件拥有
的群组对该文件拥有可读,可执行的权限。而其他人对该文件只有可读权
限。
1.3 通过上面可以看出,各个权限位,若拥有该权限则在该位上添上代表权限的
字母(如r),若不拥有该权限则在该权限位上使用字符'-'表示不具备该权限。
2.为什么一个文件需要拥有3组权限呢?
可以这样假设,加入你有一些自己私密的照片,只允许你自己一个人能够察看
而Linux是一个多用户的网络操作系统,也就是同一时刻,登陆系统中的用户可能不
只你一个(察看系统中现在登陆的用户可用命令:who或w).那Linux怎么保证不同用户
之间不能察看别人的文件呢(这里的用户只的是普通用户).因此Linux就通过给文件设
置3组权限,分别表示拥有者的权限,群组的权限,其他人的权限。若其他人能对你
的私密照片做某些操作,则他必须依赖于你给你私密照片设置的权限。假如你想让
和你同一组的其他人查看的话,你只需要给照片的群组权限设置可读权限即可,这
样只有和你同一组的其他人才能查看,而不属于同一组的其他人则不允许察看。设
置文件权限的命令为chown(可参考man chown)
3.对于文件和目录来说每个权限分别代表什么意思
3.1 对于文件来说:
r :可读权限,则表示能够读取文件的内容
w:表示可以修改文件的内容(但不包含删除文件)
x:表示可以将该文件作为一个可执行文件来执行,一般用来设置shell脚本可
执行的,Linux就是根据文件是否有该权限来判断该文件是否可执行的
注:文件的r,w,x主要是针对文件的内容来说的,与文件名的存在与否没关系的
也就是说,你拥有文件的可写权限,但你不一定能够删除该文件
3.2 对于目录来说
r:可读权限,则表示你能够使用如ls命令来列出目录的文件名列表。
w:可写权限,则表示你可以更改该目录的列表,如删除文件,重命名,新建
等,如可使用touch,mkdir来创建文件和目录
x:可执行权限,则表示你可以使用cd等命令进入该目录,用该目录来作为当
前的工作目录。
注:目录的r,w,x主要是针对目录的文件名列表来说的而不是针对文件内容的
4.与权限相关的命令
ls :列出权限
umask:设置默认的权限掩码,这样你创建一个新的文件时,该文件的默认权限
为666-umask值,创建一个新目录时,则该目录的默认权限为777-umask
值
chmod:更改文件的权限
chgrp:更改文件的群组
chown:更改文件的拥有者
find:根据指定的文件权限进行查找