1.Linux基础权限

      1.权限基础

查看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表示文件的所属组。

 

2.1 chmod命令的使用

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


 

2.2 chown命令的使用

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


 

2.2 chgrp命令的使用

         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下添加一个用户的同时也会建立一个与用户同名的用户组。

 

3默认权限

         当我们新建文件或目录时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(目录默认权限)的呢?

3.1 文件的默认权限

1.        文件默认不能建立为执行文件,必须手工赋予执行权限;

2.        所以文件默认权限最大为666

3.        默认权限需要换算成字母再相减

4.        建立文件之后的默认权限为666减去umask值(必须换算成字母再相减!

666 = rw-rw-rw-,002 =-------w-  =>   ( rw-rw-rw-) – ( -------w- )  =  rw-rw—w- = 644

3.2 目录的默认权限

1.                 目录的默认权限最大为777;

2.        默认权限需要换算成字母再相减

3.        建立目录之后的默认权限为777减去umask值(必须换算成字母再相减!

777 = rwxrwxrwx,002 =-------w-  =>  ( rwxrwxrwx ) – ( -------w- ) = rwxrwxr-x =775

3.3 umask的修改

         可以通过

cgh@ubuntu:~/linux_test$ umask 022
cgh@ubuntu:~/linux_test$ umask


临时修改umask的值。

想要永久修改umask的话,我们就要修改/etc/profile文件,/etc/profile称作环境配置文件。

00224.Linux下权限对文件作用和权限对目录作用的不同之处

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)三种设置有意义。

注意:一个文件或目录只能有一个所属组。

你可能感兴趣的:(1.Linux基础权限)