第五章 Linux的文件权限与目录配置

简介: 第五章 Linux的文件权限与目录配置

Linux最好的地方之一就在于他的多用户多任务环境。为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变得很重要了。Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,且三种身份各有read/write/execute等权限。

5.1 使用者与群组

1.文件拥有者

“使用者与群组”的功能是健全而好用的一个安全防护。Linux是多用户多任务系统,因此常常会有多人同时使用这部主机来工作的情况。


2.群组概念


       群组最有用的功能,就是当你在团队开发资源的时候。举例来说,假设有两组专题生在我的主机里面,第一个专题组别为projecta,里面的成员有 class1, class2, class3三个;第二个专题组别为projectb,里面的成员有class4, class5, class6。 这两个专题之间是有竞争性质的,但却要缴交同一份报告。每组的组员之间必须要能够互相修改对方的数据, 但是其他组的组员则不能看到本组自己的文件内容,此时该如何是好?


       在Linux下面这样的限制很简单。我可以经由简易的文件权限设置,就能限制非自己团队(即是群组) 的其他人不能够阅览内容。而且亦可以让自己的团队成员可以修改我所创建的文件! 同时,如果我自己还有私人隐密的文件,仍然可以设置成让自己的团队成员也看不到我的文件数据。


       另外,如果teacher这个帐号是projecta与projectb这两个专题的老师, 他想要同时观察两者的进度,因此需要能够进入这两个群组的权限时,你可以设置teacher这个帐号, “同时支持projecta与projectb这两个群组!”,也就是说:每个帐号都可以有多个群组的支持。


Linux使用者身份与群组记录的文件


       在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里面帐号、密码、群组信息的集中地。


5.2 Linux文件权限概念

5.2.1 Linux文件属性


       ls这一个察看文件的指令。在dmtsai登陆系统,然后使用su-切接身份成为root后,下达“ls-al”看看,会有下面的:

       ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为“ . ”的文件)。如上所示,在你第一次以root身份登陆Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:

这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符:(图5.2.1及图5.2.2内的权限并无关系)

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


当为[ d ]则是目录,例如上表文件名为“.config”的那一行;


当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;


若是[ l ]则表示为链接文件(link file);


若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);


若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。


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


第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;


第二组为“加入此群组之帐号的权限”;


第三组为“非本人且没有加入本群组之其他帐号的权限”。


例题:若有一个文件的类型与权限数据为“-rwxr-xr--”,请说明其意义为何?答:先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:


> [-][rwx][r-x][r--] > 1 234 567 890


1 为:代表这个文件名为目录或文件,本例中为文件(-); 234为:拥有者的权限,本例中为可读、可写、可执行(rwx); 567为:同群组使用者权限,本例中为可读可执行(rx);890为:其他使用者权限,本例中为可读(r),就是只读之意


同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。


另外,目录与文件的权限意义并不相同,这是因为目录与文件所记录的数据内容不相同所致。


第二栏表示有多少文件名链接到此节点(i-node):


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


第三栏表示这个文件(或目录)的“拥有者帐号”


第四栏表示这个文件的所属群组


在Linux系统下,你的帐号会加入于一个或多个的群组中。举刚刚我们提到的例子,class1,class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限如图5.2.2所示(-rwxrwx---), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他帐号,对于此文件就不具有任何权限了。


第五栏为这个文件的容量大小,默认单位为Bytes;


第六栏为这个文件的创建日期或者是最近的修改日期:


这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。 如下所示:

显示完整的时间格式,可以利用ls的选项,即:“ls-l--full-time"就能够显示出完整的时间格式,包括年月日的时间。另外,如果当初是以繁体中文安装Linux系统,那么日期字段将会以中文来显示。但是中文没法在纯文本的终端机模式中正确显示,所以该栏会变成乱码。所以得用”export LC_ALL=en_US.utf8“来修改语系。


如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件“/etc/locale.conf”


第七栏为这个文件的文件名


例题:假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?

答:


文件test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个帐号可以存取此文件,其他人则仅能读此文件;


另一个文件ping_tsai的拥有者为test1,而所属群组为testgroup。其中:


test1 可以针对此文件具有可读可写可执行的权力;


而同群组的test2, test3两个人与test1同样是testgroup的群组帐号,则仅可读可执行但不能写(亦即不能修改);


至于没有加入testgroup这一个群组的其他人则仅可以读,不能写也不能执行


例题:承上一题如果我的目录为下面的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?

答:


文件拥有者test1[rwx]可以在本目录中进行任何工作;


而testgroup这个群组[r-x]的帐号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;


至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!


Linux文件权限的重要性:


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


系统保护的功能: 在系统中,关于系统服务的文件通常只有root才能读写或者是执行,例如/etc/shadow这一个帐号管理的文件,由于该文件记录了系统中所有帐号的数据, 因此是很重要的一个配置文件,当然不能让任何人读取(否则密码会被窃取),只有root才能够来读取。所以该文件的权限就会成为[ ---------- ]。root基本上是不受系统的权限所限制的, 所以无论文件权限为何,默认root都可以存取。


未将权限设置妥当的危害:如果目录权限没有作好的话,可能其他人会登到你的系统。例如本来只有root才能做的开关机、ADSL的拨接程序、新增或删除使用者等等的指令,若被你改成任何人都可以执行的话, 那么如果使用者不小心给你重新开机,系统就会莫名挂掉。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
110 3
|
2月前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
53 2
|
2月前
|
存储 安全 Linux
|
12天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
38 8
|
12天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
91 7
|
2月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
172 3
|
2月前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下文件数量是常见的需求。本文介绍了四种方法:使用 `ls` 和 `wc` 组合、`find` 命令、`tree` 命令以及编程实现(如 Python)。每种方法都附有详细说明和示例,适合不同水平的用户学习和使用。掌握这些技巧,可以有效提升系统管理和日常使用的效率。
916 6
|
2月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
81 9
|
2月前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
32 1

热门文章

最新文章