我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 。 permission denied 反正我大概率见到这个错误都是在使用 FTP 传输文件的时候,等了半天传输百分比还是零,我说网络这么慢么?怎么都不传输呢?其实我不知道,这是由于权限问题所致。 我一般的修复方式是直接赋予 777 权限,或者直接使用 su 管理员登录。。。。。。 大家可能不太知道我说的是什么,也有一些大佬可能觉得我这种方式太 low 了,不管怎样,遇到这种问题就是说你的权限不够,为什么呢?下面我们就需要来认识一下 Linux 中的使用者和群组了。 使用者和群组在 Linux 中,关于文件所有者分为三类,即文件所有者、群组和其他人所属,这里分别解释以下这三个概念 Linux 是一个多用户多任务系统,多用户就意味着有些用户创建的文件是否对其他用户可见,这是一种可见性问题,同时也是一种隐私性问题,为了考虑到每个人的隐私权,Linux 设计了文件所有者的角色。如果你有一些资料和文件的隐私性比较高,你就可以把文件设置成 '只有我自己可见' ,这就是文件所有者的作用。 群组的这个概念用在团队开发中,用处比较多的就是为项目设置权限,比如你就职于一个银行的外包部门,你和其他外包部门共同为某个银行服务,所有的外包团体都使用一台服务器,这就会涉及到群组权限的问题,你们外包部门开发的项目不想让其他外包部门所看到,就会把该项目设置成群组可见。但是银行是总负责人,所有银行具有查看你们所有外包部门项目的权限,因此,你还需要设置银行的权限。 其他人和群组是相对的,其他人在群组之外,没有权限查看群组内文件的一种权限关系。 除了上面三个概念之外,还有一个权限级别最高的大佬,它就是 Linux 文件权限在聊完上面使用者和群组的概念之后,接下来我们就来谈一下文件权限要如何设置的问题,这块内容是很重要的,因为这部分内容是很好解决 permission denied 问题的关键。 权限属性首先登录 Linux 系统,使用 一共有七列内容,这七列内容如下图所示。
上面这段指令中,ls 是 第一个字符表示的是文件类型,文件类型有很多种,一般 [d] 表示的是目录,能用 如果是 [-] 则表示文件,如果是 [l] 则表示链接文件,如果是 [b] 则表示设备文件中的可随机存取设备,如果是 [c] 则表示为设备文件中的一次性读取设备(键盘、鼠标)。 接下来的九个字符分为三组,三个一组,分别表示所属人、所属群组、其他所有者权限,每组内的权限都是三个
如果想要让系统默认的语系变为英文的话,那么你可以修改系统配置文件 修改默认语言,输入
在文档的最后输入 export LANG='en_US.UTF-8' 就可以切换成为英文,如果想使用中文,可以输入
然后使用 source /etc/profile 即可完成设置。 权限的重要性如果没有恰当的设置系统权限,可能会造成某些泄密事件或者其他不可忽视的后果,所以权限问题大家要引起重视,下面我们就来聊一聊如何设置系统权限。 改变系统权限和属性我们现在知道文件权限对于一个系统安全的重要性了,现在就要聊一聊如何修改文件权限了。常用的修改文件权限的指令有 chgrpchgrp 就是 change group 的缩写,我觉得李纳斯把缩写用到了极致,这也许是我们现在对于缩写这么流行的原因。chgrp 能够改变文件群组,不过,要改变群组的话,要被改变的群组名称要在 chown既然 chgrp 能够改变文件群组,那么 chown 能够改变文件所有者,同样也需要注意的是,文件所有者必须是系统中存在的账号,也就是在 chmod变更文件权限使用的是 chmod 这个指令,但是,权限的设置有两种方式,可以分别使用数字或者符号进行权限变更。 Linux 文件基本权限有 9 种,分别是 owner/group/others 三种身份加自己的 read/write/execute 权限,这九个权限三个为一组,我们可以使用数字表示各个权限。 一般 r 表示 4;w 表示 2;x 表示 1,每种身份各自的权限是需要累加的,比如 rwx 就表示 4 + 2 + 1 = 7。比如我们最常见的 chmod 777 它就表示赋予所有的权限,也就是说谁都能看/写/执行,所以这种文件也存在极大的安全问题。使用数字改变文件权限是我们最常用的一种方式。 九种文件权限分别对应着:(1) user (2) group (3) others,所以我们可以借由 u,g,o 来代表三种身份的权限。除此之外,a 代表 all 即全部的身份。 比如我们想要给 -rwxr-xr-x 设置权限,那么我们所使用的命令应该是
如果我们想要给所有人增加写入权限,就可以这么操作 chmod a+w .filename 如果我们想给所有人去掉写入权限,就可以这么写入指令
我们上面列出了三种指令,分别是 =、+、- 号,= 号表示赋值指定权限,+ 号表示增加权限,- 号表示去掉某些权限,在 + 和 - 的状态下,只要没找到指令的项目,那么该权限不会发生变动。 Linux 目录和文件权限我们上面聊的都是文件权限,文件是容纳数据的地方,这些文件包括一般文本文件、数据库文件、二进制文件等,权限对于文件的意义在于 Windows 下面判断文件是否能够执行的因素是看文件扩展名, 比如 .exe, .bat, .com 等等,但是在 Linux 中,判断文件是否具有可执行权限是直接判断文件有没有 x 这个权限,和文件名无关。 但是在 Linux 中,不只有文件具有权限,目录也有权限,文件是存放实际数据的地方,而目录是记录文件所在位置的清单,我们只有通过目录才能找到文件放在哪里!权限对于不同的目录,也代表着不同的概念。 Linux 文件种类和扩展名想必大家都听说过这样一句话:任何设备在 Linux 下都是文件,但是文件也分为多种,除了上面介绍过的一般文件(-) 和目录文件(d) 之外,还包括下面这些文件类型 文件类型又可以分为 cat ifcfg-ens33 块设备是一个能存储 块设备一般位于 /dev/sda 下,它的第一个属性为 [b] 。 另一类 I/O 设备是 字符设备最大的特点就是一次性读取,不能够截断输出,举例来说,你不可能将鼠标一下跳到另外一个地方,而是采用平滑移动的方式才可以,字符设备的第一个属性是 [c] 。 Linux 扩展名说到这个扩展名其实就很头疼,Linux 中是没有扩展名这个概念的,但是又有一些扩展名的命名方式,这就很尴尬,所以暂且成为扩展类型吧。一般有下面几种 |
|