当前位置 : 主页 > 编程语言 > c语言 >

Linux权限

来源:互联网 收集:自由互联 发布时间:2023-09-03
Linux用户分类 root用户和普通用户 作为一款多用户的操作系统,Linux可以分为两种用户:root用户和普通用户。root用户即超级用户,几乎可以在Linux系统下做任何事情,不受限制;普通用

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文件,向下翻至最后一部分

Linux权限_文件属性

  • 这部分描述了哪些用户可以在哪些机器上可以运行哪些软件(命令),其中root 用户可以在任何地方进行任何命令。要添加 sudoers,只需要在已有的root sudoer下方添加指定用户的用户名和权限信息即可:

Linux权限_sudoers_02

由于 sudoers 文件是只读文件,所以要使用 wq! 强制保存并退出。


基本文件属性

当使用 ls -l 命令列出文件信息时,每个文件都会被以下面的形式显示:

Linux权限_文件权限_03

其中各个部分的意义如下:

Linux权限_权限掩码_04

常见文件类型

在上述第一部分文件类型和文件权限中,第一列的字母代表的是文件的类型:

Linux权限_sudoers_05

linux常见的文件类型有:

  • - 表示普通文件,包含文本文件、可执行程序、链接库等;
  • d 表示目录文件;
  • b 表示块设备文件,例如硬盘等;
  • c 表示字符文件,例如屏幕、键盘等串口设备;
  • s 表示套接口文件

除此之外还有一些其他不常见的文件类型,例如软链接和管道文件。

文件访问者

对于文件的访问者,分为文件拥有者(user)、所属组(group)、和其他人(others)三类用户。

拥有者即拥有文件的用户,默认为文件的创建者,可以对文件进行增删查改、设置权限等操作;所属组为拥有者指定,与拥有者处于同一协作组;除了拥有者、所属组成员之外,其他用户均为其他人(others)。

需要注意的是,判断一个用户的的访问身份时,系统从左向右进行依次判断,若身份符合,则不再向后判断。root 用户可以是文件的拥有者、所属组成员或其他人,但是 root 对文件的访问和操作不受限制。


文件权限

什么是权限

权限决定了操作是否被允许。一方面,权限认证的是身份,若用户的身份不符合,则操作被拒绝;另一方面,权限与事物的属性有关,例如任何用户都不能进入(x)一个普通文件。

基本文件权限

文件的权限有三种:读(read)、写(write)、执行(execute),分别用r、w、x表示。针对不同的文件访问者,访问文件的权限可以不同。如下图,从左到右依次表示拥有者、所属组和其他人对该文件的权限:

Linux权限_粘滞位_06

文件权限的修改

一个文件的权限可以被文件拥有者和 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)

在当前机器下,当新创建一个目录文件和普通文件时,会发现其初始权限如下:

Linux权限_权限掩码_07

即目录文件的初始权限为 775,普通文件的初始权限为664。事实上,linux创建目录文件的默认权限为777,创建普通文件的默认权限为 666,之所以会与实际情况不同,是因为权限掩码的存在。

使用umask命令查看当前权限掩码。权限掩码是一个八进制数,表示一组文件权限。权限掩码类似一个筛网,在权限掩码中出现的权限,在最终的文件默认权限中不会存在。为了达到这个目的,Linux会将权限掩码与默认权限进行umask & (~fault)运算,即异或运算。

使用 umask [新掩码] 命令修改权限掩码。

目录文件的读、写、执行权限

目录文件的读、写、执行权限的具体含义分别为:

  • 读:决定能否查看目录文件内部的文件情况;
  • 写:决定能否在目录文件内创建、删除文件;
  • 执行:决定能否进入目录文件。

粘滞位

了解目录文件的权限含义后,可以知道:一个文件能否被删除,与文件本身无关,而是取决于该文件所在目录文件的写(w)权限。现在若要在根目录下创建一个共享文件shared,使所有用户都能在其中进行操作(rwx),则需要把该shared文件的权限设置为 777 ,但此时在shared中,用户可能会出现删除其他用户的文件的情况。为了保证目录文件的共享性,同时阻止用户互删文件,需要引入一个新的权限位为粘滞位(t)。

粘滞位是给目录文件设置、针对others用户的,用户只能删除自己的文件,而不能删除其他用户的文件。设置粘滞位后,其中的各个文件只能由其拥有者或者 root 用户删除。linux根目录下的tmp目录文件便是一个默认的共享文件,具有粘滞位权限。

Linux权限_文件属性_08

网友评论