一)首先要明白三个概念
1)文件所有者
2)用户组
Q:如何知道自己当前所属的用户组?
3)其他人
这三个概念很好理解,不再多说,需要记住以下几点
1)这么划分的好处,很方便的设置权限(因为Linux是多用户的,所以如何控制不同用户的权限非常的重要)
2)每个账号可以有多个用户组的支持(这样它就能同时具有这两个用户组的权限)
3)Linux用户身份与用户组记录的文件
默认情况下,用户的相关记录都记录在/etc/password这个文件内。个人的密码记录在/etc/shadow
Linux所有的组名都记录在/etc/group下
二)Linux文件属性
下面这个图,是典型的执行ls -al命令结果,从结果中,可以很清楚的看到linux属性
[root@www ~]# ls -al total 156 drwxr-x--- 4 root root 4096 Sep 8 14:06 . drwxr-xr-x 23 root root 4096 Sep 8 14:21 .. -rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg -rw------- 1 root root 199 Sep 8 17:14 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=范例说明处 drwx------ 2 root root 4096 Sep 5 14:09 .gconfd -rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=范例说明处 -rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog [ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ] [ 权限 ][连结][拥有者][群组][文件容量][ 修改日期 ][ 檔名 ] |
现在我们简单的讲一下上面7列中的第一列含义(其他6列一看名字就知道了,没什么好讲的)
第一列由10个字符组成,其中第一个字符代表这个文件的类型,后面9个字符每3个为一组,且是“rwx”这3个参数的组合(记住,rwx3者的顺序不能改变,换句话说,第一个要么是r,要么啥都没有,不能是w或者x),分别代表着“文件所有者的权限”、“同用户组的权限”、“其他非本用户组的权限”
第一个字符呢,具体代表的含义如下:
d:代表是目录
-:代表是文件
l:代表是连接文件
b:代表设备文件里可供存储的接口设备
c:代表设备文件里面的串行端口设备。如键盘,鼠标等
而对于权限而言,每3个为一组
三)如何改变文件的属性与权限
在第二部分我们已经知道了文件的属性与权限的意义,那么如何改变呢,下面这3个命令主要用于改变文件的所有者,所属用户组以及权限(这些命令需要在root下才可以)
chgrp:改变文件所属用户组
chgrp [-R] groupname dirname/filename
R:means Recursive。代表进行递归的持续更改,也就是连同子目录下所有目录和文件都一起改了
chown:改变文件所有者
chown [-R] username dirname/filename
Q:为什么我们需要修改文件的所有者和用户组?
A:一般情况下,我们确实不需要修改,但是在诸如复制文件操作时(cp 源文件 目标文件)时,会出现问题,因为复制操作会把权限与属性一同复制,如果一个文件复制后的所有者是root,且不运行其他人修改,那么你复制之后又有何用呢??
chmod:改变文件的权限
有两种方式,一种是用数字,一种是使用符号来修改文件的权限。
1)数字类型修改权限。
rwx这三个符号分布代表,读,写,执行,在数值中,分布被赋予以下的值
r:4
w:2
x:1
所以 chomd [-R] xyz 文件或者目录
其中:xyz可以代表775等(775==rwxrwx-wx)
2)符号类型修改权限
在这种方式中Linux分别用u,g,o,a代表文件所有者、用户组、其他人、所有人
+代表加入权限
-代表除去权限
=代表设置权限
chmod |
u |
+(加入) |
r |
文件或目录 |
来实作一下吧!假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:
[root@www ~]# chmod u=rwx,go=rx .bashrc |
用符号的好处就是,可以很轻松的再不值得某个文件的前提下,给文件加入或者除去权限,或者只加入或除去某个权限且不影响其他已有权限,比如:
[root@www ~]# chmod a-x .bashrc |
上面这则将隐藏文件bashrc的执行权限除去,言外之意是这个文件不允许执行(root也不行)。
四)权限之于目录和文件的意义?
1)权限对文件的意义
r:代表可读取文件的实际内容
w:代表可以编辑、新增或者修改文件的内容(但是不包含删除文件)
x:代表该文件具有可以被系统执行的权限。
记住一点:与windows不同,在Linux中判断一个文件是否可以执行,不是根据后缀名(如.exe ,.bat,.com),而是有这个文件是否具有“x”权限决定的。
2)权限对目录的意义
r:代表具有读取目录结构列表的权限(你可以使用ls命令将目录下的所有列表读出来)
w:这个权限对目录来说可是很大的,表示你具有更改该目录结构列表的权限
主要有:新建新的文件与目录
删除已经存在的文件或者目录(无论文件的权限是怎样的),知道怎么删除文件了吧????
将已经存在的文件或者目录重命名
转移该目录内的文件、目录位置
x:目录虽然不可以被拿来执行,但是目录的x代表的是用户能否进入该目录成为工作目录的用途。(所谓工作目录就是你当下的目录,也就是时候,如果目录不具有x权限,那么你就不能通过cd命令进入到该目录下工作)。
Linux的单一文件或者目录的最大容许文件名为255个字符
包含完整路径名记(/)的完整文件名为4096个字符。
五)Linux目录配置
由于基于linux的系统太多了,如RedHat 、CentOS,Ubuntu等等,总不能每个系统都有一段自己的目录设置吧,那岂不是要命了,因此呢,就有一个标准,叫做FHS(Filesystem Hierarchy Standarad)
FHS依据文件系统使用的频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
|
可分享的(shareable) |
不可分享的(unshareable) |
不变的(static) |
/usr (软件放置处) |
/etc (配置文件) |
|
/opt (第三方协力软件) |
/boot (开机与核心档) |
可变动的(variable) |
/var/mail (使用者邮件信箱) |
/var/run (程序相关) |
|
/var/spool/news (新闻组) |
/var/lock (程序相关) |
上表中的目录就是一些代表性的目录,该目录底下所放置的数据在底下会谈到,这里先略过不谈。我们要了解的是,什么是那四个类型?
- 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录;
- 不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
- 不变的:有些数据是不会经常变动的,跟随着distribution而不变动。例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
- 可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关;一定要注意其子目录也有一个root目录,与这个完全不同,不要混为一谈,也就是说根目录就是/
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关。
- 根目录 (/) 的意义与内容:
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关
FHS标准建议:根目录(/)所在分割槽应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分割槽内,保持根目录越小越好。如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。
有鉴于上述的说明,因此FHS定义出根目录(/)底下应该要有底下这些次目录的存在才好:
目录 |
应放置文件内容 |
/bin |
系统有很多放置执行文件的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin底下的指令可以被root与一般账号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot |
这个目录主要在放置开机会使用到的文件,包括Linux核心文件以及开机选单与开机所需配置文件等等。 Linux kernel常用的档名为:vmlinuz,如果使用的是grub这个开机管理程序,则还会存在/boot/grub/这个目录喔! |
/dev |
在Linux系统上,任何装置与接口设备都是以文件的型态存在于这个目录当中的。你只要透过存取这个目录底下的某个文件,就等于存取某个装置啰~比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等 |
/etc |
系统主要的配置文件几乎都放置在这个目录内,例如人员的账号密码文件、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的,但是只有root有权力修改。FHS建议不要放置可执行文件(binary)在这个目录中喔。比较重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目录有: · /etc/init.d/:所有服务的预设启动 script 都是放在这里的,例如要启动或者关闭 iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』 · /etc/xinetd.d/:这就是所谓的super daemon管理的各项服务的配置文件目录。 · /etc/X11/:与 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server 的配置文件。 |
/home |
这是系统默认的用户家目录(home directory)。在你新增一个一般使用者账号时,默认的用户家目录都会规范到这里来。比较重要的是,家目录有两种代号喔: |
/lib |
系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已。什么是函式库呢?妳可以将他想成是『外挂』,某些指令必须要有这些『外挂』才能够顺利完成程序的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模块(驱动程序)喔! |
/media |
media是『媒体』的英文,顾名思义,这个/media底下放置的就是可移除的装置啦! 包括软盘、光盘、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy, /media/cdrom等等。 |
/mnt |
如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了。 |
/opt |
这个是给第三方协力软件放置的目录。什么是第三方协力软件啊?举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。另外,如果妳想要自行安装额外的软件(非原本的distribution提供的),那么也能够将你的软件安装到这里来。不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢! |
/root |
系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分割槽中。 |
/sbin |
Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来『设定』系统,其他用户最多只能用来『查询』而已。 放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。 至于某些服务器软件程序,一般则放置到/usr/sbin/当中。至于本机自行安装的软件所产生的系统执行文件(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
/srv |
srv可以视为『service』的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。 |
/tmp |
这是让一般使用者或者是正在执行的程序暂时放置文件的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录啊!因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除唷! |
除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?有底下这些:
- /etc:配置文件
- /bin:重要执行档
- /dev:所需要的装置文件
- /lib:执行档所需的函式库与核心所需的模块
- /sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分割槽!请背下来啊!
目录树(directory tree)
另外,在Linux底下,所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头~然后再一个一个的分支下来,有点像是树枝状啊~因此,我们也称这种目录配置方式为:『目录树(directory tree)』这个目录树有什么特性呢?他主要的特性有:
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说,可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意喔!因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如 /home/dmtsai/.bashrc;
- 相对路径:相对于目前路径的文件名写法。例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
而你必须要了解,相对路径是以『你当前所在路径的相对位置』来表示的。举例来说,你目前在 /home 这个目录下,如果想要进入 /var/log 这个目录时,可以怎么写呢?
- cd /var/log (absolute)
- cd ../var/log (relative)
因为你在 /home 底下,所以要回到上一层 (../) 之后,才能继续往 /var 来移动的!特别注意这两个特殊的目录:
- . :代表当前的目录,也可以使用 ./ 来表示;
- .. :代表上一层目录,也可以 ../ 来代表。
这个 . 与 .. 目录概念是很重要的,你常常会看到 cd .. 或 ./command 之类的指令下达方式,就是代表上一层与目前所在目录的工作状态喔!很重要的吶!
相关推荐
Linux 文件权限与目录配置 Linux 操作系统中,文件权限和目录配置是非常重要的安全防护机制。Linux 是一个多用户多任务的操作系统,可以允许多个用户同时使用Linux。Linux 的用户及群组功能是相当健全好用的一个...
在Linux操作系统中,文件权限和目录配置是管理系统的基石,它们决定了用户对文件和目录的操作权限。本章主要探讨了4个关键知识点:文件属性、文件与目录操作、文件操作命令以及文本查看命令。 首先,文件属性是...
通过对Linux文件目录权限和属性的学习与实践,我们不仅可以更好地管理系统的安全性和稳定性,还能根据不同的应用场景灵活调整文件的访问控制策略。希望本文能够帮助大家更加深入地理解和掌握这些重要的基础知识。
### Linux文件权限对象分类 Linux中的文件权限主要针对以下三类对象: 1. **User(文件拥有者)**:指创建文件或目录的用户,对文件具有最高的控制权。 2. **Group(文件拥有者所在组)**:除了文件拥有者之外,同...
### Linux 下为目录和文件设置权限,包括子目录的循环递归设置 #### 知识点一:Linux 文件权限概述 在 Linux 操作系统中,文件权限管理是至关重要的安全特性之一。通过权限管理,我们可以控制不同用户对文件或目录...
适合Linux初学者。
Linux 文件权限设置技巧 Linux 操作系统中的文件权限设置是非常重要的安全机制之一。正确的文件权限设置可以有效地防止未经授权的访问和修改,从而保护系统和数据的安全。在 Linux 中,每个文件都有一个所有者和一...
### Linux 文件权限理解 #### 一、用户与组群管理 在 Linux 系统中,用户的账号信息主要存储于 `/etc/passwd` 文件内,包括一般用户和超级用户(root)的相关信息。每个用户的密码信息则单独保存在 `/etc/shadow` ...
本章将深入探讨Linux文件权限的概念、查看权限的方法以及如何通过命令来设置这些权限。 5.1 文件权限 文件权限定义了不同用户对文件或目录的访问类型,包括读(read)、写(write)和执行(execute)。每个文件或...
了解和熟练掌握这些基础的Linux文件权限操作,对于管理和维护Linux系统至关重要,特别是在部署和配置服务、容器化技术如Docker时。理解文件权限有助于确保系统的安全性和不同用户之间的协作效率。在学习Docker的过程...
设置Linux文件权限通常涉及以下步骤: 1. **检查系统核心支持**:首先,确保你的Linux内核支持ACL功能。通过查看 `/boot/config-kernel-version` 文件中有关EXT3文件系统的配置项,如 `CONFIG_EXT3_FS_ACL`,确认...
本文着重从文件权限配置的角度探讨了Linux操作系统中文件安全的问题,并强调了开发人员在编程过程中需要注意文件权限的设定,以防文件与数据遭受破坏。通过一个简单的实例说明了该问题并提出了相应的解决方案。 ###...
本实验旨在掌握 Linux 文件系统权限的设置、Linux 用户帐号与组管理、Linux 文件共享的设置方法和权限设置方法。实验中,我们将学习如何设置权限,使得文件夹和文件可以被特定的用户或组访问和修改。 一、权限管理 ...
Linux 的文件权限管理方式还可以通过 suid 和 guid 来设置文件或目录的所有者和组所有者。suid 和 guid 可以改变文件或目录的所有者和组所有者,例如,chown 用户名 文件名 可以将文件的所有者设置为指定的用户,...
Linux 系统权限管理文件特殊权限是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限。本学习教案将详细介绍 Linux 系统权限管理文件特殊权限的概念、类型、作用和使用方法。 ACL 权限 ACL...
Linux 文件系统与文件管理实验报告 Linux 操作系统是一种广泛使用的操作系统,它提供了强大的文件系统管理功能。本实验报告将对 Linux 文件系统和文件管理进行详细的介绍。 一、实验项目:用户与组管理 Linux ...
Linux 操作系统文件权限设置是 Linux 系统安全的关键。Linux 操作系统提供了认证和访问控制机制,文件系统是 Linux 系统安全的核心。文件权限是 Linux 文件系统安全的关键。开发人员在编程时应注意对文件权限的设置...
中标麒麟Linux文件权限管理和归属管理技术创新 中标麒麟Linux服务器操作系统文件权限管理和归属管理是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限和所有权。本章将详细介绍中标麒麟Linux...
Linux文件权限防护是确保系统安全的关键措施,尤其是在一个多用户环境中,如服务器系统。在Linux中,每个文件和目录都有特定的属性,主要包括文件类型和文件权限。这些属性决定了用户对文件的操作权限,防止未经授权...
Linux 文件权限详解 Linux 操作系统中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一...