权限类别
在之前的内容里已经提到,Linux的权限分为以下三种:
- r – read – 读取
- w – write – 写入
- x – execute – 执行
而每一个文件或者目录,又为三种用户类别设置了分别设置了权限:
- u – user – 属主
- g – group – 属组
- o – other – 其他用户
因此,就有了Linux下的9位一组的权限。
权限管理
下面这些命令,可以实现对文件的权限管理操作,
chown 改变属主
chwon是change owner的缩写,因为只有管理员才具有改变属主的权限,因此这条命令只能由管理员执行。
chown USERNAME file1,…
-R 递归调用,也修改目录内部的属主
–reference=/path/to/somefile file1,.. 把文件的属主设置为与somefile相同(不再需要用户名)
chmod 改变权限
chmod是change mode的缩写,可以改变文件和目录的权限,在参数中可以使用u, g, o指定具体的权限类别,此外还可以用a来代表所有用户。指定权限类别之后,可以使用等于号(=)指定具体权限,加减号(+-)增加或取消权限。
例如:
chmod ug=rx,o=w file1
会为属主和属组赋予读取和执行的权限,而为其他用户赋予写入的权限。因此这条命令执行以后,file1的权限就会变成r-xr-x-w-
了
chmod ug+w, o-w file1
会为属主和属组增加写入的权限,而为其他用户取消写入的权限。因此这条命令执行以后,file1的权限则会变成rwxrwx---
chomd a=rw file1
会为所有用户赋予写入和读取权限,因此file1的权限会变成rw-rw-rw-
umask 遮罩码
创建新文件时,在未指定文件的权限的情况下,系统会为文件设置默认的权限,而默认权限则根据三位数字的遮罩码(umask)计算得出。
文件默认权限为666减去遮罩码
目录默认权限则为777减去遮罩码
文件默认是不能具有执行权限的,如果遮罩码算得的结果中恰好具有执行权限,则系统将会自动将其权限加1。
使用umask命令可以设置创建文件的默认权限,不带参数执行则会显示当前的umask
用户登录
站在用户登录的角度来说,Shell的类型分为登录式Shell和非登录式Shell两种。
登录式Shell包括:
- 正常通过某终端登录
- 使用
su - USERNAME
切换进入的用户 - 使用
su -l USERNAME
切换进入的用户
而非登录式Shell包括:
- 使用
su USERNAME
切换进入的用户 - 图形终端下打开的命令窗口
- 自动执行的Shell脚本
这两种Shell的差别体验在配置文件的加载方式上。
bash的配置文件分别保存在以下位置
全局配置
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
个人配置
~/.bash_profile
~/.bashrc
其中配置文件根据保存的内容又分为:
profile类文件:
- 设定环境变量
- 运行命令或脚本
bashrc类文件:
- 设定本地变量
- 定义命令别名
对于登录式Shell读取配置文件的顺序为
/etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc
而非登录式shell读取配置文件的顺序为
~/.bashrc /etc/brshrc /etc/profile.d/*.sh
两者的区别就在于非登录式用户没有读取环境配置文件。