chmod / chown /chattr

显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
d :第一位表示文件类型
  d 文件夹
  - 普通文件
  l 链接
  b 块设备文件
  p 管道文件
  c 字符设备文件
  s 套接口文件

 
rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
 
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
 
r-x :第8-10位表示其他用户所具有的权限

常用的linux文件权限:

444 r--r--r--
600 drw-------
644 drw-r--r--
666 drw-rw-rw-
700 drwx------
744 drwxr--r--
755 drwxr-xr-x
777 drwxrwxrwx
1、从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限。

 一共有10位数,其中:最前面那个 - 代表的是类型

  中间那三个 rw- 代表的是所有者(user)

  然后那三个 rw- 代表的是组群(group)

  最后那三个 r-- 代表的是其他人(other)

而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;

2、通过4、2、1的组合,得到以下几种权限:

0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)

以755为例:
4-6位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
7-9位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。

使用数字来进行权限管理:

r-- = 4;对应的二进制:100

-w-=2;对应的二进制: 010

--x=1;  对应的二进制:001

将对应的值相加即可进行权限管理,如:

rw-=4+2=6;

r-x=4+1=5;

rwx=4+2+1=7;

-wx=2+1=3;


3. 改变权限, chmod

权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

参数说明(cfvR):

      -c : 若该档案权限确实已经更改,才显示其更改动作

       -f : 若该档案权限无法被更改也不要显示错误讯息

       -v : 显示权限变更的详细资料

       -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更), 这个-R 用的还是很多的。

关于MODE:(都是同一种格式)

 `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.

说明:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 

二、更改文件所有权(chown命令详解) 

看一下提示信息:

复制代码
amosli@amosli-pc:~/learn/re$ chown --help
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
  or:  chown [OPTION]... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.

  -c, --changes          like verbose but report only when a change is made
      --dereference      affect the referent of each symbolic link (this is
                         the default), rather than the symbolic link itself
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         ownership of a symlink)
      --from=CURRENT_OWNER:CURRENT_GROUP
                         change the owner and/or group of each file only if
                         its current owner and/or group match those specified
                         here.  Either may be omitted, in which case a match
                         is not required for the omitted attribute
      --no-preserve-root  do not treat `/' specially (the default)
      --preserve-root    fail to operate recursively on `/'
  -f, --silent, --quiet  suppress most error messages
      --reference=RFILE  use RFILE's owner and group rather than
                         specifying OWNER:GROUP values
  -R, --recursive        operate on files and directories recursively
  -v, --verbose          output a diagnostic for every file processed

The following options modify how a hierarchy is traversed when the -R
option is also specified.  If more than one is specified, only the final
one takes effect.

  -H                     if a command line argument is a symbolic link
                         to a directory, traverse it
  -L                     traverse every symbolic link to a directory
                         encountered
  -P                     do not traverse any symbolic links (default)

      --help     display this help and exit
      --version  output version information and exit

Owner is unchanged if missing.  Group is unchanged if missing, but changed
to login group if implied by a `:' following a symbolic OWNER.
OWNER and GROUP may be numeric as well as symbolic.

Examples:
  chown root /u        Change the owner of /u to "root".
  chown root:staff /u  Likewise, but also change its group to "staff".
  chown -hR root /u    Change the owner of /u and subfiles to "root".

Report chown bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
For complete documentation, run: info coreutils 'chown invocation'
复制代码

语法格式:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

参数说明:

 必要参数:

    -c 若该档案拥有者确实已经更改,才显示其更改动作

    -f 忽略错误信息,若该档案拥有者无法被更改也不要显示错误讯息

    -h 修复符号链接,只对于连结(link)进行变更,而非该 link 真正指向的档案

    -R 处理指定目录以及其子目录下的所有文件

    -v 显示详细的处理信息

    -deference 作用于符号链接的指向,而不是链接文件本身

  选择参数:

    --reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

    --from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变

    --help 显示帮助信息

    --version 显示版本信息

常用格式:

chown user.group filename

实例:

1.将所有者改为root:

