zoukankan      html  css  js  c++  java
  • Linux基本命令-chmod

           chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

    权限范围的表示法如下:

    • u:user,文件或目录的拥有者
    • g:group,文件或目录的所属群组
    • o:other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围
    • a:all,全部的用户,包含拥有者,所属群组以及其他用户
    • r:read,读取权限,数字代号为“4”
    • w:write,写入权限,数字代号为“2”
    • x:执行或切换权限,数字代号为“1”
    • -:不具有任何权限,数字代号为“0”
    • s:特殊功能说明:变更文件或目录的权限

    语法

    chmod (选项) (参数)

    选项

    -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
    -f或--quiet或——silent:不显示错误信息;
    -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
    -v或——verbose:显示指令执行过程;
    --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
    <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
    <权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
    <权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

    参数

    权限模式:指定文件的权限模式;
    文件:要改变权限的文件。

     实例

    Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!

    linux文件的用户权限的分析图

     

    例如:rwxrw-r--

    r=可读    //值为4

    w=可写    //值为2

    x=可执行    //值为1

    -=无权限    值为0

    命令执行:

    [root@localhost ~]# touch test.txt
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root root 1523 Apr  4 18:27 anaconda-ks.cfg
    -rw-r--r--. 1 root root    0 Jun 13 16:22 test.txt

    我们可以看到新建的test.txt文档具有的权限:rw-r--r--,对应的值为644。

    [root@localhost ~]# chmod u=rwx,g=rw,o=r test.txt 
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root root 1523 Apr  4 18:27 anaconda-ks.cfg
    -rwxrw-r--. 1 root root    0 Jun 13 16:22 test.txt

    现在的权限为rwxrw-r--,权限值为764.

    [root@localhost ~]# chmod u-x,g+x-w,o+x test.txt 
    [root@localhost ~]# ll
    total 4
    -rw-------. 1 root root 1523 Apr  4 18:27 anaconda-ks.cfg
    -rw-r-xr-x. 1 root root    0 Jun 13 16:22 test.txt

    现在的权限是rw-r-xr-x,权限值为655.

    [root@localhost ~]# chmod a=r test.txt 
    [root@localhost ~]# ll test.txt 
    -r--r--r--. 1 root root 0 Jun 13 16:22 test.txt

    现在的权限是r--r--r--,权限值为444.

    [root@localhost ~]# chmod a+x test.txt 
    [root@localhost ~]# ll test.txt 
    -r-xr-xr-x. 1 root root 0 Jun 13 16:22 test.txt

    现在的权限是r-xr-xr-x,权限值为555.

    [root@localhost ~]# chmod 440 test.txt 
    [root@localhost ~]# ll test.txt 
    -r--r-----. 1 root root 0 Jun 13 16:22 test.txt

    通过值更改权限后,同样根据值的换算得到文件权限:r--r-----,值为440

    [root@localhost ~]# chmod 777 test.txt 
    [root@localhost ~]# ll test.txt 
    -rwxrwxrwx. 1 root root 0 Jun 13 16:22 test.txt

    上面是777权限。rwxrwxrwx.

    递归参数

    [root@localhost ~]# ls -l
    total 4
    -rw-------. 1 root root 1523 Apr  4 18:27 anaconda-ks.cfg
    drwxr-xr-x. 2 root root   45 Jun 13 16:36 test
    [root@localhost ~]# ls -l test
    total 0
    -r--r--r--. 1 root root 0 Jun 13 16:36 test1
    --w--w--w-. 1 root root 0 Jun 13 16:36 test2
    ---x--x--x. 1 root root 0 Jun 13 16:36 test3

    当前test目录为731权限,test目录下的test1为444权限,test2为222权限,test3为111权限。现在进行递归权限管理:

    [root@localhost ~]# chmod -R 777 test
    [root@localhost ~]# ls -l
    total 4
    -rw-------. 1 root root 1523 Apr  4 18:27 anaconda-ks.cfg
    drwxrwxrwx. 2 root root   45 Jun 13 16:36 test
    -rwxrwxrwx. 1 root root    0 Jun 13 16:22 test.txt
    [root@localhost ~]# ls -l test
    total 0
    -rwxrwxrwx. 1 root root 0 Jun 13 16:36 test1
    -rwxrwxrwx. 1 root root 0 Jun 13 16:36 test2
    -rwxrwxrwx. 1 root root 0 Jun 13 16:36 test3

    通过执行chmod -R 777 test命令,test目录的权限以及其下的所有文件全部递归调整权限为777。

  • 相关阅读:
    第一篇
    面试题
    CSS样式
    html初步学习
    web开发项目连接访问数据库
    oracle数据库操作之连接
    oracle数据库的基本操作(create创建表,update更新表,drop删除表,select查询表,insert插入数据)
    用js在前台界面进行账户密码的检测,账户和密码符合要求后可进行登录
    用servlet代替js对登录进行检测
    JSP转发和重定向的区别,以及如何获取数据
  • 原文地址:https://www.cnblogs.com/quail2333/p/11008867.html
Copyright © 2011-2022 走看看