男女直接做视频教学视频网站,在百度怎么建自己的网站,wordpress如何在地址栏中加网站logo,戈韦思网站建设优质博文#xff1a;IT-BLOG-CN
一、使用者与群组的概念
【1】在Linux里面#xff0c;任何一个文件都具有[User,Group及Other]三种身份的个别权限#xff1a;不过需要注意的是root用户#xff0c;具有所有权限。 ✔ User(文件拥有者)#xff1a;只有文件拥有者#xf…优质博文IT-BLOG-CN
一、使用者与群组的概念
【1】在Linux里面任何一个文件都具有[User,Group及Other]三种身份的个别权限不过需要注意的是root用户具有所有权限。 ✔ User(文件拥有者)只有文件拥有者就是你自己才能看与修改这个文件的内容 ✔ Group(群组的概念)群组是最有用的功能之一就是当你在团队开发资源的时候会进行团队内共享 ✔ Other剩余的都是其他人 【2】Linux用户身份与群组记录文件在Linux系统中所有的账号与一般身份使用者还有root的相关信息都是记录在/etc/passwd这个文件内。至于个人密码则是记录在/etc/shadow文件。Linux所有的组名都记录在/etc/group内。
二、Linux 文件权限概念
注意 当出现【Permission deny】的时候肯定是权限设定错误。
【1】通过『ls』指令查看文件当使用的非root用户建议切换至root用户『su -』因为后续chgrp、chown等指令可能都需要使用root身份才能处理离开则使用『exit』回到非root身份。通过『ls -al』包含隐藏文件文件名第一个字符为『.』的文件得到如下信息
[rootlearnVM ~]# ls -al
总用量 248
drwxr-xr-x. 2 root root 4096 7月 19 21:00 .abrt
-rw-------. 1 root root 1377 7月 19 20:44 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 7月 24 01:36 .oracle_jre_usage 范例说明
[ 权限 ] [连结] [拥有者] [群组] [文件容量] [ 修改日期 ] [ 档名 ]【2】第一栏代表这个文件的类型与权限permission
● 第一个字符代表这个文件是『目录、文件或链接文件等等』 ○ 当为[ d ]则是目录 ○ 当为[ - ]则是文件 ○ 若为[ I ]则表示为连接档Iink file ○ 当为[ b ]则表示为装置文件里面的可供存储的接口设备可随机存取装置 ○ 当为[ c ]则表示为装置文件里面的串行端口设备例如键盘、鼠标一次性读取装置 ● 接下来的字符三个为一组如上图所示。这三个权限的位置不会改变如果没有权限就会出现减号[ - ]。
【3】第五栏为这个文件的容量大小默认单位为bytes。
【4】例题drwxr-xr-- 1 test testgroup 5238 Jun 19 10:25 groups/分析如下 ◐ 文件拥有这test[rwx]可以在本目录中进行任何工作 ◐ 而testgroup这个群组[r-x]的账号例如test1亦可进入本目录工作但是不能在本目录下进行写入的动作。 ◐ 至于other的权限[r--]虽然有r但是由于没有x权限因此others的使用者并不能进入此目录。
三、Linux文件权限的重要性
在Linux系统当中每一个文件都加了很多属性进来尤其是群组的概念其最大的用途就是在『数据安全性』上面。
◑ 系统保护的功能 例如在系统中关于系统服务的文件通常只有root才能读写或者是执行例如/etc/shadow这一个账号管理的文件由于该文件记录了系统中所有账号数据当然不能让任何人读取否则密码会被盗取。只有root才能够读取。So该文件的权限为[----------]所有人都不能使用root用户基本上是不受系统的权限所限制的。
◑ 团队开发软件或数据共享的功能 例如在团队中希望每个人都可以使用某些目录下的文件而非团队的其他人则不予以开发可以将权限设置为[-rwxrws---]来提供给团队使用。
◑ 未将权限设定妥当的危害 如果目录权限未设置好会造成其他人都可以对文件进行操作。导致一些莫名奇妙的问题。
四、如何改变文件属性与权限
我们现在知道文件权限对于一个系统的安全性也知道文件的权限对于使用者于群组的相关性其实一个文件的属性和权限有很多我们先介绍几个常用于群组、拥有者、各种身份的权限之修改的指令如下所示 ● chgrp改变文件所属群组 ● chown改变文件拥有者 ● chmod改变文件的权限SUID,SGID,SBIT等等特性
【1】改变所属群组chgrpchange group的缩写需要注意的是要被改变的组名必须要走/etc/group文件中存在才行否则就会显示错误。如下使用 root身份将a文件移至zzx存在于/etc/group群组群组和zzx1不存在于/etc/group群组群组此时会出现如下现象
[rootlearnVM install]# chgrp [-R] dirname/filename ...
/*选项与参数-R进行递归recursive的持续变更亦既连同次目录下的所有文件、目录都更新称为这个群组之意。
常用在变更某一目录内所有文件的时候使用。*/
//范例
[rootlearnVM install]# chgrp zzx a
[rootlearnVM install]# ll
-rw-r--r--. 1 root zzx 3 12月 25 00:13 a
[rootlearnVM install]# chgrp zzx1 a
chgrp: 无效的组zzx1 // 发生错误讯息【2】改变拥有者chownchange owner的缩写需要注意的是用户必须是存在于系统中的账号也就是/etc/passwd这个文件中有记录的用户名称才能改变。chown也可以直接修改群组的名称。此外如果要连目录下的所有次目录或文件同时更改拥有者的话直接加上-R的选项即可。
[rootlearnVM install]# chown [-R] 账号名称 文件或目录
[rootlearnVM install]# chown [-R] 账号名称组名 文件或目录
选项与参数
-R进行递归recursive的持续变更亦既连同次目录下的文件都变更范例将a 的拥有者改为zzx
[rootlearnVM install]# ll
-rw-r--r--. 1 root zzx 3 12月 25 00:13 a
[rootlearnVM install]# chown zzx a
[rootlearnVM install]# ll
-rw-r--r--. 1 zzx zzx 3 12月 25 00:13 a范例将a 的拥有者和群组改回root,也可以将更换成.如果之修改群组也可以如下.root
[rootlearnVM install]# chown root:root a
[rootlearnVM install]# ll
-rw-r--r--. 1 root root 3 12月 25 00:13 a【3】改变权限chmod 文件权限的设定方式有两种分别是数字或者符号来进行权限的变更。 - 数字类型改变文件权限 1Linux文件的基本权限就有九个分别是owner/group/others三种身份各有自己的read/write/execute权限。其中我们可以通过数字来代表各个权限各个权限分数对照如下 r:4w:2x:12每种身份owner/group/others各自的三个权限r/w/x分数是需要累加的例如当权限为[-rwxrwx---]分数则是 owner rwx 421 7group rwx 421 7other --- 000 03所以等下我们设定权限的变更时该文件的权限数据就是770了。变更权限的指令如下
[rootlearnVM install]# chomd [-R] xyz 文件或目录
/*选项与参数xyz就是刚刚提高的数字类型的权限属性为rwx属性值的相加
-R进行递归recursive的持续变更亦既连同次目录下的所有文件都会变更*/
范例将a的权限设置为[-rwxrwx---]
[rootlearnVM install]# ll
-rw-r--r--. 1 root root 3 12月 25 00:13 a
[rootlearnVM install]# chmod 770 a
[rootlearnVM install]# ll
-rwxrwx---. 1 root root 3 12月 25 00:13 a- 符号类型改变文件权限【了解基本不用】 1从上面介绍中可以发现基本上就是九个权限分别是user、group、others三种身份我们可以由u,g,o来代表三种身份的权限。此外a则代表all全部的身份那么读取权限就可以写成r,w,x。
chmodu / g / o /a(加入) / -(除去) / (设定)r / w / x文件或目录
2实际操作设置文件的权限为『-rwxr-xr-x』解读后就是user(u):具有所有权限group与others(g/o):具有读/可执行权限。
[rootlearnVM install]# chmod urwx,ogrx a
// 注意那个urwx,ogrx 是连在一起的中间没有任何空格
[rootlearnVM install]# ll
-rwxr-xr-x. 1 root root 3 12月 25 00:13 a
// 当给所有的角色添加w权限的使用
[rootlearnVM install]# chmod aw a
[rootlearnVM install]# ll
-rwxrwxrwx. 1 root root 3 12月 25 00:13 a
// 当给所有的角色出去x权限-的使用
rootlearnVM install]# chmod a-x a
[rootlearnVM install]# ll
-rw-rw-rw-. 1 root root 3 12月 25 00:13 a五、目录与文件权限意义
【1】文件是实际含有数据的地方包括一般文本文件、数据库内容文件、二进制可执行文件binary program等等。其中『x』的意义我们可以解释一下在Windows底下一个文件是否具有执行的能力是基于『扩展名』来判断的如.exe,.bat,.com等等但是在Linux底下我们的文件是否可执行则是基于是否具有『x』这个权限来决定的 跟文档名没有绝对的关系。 一个文件具有『w』权限时你可以具有写入/编辑/新增/修改文件内容的权限但不具备删除该文件本身的权限对于文件的rwx来说主要都是针对『文件的内容』而言与文件的存在与否没有关系。因为文件记录的是实际的数据。
【2】文件是存放实际数据的所在那么目录的内容主要在于记录文件名列表文件名与目录有强烈的关联所以如果是针对目录时那么r,w,x对目录的意义如下 ☛ r(read contents in directory)表示具有读取目录结构列表的权限所以当具有读取『r』一个目录的权限时表示可以查询该目录下的文件名数据。所以就可以利用ls指令将该目录的内容列表显示出来。 ☛ w(modify contents of directory)表示具有如下该目录列表的权限。 ○ 建立新的文件与目录 ○ 删除已经存在的文件与目录不论该文件的权限为何 ○ 将已经存在的文件或目录改名 ○ 搬移该目录内的文件或目录位置 ☛ x(access directory)代表用户能够进入该目录成为工作目录的用途所谓的工作目录work directory就是你目前所在的目录。举例来说当你登入Linux时你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd:change directory』。
【3】根据上述分析可以看出对一般文件来说rwx主要针对『文件的内容』来设计权限对目录而言rwx则是针对『目录内的文件名列表』来设计权限。其中最不好理解的就是目录的『x』权限可以理解为如果你在该目录下没有不具有『x』权限那么你就无法切换到该目录下也就无法执行该目录下的任何指令即使你具有该目录的r或w的权限。所以通常要开放的目录至少会具备rx这两个权限。
六、Linux文件种类与扩展名
【1】文件种类 我们在看权限的时候第一栏那十个字符中第一个字符为文件类型。除了常见的一般文件(-)与目录文件(d)之外还有如下类型。 ● 正规文件regular file 就是一般我们在进行存取的类型的文件在由ls -al所显示出来的属性方面第一个字符为[-]例如[-rwxrwxrwx]。另外依照文件的内容又大略可以分为 - 纯文本档ASCⅡ 这是Linux系统中最多的一种文件类型称为纯文本档是因为内容为我们人类可以直接读到的数据例如数字、字母等等。几乎只要我们可以用来做为设定的文件都属于这一种文件类型。 - 二进制文件binary 我们系统其实只认识且可以执行二进制文件。Linux当中的可执行文件(scripts,文字型批处理不算)我们常用的Linux命令就是一个binary file。 - 数据格式文件data 有些程序在运作的过程当中会读取某些特定格式的文件那些特定格式的文件可以被称为数据文件data file。例如Linux在使用者登入时都会将登陆的数据记录在/var/log/wtmp那个文件内该文件是一个data file它能够通过『last』指令读出来但是使用『cat』时会读出乱码因为它是一种特殊的文件格式。 ● 目录directory 第一个字母为d表示目录。 ● 连结档link 就类似于Windows系统底下的快捷键第一个字母为『l』(英文字母L的小写) ● 设备与装置文件device与系统周边及储存等相关的一些文件通常都集中在/dev这个目录下通常又分为两种 - 区块(block)设备档 就是一些存储数据以提供系统随机存取的接口设备例如硬盘与软盘等就是区块设备档。可以随机的在硬盘的不同区块读写可以查一下/dev/sda看看会发现一个属性为『b』的类型。 - 字符character设备文件 亦既是一些串行端口的接口设备例如键盘、鼠标等等这些设备的特色就是『一次性读取』的不能够截断输出。例如你不可能让鼠标『跳到』另一个画面而是『连续性滑动』到另一个地方。 ● 资料接口文件socket 既然被称为数据接口文件这种类型的文件通常被用到在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求而客户端就可以透过这个socket来进行数据沟通了第一个属性为『s』最常在/run或/tmp目录下可以看到此类文件目录。 ● 数据传输文件FIFO,pipe FIFO也是一种特殊的文件类型它主要的目的在于解决多个程序同时存取一个文件所造成的错误问题。FIFO是first-in-first-out的缩写第一个属性为『p』。 除了设备文件是我们系统中很重要的文件最好不要随意修改之外。另外比较有趣的文件就是连结档可以将其视为一个文件或目录的快捷方式。至于socket与FIFO文件比较难理解因为其与程序(process)比较有关系这个等未来了解process之后再进行查阅可以通过man fifo及man socket来查阅系统上的说明。
【2】Linux文件扩展名 基本上Linux的文件是没有所谓的『扩展名』我们也说过Linux文件能不能执行与其第一栏的十个属性有关与文件名一点关系都没有。在Linux底下只要你的权限当中具有x的话例如[-rwxr-xr-x]既代表这个文件具有可以被执行的能力。
具有『可执行的权限』与『具有可执行的程序代码』是两回事在Linux底下可以让一个文本文件例如之前写的text.txt具有『可执行的权限x』但是这个文件明显不能执行因为它不具有『可执行的程序代码』而如果将上面『cat』命令的『x』拿掉那么『cat』将无法被执行。同时可被执行和可以执行成功也是不一样的例如上面说的text.txt具有可执行的能力但是能不能执行成功还是要看该文件的内容。 虽然如此我们仍然希望可以基于扩展名来了解该文件是什么东西所以通常我们还是会以适当的扩展名来表示该文件是什么种类。底下罗列一些常用的扩展名 ✔ *.sh脚本或批处理文件scripts因为批处理文件使用shell编写因此为*.shell ✔ *Z,*.tar,*.tar.gz,*.zip,*.tgz经过打包的压缩文件。这是因为压缩软件分别为 gunzip,tar等等的由于不同的压缩软件而取其相关的扩展名 ✔ *.html,*.php网页相关文件分别代表HTML语法与PHP语法的网页文件.html的文件可以使用网页浏览器直接开启至于.php的文件则可以通过client端的浏览器来server端浏览运行后的网页结果
基本上Linux系统上的文件名真的只是让你了解文件的用途而已真正的执行与否仍然需要权限的规范才行。
【3】Linux文件长度限制了解 在Linux底下使用传统 Ext2/Ext3/Ext4文件系统以及CentOS 7当作预设文件系统的xfs而言针对文件的档名长度限制为单一文件或目录的最大容许文件名为255bytes以一个ASC英文占一个bytes来说则大约255个字符长度。若是以每个中文占2bytes来说最大档名大约在128个中文字。
【4】Linux文件名的限制由于Linux在文字接口下的一些指令操作关系一般在设定 Linux底下的文件名时最好可以避免一些特殊字符比较好例如『 * ; [ ] | \ ‘ { } 』因为这些符号在文字接口下是由特殊意义的。另外文件名的开头为小数点『.』时代表这个文件为『隐藏档』。同时由于指令当中常常会使用到-option之类的选项所以最好也避免在文档的开头使用『-』或『』来命名。