amosli@amosli-pc:~/learn/re$ ll #改之前
total 8
drwxrwxr-x 2 amosli amosli 4096 12月 27 00:18 ./
drwxrwxr-x 7 amosli amosli 4096 12月 26 22:32 ../
-rwxr-xr-x 1 amosli amosli    0 12月 27 00:18 a.txt*
复制代码
amosli@amosli-pc:~/learn/re$ sudo su 
[sudo] password for amosli: 
root@amosli-pc:/home/amosli/learn/re# chown root a.txt 
root@amosli-pc:/home/amosli/learn/re# ll   #改之后
total 8
drwxrwxr-x 2 amosli amosli 4096 12月 27 00:18 ./
drwxrwxr-x 7 amosli amosli 4096 12月 26 22:32 ../
-rwxr-xr-x 1 root   amosli    0 12月 27 00:18 a.txt*
复制代码

ll的结果返回七列,分别表示如下含义:

第一栏  [文件属性]  drwxrwxr-x

第二栏  [文件数]      2

第三栏  [拥有者]       amosli

第四栏  [所有者群组] amosli

第五栏  [大小]         4096

第六栏  [建档日期]   12月 27 00:18

第七栏  [档名]        ./

2.将整个目录下的文件的所有者都改为root

改之前:

复制代码
root@amosli-pc:/home/amosli/learn# ll
total 128
drwxrwxr-x  7 amosli amosli 4096 12月 26 22:32 ./
drwxr-xr-x 69 amosli amosli 4096 12月 26 23:55 ../
----------  1 amosli amosli    3 12月 18 22:49 a1
-rw-rw-r--  1 amosli amosli    3 12月 18 22:49 a2
-rw-rw-r--  1 amosli amosli    3 12月 18 22:49 a3
-rw-rw-r--  1 amosli amosli    0 12月 26 00:39 a.mp3
复制代码

更之后:

复制代码
root@amosli-pc:/home/amosli/learn# chown root . -R
root@amosli-pc:/home/amosli/learn# ll
total 128
drwxrwxr-x  7 root   amosli 4096 12月 26 22:32 ./
drwxr-xr-x 69 amosli amosli 4096 12月 26 23:55 ../
----------  1 root   amosli    3 12月 18 22:49 a1
-rw-rw-r--  1 root   amosli    3 12月 18 22:49 a2
-rw-rw-r--  1 root   amosli    3 12月 18 22:49 a3
-rw-rw-r--  1 root   amosli    0 12月 26 00:39 a.mp3
复制代码

三、chattr命令详解

使用chattr命令创建不可修改的文件

终端里,chattr命令的提示信息非常少,只给了一个语法格式:

root@amosli-pc:/home/amosli/learn/re# chattr --help
Usage: chattr [-RVf] [-+=AacDdeijsSu] [-v version] files...

常用语法格式:

sudo chattr +i a.txt
或者
chattr +i a.txt

实例:

复制代码
root@amosli-pc:/home/amosli/learn/re# chattr +i a.txt 
root@amosli-pc:/home/amosli/learn/re# ll
total 8
drwxrwxr-x 2 amosli amosli 4096 12月 27 01:02 ./
drwxrwxr-x 7 amosli amosli 4096 12月 26 22:32 ../
-rw-r--r-- 1 root   root      0 12月 27 01:02 a.txt
root@amosli-pc:/home/amosli/learn/re# rm a.txt 
rm: cannot remove `a.txt': Operation not permitted
复制代码

使用chattr命令更改的权限即使是chmod命令也不能更改文件现有权限,如下:

root@amosli-pc:/home/amosli/learn/re# chmod 777 a.txt 
chmod: changing permissions of `a.txt': Operation not permitted
root@amosli-pc:/home/amosli/learn/re# chmod a+rwx a.txt 
chmod: changing permissions of `a.txt': Operation not permitted

但是如果文件要重新获取可写应该怎么办呢??

如下,chattr -i a.txt即可

复制代码
root@amosli-pc:/home/amosli/learn/re# chattr -i a.txt 
root@amosli-pc:/home/amosli/learn/re# ll
total 8
drwxrwxr-x 2 amosli amosli 4096 12月 27 01:02 ./
drwxrwxr-x 7 amosli amosli 4096 12月 26 22:32 ../
-rw-r--r-- 1 root   root      0 12月 27 01:02 a.txt
root@amosli-pc:/home/amosli/learn/re# chmod a+rwx a.txt 
root@amosli-pc:/home/amosli/learn/re# ll
total 8
drwxrwxr-x 2 amosli amosli 4096 12月 27 01:02 ./
drwxrwxr-x 7 amosli amosli 4096 12月 26 22:32 ../
-rwxrwxrwx 1 root   root      0 12月 27 01:02 a.txt*
原文地址:https://www.cnblogs.com/bingyublog/p/7985966.html