文件和目录权限chmod 更改全部者和所属组chown umask 隐藏权限lsattr_chattr

2.14 文件和目录权限chmod

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

权限范围的表示法以下:vim

u User,即文件或目录的拥有者;ui

g Group,即文件或目录的所属群组;spa

o Other,除了文件或目录拥有者或所属群组以外,其余用户皆属于这个范围;.net

a All,即所有的用户,包含拥有者,所属群组以及其余用户;递归

r 读取权限,数字代号为“4”;get

w 写入权限,数字代号为“2”;class

x 执行或切换权限,数字代号为“1”;扩展

- 不具任何权限,数字代号为“0”;file

s 特殊功能说明:变动文件或目录的权限。

选项:

-f 不显示错误信息

-R 递归处理,将指令目录下的全部文件以及子目录一并处理

-v 显示指令执行过程

<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;

chmod a/u/g/o +r/w/x

<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;

chmod a/u/g/o - r/w/x

<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

chmod a/u/g/o=rwx/rw/rx/r/...

参数:

权限模式:指定文件的权限模式;

文件:要改变权限的文件。

知识扩展和实例

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

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

例:rwx rw- r--

r=读取属性  //值=4

w=写入属性  //值=2

x=执行属性  //值=1

chmod u+x,g+w f01  //为文件f01设置本身能够执行,组员能够写入的权限

chmod u=rwx,g=rw,o=r f01

chmod 764 f01

chmod a+x f01  //对文件f01的u,g,o都设置可执行属性

文件的权限根据用户分为:全部者,属组,其余。ls -l查看文件的详细信息时,第一列第一个字符表示文件类型,后面9个字符每三位一组表示权限。最后的.(点)表示受制于selinux,selinux开启时全部建立的文件都会有.在/etc/selinux/config中关闭selinux重启后建立的文件不会有.(点)

rwxrwxrwx 777

rwxr-xr-x 755

rw-r--r-- 644

chmod 777 =chmod u=rwx,g=rwx,o=rwx =chmod a=rwx

chmod 755 = chmod u=rwx,g=rx,o=rx

chmod 644 = chmod u=rw,g=r,o=r

chmod操做只针对文件或目录自己,chmod -R 目录下的文件以及子目录批量更改此权限

2.15 更改全部者和所属组chown

chown修改文件或目录的全部者,属组。用户能够是用户名或用户id;属组能够是组名或组id;目标文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员常用chown命令,在将文件拷贝到另外一个用户的目录下以后,让用户拥有使用该文件的权限。普通用户不能将本身的文件改变成其余的全部者,其操做权限通常为管理员。

1.命令格式:

    chown [选项]... [全部者][:[组]] 文件...

2.选项:

-R 目录下的文件以及子目录都修改

-v 显示详细的处理信息

--reference=<目录或文件> 按指定的目录或文件做为参考,把目标目录或文件的全部者,属组设置成和参考

文件或目录相同。

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

3.使用实例:

1.更改/tmp/file文件的全部者为gavin

[root@localhost ~]# ll /tmp/file

-rw-r--r--. 1 root root 0 6月 27 19:01 /tmp/file

[root@localhost ~]# chown gavin /tmp/file

[root@localhost ~]# ll /tmp/file

-rw-r--r--. 1 gavin root 0 6月 27 19:01 /tmp/file

2.更改/tmp/file文件的属组为gavin

chown :gavin /tmp/file

3.更改/tmp/gavin目录的全部者,属组为gavin

chown gavin:gavin /tmp/gavin

4.更改/tmp/gavin目录的全部者,属组与/tmp/zhang目录相同

chown --reference=/tmp/zhang /tmp/gavin

