Linux用户分类
root用户和普通用户
作为一款多用户的操作系统,Linux可以分为两种用户:root用户和普通用户。root用户即超级用户,几乎可以在Linux系统下做任何事情,不受限制;普通用户往往受到权限限制,可以做有限的事。两种用户的区别也体现在命令行提示符上,root用户的命令行提示符是'#'
,普通用户的命令行提示符是'$'
。
用户切换
使用 su [用户名]
并输入用户密码可以实现用户切换。若想从普通用户切换为root用户,可以直接使用 su
命令或者 su -
命令并输入root密码,前者可以实现直接切换为root用户,后者以root用户重新登录。
使用 exit
或者 logout
命令退出当前用户,亦可使用ctrl + D快捷键进行退出。
sudo、添加sudoers
sudo + 命令 可以以root用户的身份执行该命令,在有些情况下可以提供便利。
linux中默认普通用户不能 sudo 执行命令,除非将普通用户添加到信任白名单中:
- 首先以root身份打开/etc/sudoers文件,向下翻至最后一部分
- 这部分描述了哪些用户可以在哪些机器上可以运行哪些软件(命令),其中root 用户可以在任何地方进行任何命令。要添加 sudoers,只需要在已有的root sudoer下方添加指定用户的用户名和权限信息即可:
由于 sudoers 文件是只读文件,所以要使用 wq!
强制保存并退出。
基本文件属性
当使用 ls -l
命令列出文件信息时,每个文件都会被以下面的形式显示:
其中各个部分的意义如下:
常见文件类型
在上述第一部分文件类型和文件权限中,第一列的字母代表的是文件的类型:
linux常见的文件类型有:
- - 表示普通文件,包含文本文件、可执行程序、链接库等;
- d 表示目录文件;
- b 表示块设备文件,例如硬盘等;
- c 表示字符文件,例如屏幕、键盘等串口设备;
- s 表示套接口文件
除此之外还有一些其他不常见的文件类型,例如软链接和管道文件。
文件访问者
对于文件的访问者,分为文件拥有者(user)、所属组(group)、和其他人(others)三类用户。
拥有者即拥有文件的用户,默认为文件的创建者,可以对文件进行增删查改、设置权限等操作;所属组为拥有者指定,与拥有者处于同一协作组;除了拥有者、所属组成员之外,其他用户均为其他人(others)。
需要注意的是,判断一个用户的的访问身份时,系统从左向右进行依次判断,若身份符合,则不再向后判断。root 用户可以是文件的拥有者、所属组成员或其他人,但是 root 对文件的访问和操作不受限制。
文件权限
什么是权限
权限决定了操作是否被允许。一方面,权限认证的是身份,若用户的身份不符合,则操作被拒绝;另一方面,权限与事物的属性有关,例如任何用户都不能进入(x)一个普通文件。
基本文件权限
文件的权限有三种:读(read)、写(write)、执行(execute),分别用r、w、x表示。针对不同的文件访问者,访问文件的权限可以不同。如下图,从左到右依次表示拥有者、所属组和其他人对该文件的权限:
文件权限的修改
一个文件的权限可以被文件拥有者和 root 用户修改。
使用chmod
命令进行权限修改,第一种方式为针对每类用户进行修改:
chmod u+x,g+x,o-x a.out #针对文件a.out,为u和g添加x权限,为o减去x权限
另外可以用 1/0 表示权限有/无,三种权限就有8种组合,所以可以用一个八进制数分别表示各类用户的权限:
chmod 711 a.out #针对文件a.out,为u设置权限为rwx,为g和o设置权限为x
除修改基本权限之外,可以使用 chown [用户名] [文件]
命令转交文件,此时文件的拥有者发生变化;可以使用 chgrp [用户名] [文件]
修改所属组,此时文件的所属组发生变化。
chown zs a.out #将文件转交给zs
chgrp zs a.out #将所属组设置为zs
权限掩码(umask)
在当前机器下,当新创建一个目录文件和普通文件时,会发现其初始权限如下:
即目录文件的初始权限为 775,普通文件的初始权限为664。事实上,linux创建目录文件的默认权限为777,创建普通文件的默认权限为 666,之所以会与实际情况不同,是因为权限掩码的存在。
使用umask
命令查看当前权限掩码。权限掩码是一个八进制数,表示一组文件权限。权限掩码类似一个筛网,在权限掩码中出现的权限,在最终的文件默认权限中不会存在。为了达到这个目的,Linux会将权限掩码与默认权限进行umask & (~fault)
运算,即异或运算。
使用 umask [新掩码]
命令修改权限掩码。
目录文件的读、写、执行权限
目录文件的读、写、执行权限的具体含义分别为:
- 读:决定能否查看目录文件内部的文件情况;
- 写:决定能否在目录文件内创建、删除文件;
- 执行:决定能否进入目录文件。
粘滞位
了解目录文件的权限含义后,可以知道:一个文件能否被删除,与文件本身无关,而是取决于该文件所在目录文件的写(w)权限。现在若要在根目录下创建一个共享文件shared,使所有用户都能在其中进行操作(rwx),则需要把该shared文件的权限设置为 777 ,但此时在shared中,用户可能会出现删除其他用户的文件的情况。为了保证目录文件的共享性,同时阻止用户互删文件,需要引入一个新的权限位为粘滞位(t)。
粘滞位是给目录文件设置、针对others用户的,用户只能删除自己的文件,而不能删除其他用户的文件。设置粘滞位后,其中的各个文件只能由其拥有者或者 root 用户删除。linux根目录下的tmp目录文件便是一个默认的共享文件,具有粘滞位权限。