我们知道一个文件中包含着三种类型的用户权限,分别是

u代表文件的所有者

g代表文件所属的组

o代表其他用户

其中每一个类型的用户都是都rwx-组成的,如果某一类的用户的某个权限为空,则用-表示

例如 r-xr---w-:表示文件所有者的权限为rx(r-x),文件所属的组的权限为r(r--),其他用户的权限为w(-w-)


那么如何修改文件的属主和属组呢?以及文件的权限呢?

chown:可以用来修改文件的属主和属组(该命令只有管理员才有权限修改)

语法格式 chown [option] FILE..

-R:递归修改该目录及该目录下所有的文件的属主

--reference=/path/to/somefile :将某个文件的属主和属组改成和这个文件的属主属组一样


chown的另一种语法

chown USERNAME:GROUPNAME FILE..:同时改变这个文件的属主和属组

chown USERNAME.GROUPNAME FILE..:同时改变这个文件的属主和属组


改变文件属组的另一种命令

chgrp:改变文件所属的组

语法格式: chgrp [option] GROUPNAME FIEL..

-R:递归修改该目录及该目录下所有的文件的属组

--reference=/path/to/somefile :将某个文件的属组改成和这个文件的属组一样(不改变属主


修改文件的权限

chmod

1、修改这个文件的所有类型的权限

语法格式:chmod [option] MODE FILE..

-R:递归修改

--reference=/path/to/somefile:把某个文件的权限修改成和这个文件的权限一样


2、修改某类用户的权限

语法格式 chmod 用户类别=MODE FILE..

其中u表示属主,g表示属组,o表示其他用户,a表示所有类型用户

例如 chmod u=rx /tmp/abc


3、修改某个类型用户的某些位权限或某些权限

语法格式为 chmod 用户类别 +|- [rwx] FILE...

+:表示某位上增加权限

-:表示某位上减掉权限

例如:去掉/tmp/abc中的属组的x权限

chmod g-x /tmp/abc



umask:反掩码

在我们创建文件和目录时,为什么文件的默认权限为644,目录的默认权限为755,这是因为由于有反掩码umask的存在,接下来介绍一下umask的使用

语法格式 umask [八进制权限位]

如果不加任何参数,表示为显示当前用户的反掩码

指定umask后,文件和目录的权限又是如何产生的呢?

对于文件而言,文件的权限=666-umask

注意:由于文件默认不具有x执行权限,因此如果得到的权限位含有执行权限,则相应的权限位要加1

对于目录而言,目录的权限=777-umask



从用户的登陆角度来谈谈shell的类型

可以分为登录式shell和非登录式shell类型

登录式shell,以下操作称作登录式shell

    1、用户正常通过终端来登录的

    2、su - USERNAME

    3、su -l USERNAME

非登陆式shell,以下操作称为非登录式shell

    1、su USERNAME

    2、图形终端下打开的命令窗口

    3、自动执行的shell脚本

那么登陆式shell和非登陆式shell有什么区别呢?

登录式shell和非登陆式shell读取bash的配置文件的方式不同,bash配置文件里面存放了很多的环境变量和本地命令、命令别名以及运行的命令和脚本信息。因此不同的登陆方式,用户使用的资源不同。


底下来谈谈bash的配置文件

配置文件可以分为全局配置文件盒个人配置文件

全局配置文件,对所有用户生效,全局配置文件有:

    /etc/profile,/etc/profile.d/*.sh,/etc/bashrc

个人配置文件,仅对个人用户生效,个人配置文件有:

    ~/.bash_profile,~/.bashrc


根据profile类和bashrc类的文件可以再分:

profile类的文件:

    1、里面含有环境变量的设定

    2、运行命令和脚本

bashrc类文件:

    1、含有设定本地变量

    2、定义命令别名

登陆式shell是如何读取配置文件的呢?

首先读取/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc


非登陆式shell如何读取配置文件的呢?

首先读取~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh