查看Linux下某个目录的详细内容:
cgh@ubuntu:~/linux_test$ls -l -rw-rw-r-- 1 cghcgh 792 Nov 26 04:44 test.s
以下10个字符就是权限位
-rw-rw-r--
第一位代表文件类型,Windows下我们以扩展名区分文件类型,理论上有多少种扩展名就有多少种文件,而Linux下的文件类型没有Windows多,常见的有七种:
1. 块设备文件;
2. 字符设备文件;
3. 套接字文件;
4. 管道符文件;
5. 普通文件;
6. 目录;
7. 软链接文件;
前四种文件是系统特殊文件,不要求用户做修改。故我们主要掌握后三种文件的权限描述符:
1. -:普通文件;
2. d:目录;
3. l:软链接文件;
权限位的r、w、x、-的含义如下:
1. r:read,读权限;
2. w,write,写权限;
3. x,execute,执行权限;
4. -:无;
权限位的后面9位分成3组,每组3位:
1. rw-:user,所有者权限(可读可写);
2. r--:group,所属组权限(只读);
3. r--:other,其他人(只读);
第一个cgh表示文件的所有者,第二个cgh表示文件的所属组。
chmod是change mode的简称,chmod命令可以用来修改权限。
一下是chmod命令的使用例子:
1. 给文件的拥有者赋予执行权限
cgh@ubuntu:~/linux_test$chmod u+x test.s # 给user 加上execute权限 cgh@ubuntu:~/linux_test$ls –l # 查看 -rwxrw-r-- 1 cghcgh 776 Nov 26 04:45 test.s
2. 给文件所属组和other赋予执行权限
cgh@ubuntu:~/linux_test$ls –l #查看文件权限 -rwxr--r-- 1 cghcgh 776 Nov 26 04:45 test.s cgh@ubuntu:~/linux_test$chmod g+w,o+w test.s # 给所属组和other加上write权限 cgh@ubuntu:~/linux_test$ls –l #再次查看 -rwxrw-rw- 1 cghcgh 776 Nov 26 04:45 test.s #所属组和other拥有了write权限
3. 取消拥有者的执行权限、所属组的写权限、other的写权限
cgh@ubuntu:~/linux_test$ls –l #查看文件权限 -rwxrw-rw- 1 cghcgh 776 Nov 26 04:45 test.s cgh@ubuntu:~/linux_test$chmod u-x,g-w,o-w test.s # 修改文件权限 cgh@ubuntu:~/linux_test$ls –l #再次查看文件权限 -rw-r--r-- 1 cghcgh 776 Nov 26 04:45 test.s # 拥有者没有了execute、所属组没有了write、other没有了write
4. 给user可读可写可执行权限、group读写权限、other读权限
cgh@ubuntu:~/linux_test$ls –l #查看权限 ---------- 1 cghcgh 776 Nov 26 04:45 test.s #全部为空 cgh@ubuntu:~/linux_test$chmod u=rwx,g=rw,o=r test.s #赋予权限 cgh@ubuntu:~/linux_test$ls -l -rwxrw-r-- 1 cghcgh 776 Nov 26 04:45 test.s #再次查看
5. 给user、group、other同时给与可读可写可执行权限
cgh@ubuntu:~/linux_test$ls -l ---------- 1 cgh cgh 776 Nov 26 04:45 test.s cgh@ubuntu:~/linux_test$chmod a=rwx test.s #a表示all cgh@ubuntu:~/linux_test$ls -l -rwxrwxrwx 1 cghcgh 776 Nov 26 04:45 test.s
权限的数字表示方法:
1. r----4,读权限用4表示;
2. w----2,写权限用2表示;
3. x----1,执行权限用1表示;
例如:
rwx = 4 + 2 + 1= 7,读写执行
r-x = 4 + 1 = 5,读和执行
r-x = 4 + 1 =5,读和执行
6. 给user读写执行,给group读和执行,给other读和执行
cgh@ubuntu:~/linux_test$chmod 755 test.s cgh@ubuntu:~/linux_test$ls -l -rwxr-xr-x 1 cghcgh 776 Nov 26 04:45 test.s
chown是change owner的简称,意为修改文件的所有者。
1. 把文件的所有者从root用户更改为cgh用户:
cgh@ubuntu:~/linux_test$ ls –l #查看文件权限 -rw-r--r-- 1 root root 0 May 11 01:46 test.c # 所有者为root cgh@ubuntu:~/linux_test$ sudo chown cgh test.c # 修改文件所属用户 cgh@ubuntu:~/linux_test$ ls –l #再次查看文件权限 -rw-r--r-- 1 cgh root 0 May 11 01:46 test.c # 所有者变为cgh用户
2. 同时修改文件的所有者和所属组:
cgh@ubuntu:~/linux_test$ls –l #查看文件权限 -rw-r--r-- 1root root 0 May 11 01:46 test.c #所有者为root,所属组为root cgh@ubuntu:~/linux_test$sudo chown cgh:cgh test.c # 修改文件所有者和所属组 cgh@ubuntu:~/linux_test$ls –l #再次查看文件权限 -rw-r--r-- 1 cghcgh 0 May 11 01:46 test.c #所有者和所属组都变为cgh
chgrp是change group的简称,意为修改文件的所属组。
1. 把文件的所属组从root用户更改为cgh用户:
cgh@ubuntu:~/linux_test$ ls –l #查看文件权限 -rw-r--r-- 1 cgh root 0 May 11 01:46 test.c # 所属组为root cgh@ubuntu:~/linux_test$ chgrp cgh test.c # 修改文件所属组 cgh@ubuntu:~/linux_test$ ls –l #再次查看文件权限 -rw-r--r-- 1 cgh cgh 0 May 11 01:46 test.c # 所属组变为cgh用户
注意,Linux下添加一个用户的同时也会建立一个与用户同名的用户组。
当我们新建文件或目录时Linux会给文件赋予默认的权限,我们试试看。
创建文件
cgh@ubuntu:~/linux_test$ touch test.c # 新建文件 cgh@ubuntu:~/linux_test$ ls –l #查看文件 -rw-rw-r-- 1 cgh cgh 0 May 11 20:06 test.c # 664:默认权限user读写,group读写,other读创建目录
cgh@ubuntu:~/linux_test$ mkdir test #创建目录 cgh@ubuntu:~/linux_test$ ls –l #查看目录 drwxrwxr-x 2 cgh cgh 4096 May 11 20:13 test # 775:user读写执行,group读写执行,other读执行
在Windows下创建的文件,其默认权限继承与所在目录的权限,而Linux下新建的文件、新建的目录的默认权限由umask指令设置。查看umask指令:
cgh@ubuntu:~/linux_test$ umask 0002
第一位0:文件特殊权限(以后讲,现在不用管)
002:文件、目录的默认权限
Linux是怎么从002算出644(文件默认权限)和775(目录默认权限)的呢?
1. 文件默认不能建立为执行文件,必须手工赋予执行权限;
2. 所以文件默认权限最大为666
3. 默认权限需要换算成字母再相减
4. 建立文件之后的默认权限为666减去umask值(必须换算成字母再相减!)
666 = rw-rw-rw-,002 =-------w- => ( rw-rw-rw-) – ( -------w- ) = rw-rw—w- = 644
1. 目录的默认权限最大为777;
2. 默认权限需要换算成字母再相减
3. 建立目录之后的默认权限为777减去umask值(必须换算成字母再相减!)
777 = rwxrwxrwx,002 =-------w- => ( rwxrwxrwx ) – ( -------w- ) = rwxrwxr-x =775
可以通过
cgh@ubuntu:~/linux_test$ umask 022 cgh@ubuntu:~/linux_test$ umask
临时修改umask的值。
想要永久修改umask的话,我们就要修改/etc/profile文件,/etc/profile称作环境配置文件。
1. 权限对文件的作用:
a) 1.1 r : 读取文件内容,可使用的命令:cat、more、head、tail;
b) w : 编辑、新增、修改文件内容,但是不能删除文件(对目录有写权限我们才能删除文件),可使用的命令:vi、echo
c) x : 可执行
2. 权限对目录的作用:
a) r : 可以查询目录下的文件名,可用命令:ls
b) w : 具有修改目录结构的权限,比如新建文件和目录,删除此目录下的文件和目录,重命名此目录下文件和目录,剪切,可用命令:touch、rm、mv、cp
c) x : 可进入目录,可用命令:cd
以上是rwx对于文件和目录区别,从中我们可以得出结论:对文件来讲,最高权限是x(执行);对目录来讲最高权限是w(写权限意为着可以修改目录中的内容)。对于目录而言只有0、5(rx)、7(rwx)三种设置有意义。
注意:一个文件或目录只能有一个所属组。