[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin

drwxr-xr-x. 2 root root 6 6月 27 19:09 /tmp/gavin

drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang

[root@localhost ~]# chown --reference=/tmp/zhang /tmp/gavin

[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin

drwxr-xr-x. 2 zhang zhang 6 6月 27 19:09 /tmp/gavin

drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang

5.更改/tmp/gavin目录的全部者,属组都为gavin,而且目录下的子文件,子目录也修改

chown -R gavin:gavin /tmp/gavin

6.当全部者和属组为gavin:gavin时才会修改

chown --from=gavin:gavin root:root /tmp/zhang /tmp/gavin

[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin

drwxr-xr-x. 3 gavin gavin 29 6月 27 19:12 /tmp/gavin

drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang

[root@localhost ~]# chown --from=gavin:gavin root:root /tmp/zhang /tmp/gavin

[root@localhost ~]# ll -d /tmp/zhang /tmp/gavin

drwxr-xr-x. 3 root root 29 6月 27 19:12 /tmp/gavin

drwxr-xr-x. 3 zhang zhang 43 6月 21 16:44 /tmp/zhang

chgrp命令修改文件或目录的属组:

chgrp gavin /tmp/gavin 把/tmp/gavin的属组改为gavin

chgrp -R gavin /tmp/gavin 把/tmp/gavin目录以及下面的文件,子目录的属组都改为gavin

2.16 umask

umask通常是用在初始建立一个目录或者文件的时候赋予他们的权限。

这里要说明两点:

  一、针对目录来讲x权限表明能够进入该目录,因此说对于这个权限初始赋值是没什么问题的;

  二、针对文件的x的权限表明执行,这个风险过高,因此通常权限初始赋值必须去掉x的;

查看当前umask值:

[root@localhost ~]# umask

0022

上面四个数字表明是赋值初始化准备丢弃的权限。(相对应文件来讲,x权限就算没说明出来丢弃同样必须默认丢弃)

目录:rwxrwxrwx 减相对应的值

文件:rw-rw-rw- 减相对应的值,(-减r或w或x仍然是-)

  第一个0表明suid 丢弃的权限;

  第二个0表明本文件/目录拥有者什么权限都没丢弃(若是是文件,x权限除外,为何看看上面解释);

  第三个2表明本文件/目录的用户组丢弃了w权限(若是是文件那么它的x权限也丢弃);

  第三个2表明本文件/目录的其余用户能使用的权限只有有r和x(文件除外)。

  综合上面所说若是你新建立一个文件那么它的权限是:-wr-w--w-- 便是:644

  若是你新建立一个目录的话那么它的权限是:dwrxw-xw-x 便是:755

注:不要用目录777或者文件666减对应的umask值,由于当umask=0003时,666-003=663这样是不对的,应该是rw-rw-rw- 减 -------wx 等于rw-rw-r-- =664

  若是你要修改unask的值直接:

  [root@www ~]# umask 002 >>>只在当前终端下生效

2.17 隐藏权限lsattr_chattr

有时候你发现用root权限都不能修改某个文件,大部分缘由是曾经用chattr命令锁定该文件了。chattr命令的做用很大,其中一些功能是由Linux内核版原本支持的,lsattr命令是显示chattr命令设置的文件属性。

lsattr经常使用选项:

lsattr -R 查看目录以及目录下文件是否存在隐藏权限

lsattr -d 查看目录自己

lsattr -a 查看所有文件或目录包括隐藏的。

chattr经常使用选项:

chattr +i >>>增长隐藏i权限

chattr -i >>>取消隐藏i权限

chattr +a >>>增长隐藏a权限

chattr -a >>>取消隐藏a权限

i权限:

做用在文件:文件不能删除,不能移动,不能重命名,不能touch修改时间属性,不能修改内容。不能设定

硬连接,能够建立软连接。

做用在目录:不能(删除,移动,重命名,touch修改时间)此目录,能够给此目录建立软连接。目录下的子文

件,子目录不能删除,不能移动,不能重命名,能够touch修改时间属性,能够修改已存在文件

的内容,能够给文件建立软连接和硬连接。

a权限:

做用在文件:文件不能移动,不能删除,不能重命名,不能vim直接编辑修改,不能建立硬连接;能够touch

修改时间属性,能够>>追加内容,能够建立软连接。

做用在目录:目录自己不能删除移动重命名,能够建立软连接,能够touch修改目录时间;目录下的文件以及

子目录不能移动删除重命名,能够建立目录与文件,能够修改文件内容,能够touch,能够创

建软连接和硬连接

相关文章
相关标签/搜索