Linux学习笔记(七)——权限管理

权限类别

在之前的内容里已经提到,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

两者的区别就在于非登录式用户没有读取环境配置文件。