• 【Linux】如何改变文件的属性与权限


      介绍几个常用于群组、拥有者、各种身份的权限的修改的命令,如下所示:

    • chgrp :改变文件所属群组
    • chown :改变文件拥有者
    • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

      1)改变所属群组chgrp

      改变一个文件的群组真是很简单的,直接以chgrp来改变即可,这个指令就是change group的缩写!不过,请记得,要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!

      假设你是以root的身份登入Linux系统的,那么在你的家目录内有一个install.log的文件,如何将该文件的群组改变一下呢?假设你已经知道在/etc/group里面已经存在一个名为users的群组,但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?

    [root@www ~]# chgrp [-R] dirname/filename ...

    选项与参数:

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录

         都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

    范例:

    [root@www ~]# chgrp users install.log

    [root@www ~]# ls -l

    -rw-r--r--  1 root users 68495 Jun 25 08:53 install.log

    [root@www ~]# chgrp testing install.log

    chgrp: invalid group name `testing' <== 发生错误讯息~找不到这个群组名~

      发现了吗?文件的群组被改成users了,但是要改成testing的时候,就会发生错误。

      2) 改变文件拥有者chown

      如何改变一个文件的拥有者呢?很简单呀!既然改变群组是change group,那么改变拥有者就是change owner!要注意的是,用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有记录的用户名称才能改变。

      chown的用途还满多的,他还可以顺便直接修改群组的名称呢!! 例如『chown .sshd install.log』就是修改群组此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上 -R 的选项即可!我们来看看语法与范例:

    [root@www ~]# chown [-R] 账号名称 文件或目录

    [root@www ~]# chown [-R] 账号名称:组名 文件或目录

    选项与参数:

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

    范例:将install.log的拥有者改为bin这个账号:

    [root@www ~]# chown bin install.log

    [root@www ~]# ls -l

    -rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

    范例:将install.log的拥有者与群组改回为root:

    [root@www ~]# chown root:root install.log

    [root@www ~]# ls -l

    -rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

             3)改变文件权限chmod

      文件权限的改变使用的是chmod这个指令。权限的设定方法有两种,分别可以使用数字或者是符号来进行权限的变更。

    • 数字类型改变文件权限

      Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

      r:4     w:2     x:1

      每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

      owner = rwx = 4+2+1 = 7
      group = rwx = 4+2+1 = 7
      others= --- = 0+0+0 = 0

      所以等一下我们设定权限的变更时,该文件的权限数字就是770!变更权限的命令chmod的语法是这样的:

    [root@www ~]# chmod [-R] xyz 文件或目录

    选项与参数:

    xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

      举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么就下达: 

    [root@www ~]# ls -al .bashrc

    -rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc

    [root@www ~]# chmod 777 .bashrc

    [root@www ~]# ls -al .bashrc

    -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

      那如果要将权限变成『 -rwxr-xr-- 』呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 !所以你需要下达『chmod 754 filename』。 另外,在实际的系统运作中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是664, 如果要将该文件变成可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:『 chmod 755 test.sh 』的指令!
      另外,如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为例如:『-rwxr-----』,那就下达『chmod 740 filename 』吧! 

    • 符号类型改变文件权限

      还有一个改变权限的方法。从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!此外,a 则代表all亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

    chmod

    u
    g
    o
    a

    +(加入)
    -(除去)
    =(设定)

    r
    w
    x

    文件或目录

      来实作一下吧!假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:

    • user (u):具有可读、可写、可执行的权限;
    • group 与 others (g/o):具有可读与执行的权限。

      所以就是:

    [root@www ~]# chmod  u=rwx,go=rx  .bashrc

    # 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格!

    [root@www ~]# ls -al .bashrc

    -rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

      那么假如是『 -rwxr-xr-- 』这样的权限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。此外,如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限,那么我就可以使用:

    [root@www ~]# ls -al .bashrc

    -rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

    [root@www ~]# chmod  a+w  .bashrc

    [root@www ~]# ls -al .bashrc

    -rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

      而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

    [root@www ~]# chmod  a-x  .bashrc

    [root@www ~]# ls -al .bashrc

    -rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

      参考资料:http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php

  • 相关阅读:
    java基础
    mysql入门
    基础整理
    遍历列表的两种方式
    oracle常用操作
    DIV+CSS网页布局技巧实例1:设置网页整体居中的代码
    html+css 淘宝首页静态页面案例
    WEB前端开发规范文档+CSS命名规范
    day05-苏宁易购导航html
    day04-html
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3665968.html
Copyright © 2020-2023  润新知