使用者和群组
- 使用者。就是文件的拥有者,通过对文件权限的授予来划分使用者的类别,一些使用者对文件只有读或写的权限,而对于管理员则对文件既有只读和只写还有读写的权限,通过权限划分使用者,能让系统运行更为安全高效,对于某些用户起到隐私隔离的效果
- 群组。即在同一个Group中的所有用户共享其文件,而每个组之间又相互独立,即各组的权限共享范围不一,所以当设置该用户在群组内的文件权限时,同一群组下的其他用户即可对该文件进行操作
- 其他人。即others,是Linux系统中除了文件的拥有者、群组以外的用户称为others
文件权限
Linux 文件属性
通过在root用户下,终端执行
su -al
,显示以下文件信息:- 第一列为文件类型权限
- 第二列的数字为该文件的连接数,目录树就是通过该数字把文件链接起来的
- 第三列为文件的拥有者
- 第四列为文件所在群组
- 第五列为文件最后更改时间
- 第六列为文件名
文件类型与属性图
关于第一个字符含义:
当为
[ d ]
则是目录,例如上表文件名为.config
的那一行; 当为
[ - ]
则是文件,例如上表文件名为initial-setup-ks.cfg
那一行; 若是
[ l ]
则表示为链接文件(link file); 若是
[ b ]
则表示为设备文件里面的可供储存的周边设备(可随机存取设备); 若是
[ c ]
则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设 备)关于第2、3、4个字符含义(三个一组来解释):
以三个为一组,且均为
rwx
的三个参数的组合。其中,[ r ]
代表可读 、[ w ]
代表可写、[ x ]
代表可执行。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]
而已。后面5-7和8-10的含义与2、3、4一致,只是一个表示文件所在群的权限,一个是others的权限
改变文件属性权限
chgrp
:改变文件所属群组chown
:改变文件拥有者chmod
:改变文件的权限, SUID, SGID, SBIT等等的特性- 改变所属群组,
chgrp
改变所属群组 chgrp
- 例如:
chgrp users initial-setup-ks.cfg
第二位为群组名 第三位为文件名
改变文件拥有者 chown
- 例如:
chown bin initial-setup-ks.cfg
第二位为文件拥有者名 第三位为文件名
改变文件权限 chmod
- 例如:
chown 777 .bashrc
第二位的三个数字分别代表(owner/group/others)的只读、只写、读写权限 第三位为文件名 - 关于权限位数:
- rwx,其中r=4(read),w=2(write),x=1(execute)
owner = rwx = 4+2+1 = 7 > group = rwx = 4+2+1 = 7 > others= —- = 0+0+0 = 0
- 也可以用字符改变各种使用者
- u 代表user
- g 代表group
- o 代表others
- 例如:
[root@study ~]# chmod u=rwx,go=rx .bashrc
目录文件权限意义
对文件而言
- r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等
- w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件)
- x (execute):该文件具有可以被系统执行的权限
对目录而言
r (read contents in directory)
- 表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。
w (modify contents of directory)
- 表示可以创建新的文件与目录;删除已经存在的文件与目录(不论该文件的权限为何!)将已存在的文件或目录进行更名;搬移该目录内的文件、目录位置。
x (access directory)
- 目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登陆Linux时,你所在的主文件夹就是你当下的工作目录。
Linux文件种类
正规文件
即是一般我们在进行存取的类型的文件,在由
ls -al
所显示出来的属性方面,第一个字符为[ - ],例如 [-rwxrwxrwx ]
- 纯文本文件ASCII
- 二进制文件binary
- 数据格式文件data
目录directory
链接文件link file
设备与设备文件device
Linux扩展名
*.sh
: 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成的,所以扩展名就编成.sh
;Z, .tar, .tar.gz, .zip, *.tgz
: 经过打包的压缩文件。这是因为压缩软件分别为gunzip, tar
等等的,由于不同的压缩软件,而取其相关的扩展名!.html, .php
:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件! .html 的文件可使用网页浏览器来直接打开,至于.php
的文件, 则可以通过 client 端的浏览器来server 端浏览,以得到运算后的网页结果!
Linux 目录配置
- 基本的三层目录
/
(root, 根目录):与开机系统有关;/usr
(unix software resource):与软件安装/执行有关;/var
(variable):与系统运行过程有关。
所有的Linux目录配置都是基于FHS的,即文件系统继承标准Filesystem Hierarchy Standard
第一部分FHS(必须要存在的!!)
目录 | 放置内容 |
---|---|
/bin | 系统有很多 ==放置可执行文件的目录== ,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。 在/bin下面的指令可以被root与一般帐号所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot | 这个目录主要在 ==放置开机会使用到的文件== ,包括Linux核心文件以及开机菜单与开机所需配置文件等等。 Linux kernel常用的文件名为:vmlinuz,如果使用的是grub2这个开机管理程序, 则还会存在/boot/grub2/这个目录喔! |
/dev | 在Linux系统上,任何设备与周边设备都是以文件的型态存在于这个目录当中的。 比如重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/loop, /dev/sd等等 |
/etc | ==系统主要的配置文件== 几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各文件属性是可以让一般使用者查阅的, 但是只有root有权力修改。 |
/lib | 系统的函数库非常的多,而/lib放置的则是在 ==开机时会用到的函数库== , 以及在/bin或/sbin下面的指令会调用的函数库而已。 什么是函数库呢?你可以将他想成是“外挂”,某些指令必须要有这些“外挂”才能够顺利完成程序的执行之意。 |
/mnt | 如果你想要 ==暂时挂载某些额外的设备== ,一般建议你可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦!只是有了/media之后,这个目录就用来暂时挂载用了 |
/opt | 这个是 ==给第三方协力软件放置的目录== 。什么是第三方协力软件啊? 举例来说,KDE这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下呢! |
/srv | srv可以视为“service”的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录。 常见的服务例如WWW, FTP等等。举例来说,WWW服务器需要的网页数据就可以放置在/srv/www/里面。 不过,系统的服务数据如果尚未要提供给网际网络任何人浏览的话,默认还是建议放置到 /var/lib下面即可。 |
/tmp | 这是让一般使用者或者是 ==正在执行的程序暂时放置文件== 的地方。 这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要数据不可放置在此目录啊! 因为FHS甚至建议在开机时,应该要将/tmp下的数据都删除唷! |
/home | 这是 ==系统默认的使用者主文件夹== (home directory)。在你新增一个一般使用者帐号时, 默认的使用者主文件夹都会规范到这里来。比较重要的是,主文件夹有两种代号喔:~:代表目前这个使用者的主文件夹 ~dmtsai :则代表 dmtsai 的主文件夹! |
/root | ==系统管理员(root)的主文件夹== 。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时, 该目录就能够拥有root的主文件夹,所以我们会希望root的主文件夹与根目录放置在同一个分区中。 |
/usr 的意义与内容:
- /usr里面放置的数据属于可分享的与不可变动的(shareable,static), 如果你知道如何通过网络进行分区的挂载,那么/usr确实可以分享给区域网络内的其他主机来使用喔!其实usr是Unix Software Resource的缩写, 也就是“Unix操作系统软件资源”所放置的目录,而不是使用者的数据啦!这点要注意。 FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行创建该软件自己独立的目录。因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr下面,因此这个目录有点类似Windows 系统的
C:\Windows\ (当中的一部份) + C:\Programfiles\
这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量
/var 的意义与内容:
- 如果/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等
目录树
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
绝对路径、相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如
/home/dmtsai/.bashrc
; - 相对路径:相对于目前路径的文件名写法。 例如
./home/dmtsai
或../../home/dmtsai/
等等。反正开头不是 / 就属于相对路径的写法