我们知道一个文件中包含着三种类型的用户权限,分别是
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