linux对于文件权限的查看、理解以及修改
ls的使用
ls可以单独使用 ,一般会配合使用如下
ls -a 会显示隐藏文件 以.(点)开头的是隐藏文件
ls -l会显示文件的权限、所有者、大小等详情
ls -F添加文件标识文件用*表示,文件目录用/表示
ls -a -l缩写ls -al 继续缩写为 ll
ll查看文件
[email protected]:/home# ll
总用量 12
drwxr-xr-x 3 root root 4096 7月 20 00:20 ./
drwxr-xr-x 24 root root 4096 7月 14 00:07 ../
drwxr-xr-x 18 ubuntu1604 ubuntu1604 4096 7月 19 23:40 ubuntu1604/
权限分析
例子:d rwx r-x r-x 3 root root 4096 7月 20 00:20 ./
标号:1 2 3 4 5 6 7 8 9 10 11
以下说明用标号1、2、3...说明
文件类型标号1:d:表示目录,类似的还有
- 代 表是文件
b 块设备文件
c 字符设备文件
l 链接文件
p 管道文件
s socket文件
文件权限标号2~4:
r read 可读权限,可以用数字4表示,下有表格说明
w write 可写权限,可以用数字2表示
x execute 可执行权限,可以用数字1表示
- 表示没有相应权限,可以用数字0表示
根据数字可以快速表示用户权限(这样可以直接用0-7的数字表示所有权限):
文件权限表示 | - - - | r– | -w- | –x | rw- | r-x | -wx | rwx |
---|---|---|---|---|---|---|---|---|
二进制 | 000 | 100 | 010 | 001 | 110 | 101 | 011 | 111 |
十进制 | 0 | 4 | 2 | 1 | 6 | 5 | 3 | 7 |
修改文件权限是用的是十进制数或者字母
linux有组的概念:
linux的组下可以有多个用户,所以存在以下用户称呼,
用户:user(他的权限说明对应标号2)
组内其他用户:group(他的权限说明对应标号3)
其他组的用户:other(他的权限说明对应标号4)
修改权限chmod:
*字母法:*
# u:user g:group o:other a:all
# +表示增加 -表示减少 =表示替换 rwx 之间不用写 -;
chmod [u/g/o/a][+/-/=][r/w/x/rw/rx/wx/rwx] 文件名 []号内任选
#原来文件权限:
-rwx rw- r-x 1 ubuntu1604 ubuntu1604 76 7月 20 02:23 a.txt*
#g+x表示组内其他用户权限添加可执行权限:
[email protected]:~/Desktop$ chmod g+x a.txt #标号3权限由rw-变为rwx
#修改后权限显示:
-rwx rwx r-x 1 ubuntu1604 ubuntu1604 76 7月 20 02:23 a.txt
数字法:
#这个要把所有的用户权限写上,用十进制表示
chmod xxx filename #所以x填0-7内的数值,与表格一致
#我们把上面的权限改回去:他原来的权限表示为 rwx是7 rw-是6 r-x是5 所以修改如下
[email protected]:~/Desktop$ chmod 765 a.txt
#说明(注意):如果你把文件所属用户权限改为---或者0
#那么他的图标上就会有把锁和一把叉你就不能打开了
#例如:
[email protected]:~/Desktop$ chmod 000 a.txt #这样谁也打不开,也看不了
[email protected]:~/Desktop$ chmod 777 a.txt #谁都有所有权限了,对于这个文件来说
`
硬链接
硬链接标号5:表示硬连接个数
硬链接:可以占用磁盘空间,源文件删除对硬链接没有影响,指向同一个地址,修改同时变,删除这个文件另一个仍然存在
语法 :$ ln a.txt a (为文件a.txt创建一个硬链接为a)
软链接(拓展):不占用磁盘空间的,源文件删除则软链接失效【-s】,创建一个快捷方式,修改同时变,删除这个文件另一个不存在,这里文件权限不会显示软链接个数
语法:$ ln -s a.txt a (为文件a.txt创建一个软链接(又称快捷方式)为a)
文件所属对象,标号6和7:6表示文件所属的用户是谁(他的权限和标号2对应),7表示用户所属那个组(他的权限和标号3对应),6的用户不一定在7用户组内(这只是相对文件而言),
其他说明
文件大小标号8:kb单位
文件时间标号9和10:就是时间
文件名字和类型标号11:
.表示当前文件目录 ..表示上一层目录
使用ll命令他就会显示出来(有的命令不显示这两个目录,如ls -A)