当前位置: 首页 > 科技观察

看完这篇Linux权限,就明白了!

时间:2023-03-22 01:46:54 科技观察

在使用Linux的过程中,我们或多或少会遇到一些关于用户和组的问题。比如最常见的问题就是你想在某个路径下执行某个命令,这个错误经常会出现hint。permissiondenied反正我用ftp传输文件的时候大概率会看到这个错误。等了半天,转账百分比还是零。我说网速这么慢?为什么不转移?其实我不知道,这是由于权限问题所致。我通常的修复方式是直接给777权限,或者直接使用su管理员登录。.....你可能不知道我在说什么,可能有些大佬觉得我的方法太low了。反正遇到这种问题,说明你的权限不够。为什么?接下来,我们需要了解一下Linux中的用户和组。用户和组在Linux中,文件所有者分为三类,即文件所有者、组和其他人。下面介绍文件所有者的三个概念。Linux是一个多用户和多任务系统。多用户是指某些用户创建的文件是否对其他用户可见。这是一个可见性问题,也是一个隐私问题。为了考虑到每个人的隐私,Linux设计了文件所有者的角色。如果你有一些隐私性较高的数据和文件,你可以将文件设置为“只对我可见”,这是文件所有者的角色。组的概念用于团队开发。为项目设置权限更有用。比如你在一家银行的外包部门工作,你和其他外包部门一起为某家银行工作。所有的外包组都有Usingaserver,这就涉及到组权限的问题。如果你的外包部门开发的项目不想让其他外包部门看到,你就把这个项目设置为对集团可见。但是银行是总负责人,所有银行都有权限查看你所有的外包部门项目,所以你还需要设置银行的权限。其他人属于其他人,群体是相对的。其他人在群外,没有权限查看群内文件。除了以上三个概念之外,还有一个权限最高的boss,就是root,这个root权限最高。Linux文件权限上面说完了用户和组的概念,我们再来说说如何设置文件权限。这段内容很重要,因为这部分内容很好的解决了权限被拒绝的问题。钥匙。权限属性首先登录linux系统,使用su-切换到root状态,然后执行ls-al,会看到如下七列内容,如下图所示。学习时可以直接使用root,因为后面的chgrp、chown等命令需要root才能处理,但强烈建议工作中不要使用root权限。使用exit以root身份退出。上述命令中,ls表示list,即列出,选项-al表示文件的详细权限和属性。权限,第一列代表权限,权限用10个字符表示。下面以home权限为例,罗列一下各个字符的含义。第一个字符代表文件类型。有许多类型的文件。一般[d]表示一个目录,可以使用cd命令进入该目录。可以看到图中几乎所有的东西都是一个目录。如果[-]表示文件,如果[l]表示链接文件,如果[b]表示设备文件中的随机访问设备,如果[c]表示设备文件中的一次性读取设备(键盘,老鼠)。接下来的九个字符分为三组,三组,分别代表属主、所属组、其他属主权限。每个组中的权限是三个rwx的组合,[r]表示可读,[w]表示可写,[x]表示可执行。这里要注意,如果没有权限,就会变成-号。links,这一列表示有多少个文件名链接到这个节点(i-node),每个文件都会在文件系统的i-node上记录它的权限和属性,但是我们使用的目录树使用的文件名是recorded,所以每个文件名都会关联一个i-node,所以这个属性就是记录有多少个文件链接到同一个i-node。什么是i节点?i-node的描述和我们之前讲的Socket很像。socket是一个四元组,有时候加上协议类型就变成了五元组。如果你不清楚,我的意思是什么,你可以看我的文章。原来这就是Socket!我们知道磁盘的最小存储单元是扇区。操作系统读取一个扇区时,不会一个一个扇区读取一个扇区。因为效率太低,所以是以块为单位读取的,一个块由多个扇区组成。文件中的数据存储在扇区中,但我们不知道需要哪一段数据。为了存储文件的一些元信息,比如文件的创建者、创建日期、文件大小等,开发者提出了i-node,也就是索引节点。一般来说,一个i节点有以下内容。具体关于i节点,我们后面再说。然后第三列表示这个文件的所有者。从图中可以看出,大部分文件拥有者都是root用户。第四列表示该文件所属的组。在Linux系统下,你登录的账号会被添加到一个或多个所有者组中,这一栏表示对应的组权限。第五列表示文件大小,默认单位为Bytes。第六列是文件的创建日期和最后修改日期。从图中可以看出,这种日期格式可能不是我们想要的。如果要显示完整的日期格式,可以使用ls-l--full-time,包括年月日时间。如果要将系统的默认语言改为英文,可以修改系统配置文件/etc/locale.conf。首先,我们可以查看系统支持哪些语言。修改默认语言,进入vi/etc/profile文件末尾输入exportLANG="en_US.UTF-8"即可切换成英文。如果要使用中文,可以输入exportLANG="zh_CN.GB18030"然后用esc+:wq保存,保存后使用source/etc/profile完成设置。第七列是文件名。有一个特殊的文件名,意思是隐藏文件。如果还有一个。在文件名前,表示隐藏文件。权限的重要性提供系统保护:非特权用户无法操作具有一定权限的功能和数据。适用于团队开发和数据共享:所有团队成员和个人隶属关系都可以共享项目。如果系统权限设置不当,可能会造成一些泄密或者其他不容忽视的后果,所以大家要注意权限问题。让我们谈谈如何设置系统权限。修改系统权限和属性我们知道了文件权限对系统安全的重要性,下面我们就来说说如何修改文件权限。常用的修改文件权限的命令有chgrp:改变文件所属的组chown:改变文件的属主chmod:改变文件的权限chgrpchgrp是changegroup的缩写。缩写如此受欢迎的原因。chgrp可以改变文件组,但是如果要改变组,需要改变的组名必须存在于/etc/group文件中,否则会报错。chown既然chgrp可以改变文件组,那么chown就可以改变文件属主。还需要注意的是,文件拥有者必须是系统中存在的账户,即/etc/passwd文件名中记录的用户,可以更改。另外chown也可以直接修改组名。chmod命令用于通过chmod更改文件权限。但是,有两种设置权限的方法。您可以使用数字或符号来更改权限。用数字改变文件权限Linux文件的基本权限有9种,分别是owner/group/others三个身份加上自己的读/写/执行权限。这九个权限是三个一组。我们可以用数字来表示每一个权限。一般r表示4;w表示2;x表示1,每个身份各自的权限需要累加。比如rwx就是4+2+1=7,比如我们最常见的chmod777就是授予所有权限,也就是说任何人都可以读/写/执行,所以这种文件也有很大的安全性问题。使用数字更改文件权限是我们最常用的方法之一。用符号改变文件权限九个文件权限分别对应:(1)用户(2)组(3)其他,所以我们可以用u,g,o来表示三个身份的权限。另外,a代表all,也就是所有的身份。比如我们要给-rwxr-xr-x设置权限,那么我们使用的命令应该是chmodu=rwx,go=rx.filename如果我们想给所有人加上写权限,我们可以这样操作chmoda+w这个.filename如果我们想去掉所有人的写权限,可以这样写命令chmoda-w.filename。上面我们列出了三个命令,分别是=、+、-号,=号表示赋予的权限,+号表示增加权限,-号表示取消一些权限。在+和-状态下,只要没有找到命令项,权限就不会改变。Linux目录和文件权限我们在上面谈到了文件权限。文件是存储数据的地方。这些文件包括一般的文本文件、数据库文件、二进制文件等,文件权限的含义在于r(read):可以读取文件的实际内容,比如读取一个文本文件w的文本内容(write):可以添加、编辑或修改文件中的内容(不包括删除文件)x(execute):使文件具有被文件系统执行的权限。在Windows下,判断一个文件是否可以执行的因素是看文件扩展名,比如.exe、.bat、.com等,而在Linux下,判断一个文件是否具有可执行权限是直接判断文件是否有x权限,与文件名无关。但是在Linux中,不仅文件有权限,目录也有权限。文件是实际存储数据的地方,目录是记录文件位置的列表。只有通过目录才能找到文件放在哪里!不同目录的权限,也代表着不同的概念。r(readcontentsindirectory):表示你有读取目录结构列表的权限,所以如果你有读取某个目录的权限,就意味着你可以查询该目录下的文件,所以可以用ls来列出目录显示的内容。w(modifycontentsofdirectory):写权限,表示你有修改文件目录和目录下文件的操作,主要包括删除已有的文件和目录。创建新文件和目录。重命名现有文件或目录。移动目录中的文件和目录位置。x(accessdirectory):这个执行权限有什么用?目录不能执行?事实上,情况并非如此。执行权限表示是否有进入指定目录的权限,即cd(changedirectory)。Linux的文件类型和扩展名想必大家都有所耳闻:Linux下任何设备都是一个文件,但是文件也分为各种类型,除了上面介绍的一般文件(-)和目录文件(d)。此外,还包括以下文件类型:常规文件:常规文件是使用ls-al显示的属性,也就是我们上面列出的第一个字符,文件类型可以分为纯文本文件(ASCII),这是Linux系统中最常见的文件类型。纯文本文件就是我们可以直接看到的数据。这部分内容可以直接使用cat查看。比如设置Linux静态ip最常用的文件ens33,可以使用cat命令输出catifcfg-ens33二进制文件。在linux下可以使用xxd或者od格式化输出数据格式文件查看二进制文件,直接使用数据文件cat读取会显示乱码,但是可以通过last命令输出目录。目录没什么好说的,就是一个文件列表的意思,目录的表示是[d],就是directory。链接文件(link),链接文件就是在某些程序执行时需要与这些链接文件进行链接的文件类型。设备和设备文件(device),Linux下的设备分为块设备和字符设备两种:块设备是一种可以存储固定大小的块信息的设备,它支持读取固定大小的块、扇区或集群和(可选)写入数据。每个块都有自己的物理地址。通常块大小在512-65536之间。所有传输的信息将在连续的块中。块设备的基本特点是每个块都是相对对立的,可以独立读写。常见的块设备包括硬盘驱动器、蓝光光盘和USB驱动器。块设备一般位于/dev/sda下,它的第一个属性是[b]。另一种I/O设备是字符设备。字符设备以字符为单位发送或接收字符流,与任何块结构无关。常见的字符设备有打印机、网络设备、鼠标和磁盘以外的大多数设备。字符设备最大的特点是一次性读取,输出不能截断。例如,你不能将鼠标跳到另一个地方,但你可以使用平滑的移动。字符设备的第一个属性是[c]。数据接口文件(sockets):顾名思义,数据接口文件使用sockets接收网络数据。它的属性是[s],一般可见于/run或/tmp等目录。数据传递文件(FIFO,pipe):FIFO也是一种特殊类型的文件。它的主要目的是为了解决多个程序同时访问一个文件导致的错误问题。它的第一个属性是[p]。Linuxextension说到这个扩展,其实很头疼。linux中没有扩展的概念,但是有一些扩展的命名方式,很尴尬,所以暂且把它做成扩展类型吧。*.sh一般有以下几种,是执行脚本或者批处理脚本,一般也叫shell脚本,里面包含一些用shell语法写的指令。.tar、.tar.gz、.zip、*.tgz,这种扩展类型是打包后的压缩文件,根据不同的打包方式有不同的扩展类型。html、.php:网页相关文件,分别代表HTML和PHP语法的网页文档。本文转载自微信公众号“程序员cxuan”,可通过以下二维码关注。转载本文请联系程序员cxuan公众号。