Linux用户及权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用户及权限管理相关的知识,希望对你有一定的参考价值。

接触过Linux系统的人都知道Linux系统都是由文件组成的。那我们就应该意识到关于文件权限的重要性。下面详细介绍一下:

博文大纲:

  • 用户与用户组;
  • Linux文件权限的重要性;
  • 文件与目录的默认权限与隐藏权限;
  • 文件特殊权限;

一、用户与用户组

我们来通过一张图片,来详细了解一下用户与用户组之间的关系:
技术图片
通过这张图片就可以详细的了解用户与用户组之间的关系!

我们通过浏览/root目录下的文件来了解一下每个文件各个部分的内容:

技术图片

(1)第一栏代表这个文件的类型与权限

这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符,每个字符的含义,如图:
技术图片

第一个字符代表这个文件是『目录、文件或链接文件等等』:

  • 若是[ d ]则是目录,例如上表文件名为“.config”的那一行;
  • 若是[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;
  • 若是[ l ]则表示为链接文件(link file);
  • 若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);
  • 若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备);

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。『rwx』也可以用数字4、2、1来表示

  • 第一组为『文件拥有者可具备的权限』,以『initial-setup-ks.cfg』那个文件为例, 该文件的拥有者
    可以读写,但不可执行;
  • 第二组为『加入此群组之账号的权限』;
  • 第三组为『非本人且没有加入本群组之其他账号的权限』。

(2)第二栏表示有多少档名连结到此节点(i-node) :

每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个 i-node 啰!这个属性记录的,就是有多少不同的档名连结到相同的一个 i-node 号码去就是了。

(3)第三栏表示这个文件(或目录)的{拥有者账号}

(4)第四栏表示这个文件(或目录)的所属群组

(5)第五栏为这个文件的容量大小,默认单位为 bytes

(6)第六栏为这个文件的建档日期或者是最近的修改日期

(7)第七栏为这个文件的档名

二、Linux文件权限的重要性

与 Windows 系统不一样的是,在 Linux 系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在『数据安全性』上面的。

Linux文件权限的重要性主要包含这几个方面:

  • 系统保护的功能;
  • 团队开发软件和数据共享的功能;
  • 未将权限设定妥当的危害;

因此在设置目录的权限和属性时,一定要注意: 什么数据是可变的,什么是不可变的!

三、如何改变文件属性与权限

我们现在知道文件权限对于一个系统的安全重要性了,也知道文件的权限对于使用者与群组的相关性,那么如何修改一个文件的属性与权限呢?又!有多少文件的权限我们可以修改呢? 其实一个文件的属性与权限有很多!我们先介绍几个常用于群组、拥有者、各种身份的权限之修改的指令,如下所示:

  • chgrp :改变文件所属群组;
  • chown :改变文件拥有者;
  • chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性;

关于如何修改文件的拥有者、群组、权限这些问题,实在是太简单了,所以这里就不多做介绍了!

四、目录和文件之权限意义

现在我们知道了 Linux 系统内文件的三种身份(拥有者、群组与其他人),知道每种身份都有三种权限(rwx), 已知道能够使用 chown, chgrp, chmod 去修改这些权限与属性,当然,利用 ls -l 去观察文件也没问题。

1) 权限对文件的重要性

文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件等等。因此,权限对于文件来说,它的意义是这样的:

  • r(read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  • x (eXecute):该文件具有可以被系统执行的权限。

在Windows系统下,文件的扩展名会起到作用,但是,在LInux系统中,文件的扩展名是不起任何作用的!

2)权限对目录的重要性

文件是存放实际数据的所在,那么目录主要是储存啥玩意啊?目录主要的内容在记录文件名列表,文件名与目录有强烈的关连啦!

  • r (read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来;
  • w (modify contents of directory):这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
    ① 建立新的文件与目录;
    ② 删除已经存在的文件与目录(不论该文件的权限为何!)
    ③ 将已存在的文件或目录进行更名;
    ④ 搬移该目录内的文件、目录位置。

总之,目录的 w 权限就与该目录底下的文件名异动有关就对了啦!

  • x (access directory):咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的 x 代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你
    目前所在的目录啦!举例来说,当你登入 Linux 时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!

详细介绍,大家看的有点费劲,故意总结成一个表,供大家参考:
技术图片

3)用户操作功能与权限

通过表的形式了解一下:
技术图片

五、文件与目录的默认权限与隐藏权限

我们都知道新建的文件权限是644;新建的目录的权限是755。那么大家知道这些权限是怎么来的吗?
那是因为文件的默认权限是666;目录的默认权限是777;

[root@localhost ~]# umask
0022

用文件或目录的默认权限减去umask值,便是新建文件或目录的权限,至于如何修改这个umask值,方法如下:

[root@localhost ~]# umask 111
[root@localhost ~]# umask
0111

umask值的第一位是特殊权限,这里先忽略!

1)隐藏权限

可以使用chattr命令进行设置;使用lsattr可以查看文件或目录的隐藏权限;

chattr命令的常用参数有:

    • 在原有参数设定基础上,追加参数;
    • 在原有参数设定基础上,移除参数;
  • = 更新为指定参数设定;
  • A 文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生;
  • S 硬盘I/O同步选项,功能类似sync;
  • a 即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性;
  • c 即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作;
  • d 即no dump,设定文件不能成为dump程序的备份目标;
  • i 设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助;
  • j 即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效;
  • s 保密性地删除文件或目录,即硬盘空间被全部收回;
  • u 与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion;

lsattr命令的常用参数有:

  • -a :将隐藏文件的属性也列出来;
  • -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
  • R :连同子目录的数据也一并列出来!

2)文件特殊权限

文件 的特殊权限分为:SUID、SGID、SBIT。

SUID的权限对一个文件的特殊权限:

  • SUID权限仅对二进制程序有效;
  • 执行这对于该程序需要具有x的可执行权限;
  • 本权限仅在执行程序的过程中有效;
  • 执行者经具有该程序拥有者的权限;

注意:SUID仅针对文件,不可以针对目录!

SGID的功能:

  • SGID对二进制程序有用;
  • 程序执行者对于该程序来说,需具有x的权限;
  • 执行者在执行的过程中将会获得该程序群组的权限;

注意:SGID可以针对文件,也可针对目录!

SBIT对于目录的作用:

  • 当使用者对于此目录具有w、x权限,具有写入的权限;
  • 当使用者在该目录下创建文件或目录是,仅是自己与root才有权利删除该文件;

注意:SBIT仅针对目录有效!

关于文件或目录的权限就简单介绍这么多!

———————— 本文至此结束,感谢阅读 ————————

以上是关于Linux用户及权限管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux用户及文件权限管理

linux用户及权限管理

linux系统账号及权限管理!

用户权限及用户管理命令

Linux 用户及权限管理

Linux 用户用户组及权限管理