집 >운영 및 유지보수 >리눅스 운영 및 유지 관리 >반드시 이해해야 할 Linux 권한(요약 공유)
이 문서는 권한 속성을 변경하는 방법을 포함하여 Linux 권한에 대한 지식을 제공합니다. 모든 사람에게 도움이 되기를 바랍니다.
Linux를 사용하는 과정에서 사용자와 그룹에 관한 몇 가지 문제에 직면하게 됩니다. 예를 들어, 가장 일반적인 문제는 특정 경로에서 특정 명령을 실행하려는 경우 자주 발생한다는 것입니다. 이런 오류 메시지가 나타납니다.
permission denied
어쨌든 FTP를 사용하여 파일을 전송할 때 이 오류가 나타날 가능성이 높습니다. 오랫동안 기다린 후에도 전송률이 여전히 0입니다. 네트워크가 너무 느린가요? 왜 전송되지 않나요? 사실은 모르겠습니다. 권한 문제 때문입니다.
이 문제를 해결하는 일반적인 방법은 직접 777 권한을 부여하거나 su 관리자를 사용하여 직접 로그인하는 것입니다. . . . . .
내가 무슨 말을 하는지 모르실 수도 있고, 어떤 큰 분들은 제 접근 방식이 너무 낮다고 생각할 수도 있습니다. 어쨌든 이런 문제가 발생하면 권한이 부족하다는 뜻입니다. 다음으로 우리는 Linux의 사용자와 그룹을 알아야 합니다.
사용자 및 그룹
Linux에서 파일 소유자는 파일 소유자, 그룹 및 기타 사람의 세 가지 범주로 구분됩니다. 다음은 각각 설명된 세 가지 개념입니다
파일 소유자
Linux는 다중 사용자 다중 작업 시스템입니다. 다중 사용자는 일부 사용자가 만든 파일이 다른 사용자에게 표시되는지 여부를 의미합니다. 이는 가시성 문제이자 개인 정보 보호 문제이기도 합니다. 파일 소유자의. 비공개 정보 및 파일이 있는 경우 해당 파일을 "나에게만 표시"로 설정할 수 있습니다. 이것이 파일 소유자의 역할입니다.
Group
팀 개발에서 가장 유용한 것은 프로젝트에 대한 권한을 설정하는 것입니다. 특정 뱅킹 서비스의 경우 모든 아웃소싱 그룹이 하나의 서버를 사용하므로 그룹 권한 문제가 발생합니다. 아웃소싱 부서에서 개발한 프로젝트를 다른 아웃소싱 부서에서 볼 수 없도록 하려면 프로젝트를 설정합니다. 그룹으로 표시됩니다. 그러나 은행이 전반적인 책임자이고 모든 은행은 귀하의 모든 아웃소싱 부서 프로젝트를 볼 수 있는 권한을 가지고 있으므로 은행 권한도 설정해야 합니다.
다른 사람은
다른 사람과 그룹의 친척입니다. 다른 사람은 그룹 외부에 있으며 그룹의 파일을 볼 수 있는 권한이 없습니다.
위의 세 가지 개념 외에도 가장 높은 권한 수준을 가진 보스가 있는데, 이 루트가 가장 높은 권한을 가지고 있습니다.
Linux 파일 권한
위의 사용자 및 그룹 개념에 대해 이야기한 후 파일 권한을 설정하는 방법에 대해 이야기하겠습니다. 이 내용은 권한 거부 문제를 해결하는 핵심이기 때문에 매우 중요합니다.
권한 속성
먼저 Linux 시스템에 로그인하고 su -를 사용하여 루트 ID로 전환한 다음 ls -al을 실행하면 다음과 같은 내용이 표시됩니다.
총 7개의 열이 있습니다. 이 7개 컬럼의 내용은 그림과 같습니다.
후속 chgrp, chown 및 기타 명령을 처리하려면 루트가 필요하므로 학습할 때 루트를 직접 사용할 수 있지만 직장에서는 루트 권한을 사용하지 않는 것이 좋습니다.
루트로 종료하려면 종료를 사용하세요.
위 명령에서 ls는 list, 즉 나열을 의미하고 -al 옵션은 자세한 파일 권한 및 속성을 의미합니다.
권한, 첫 번째 열은 권한을 나타냅니다. 권한은 총 10자로 표시됩니다. 각 문자의 의미를 나열하기 위해 권한을 예로 들어보겠습니다.
첫 번째 문자는 다양한 유형을 나타냅니다. 일반적으로 [d]는 디렉터리를 나타내며 cd 명령을 사용하여 이 디렉터리에 들어갈 수 있습니다. 그림에 있는 거의 모든 것이 디렉토리라는 것을 알 수 있습니다.
[-]이면 파일, [l]이면 링크 파일, [b]이면 장치 파일에 있는 랜덤 액세스 장치를 의미하고, [c]는 파일 내 장치 일회용 읽기 장치(키보드, 마우스)를 의미합니다.
接下来的九个字符分为三组,三个一组,分别表示所属人、所属群组、其他所有者权限,每组内的权限都是三个 rwx 的组合,[r] 表示可读,[w]表示可写,[x] 表示可执行,这里需要注意的是,如果没有权限,就会变为 -号。
链接,这一列表示有多少文件名链接到这个节点(i-node)上,每个文件都会将它的权限和属性记录到文件系统的 i-node 上,不过,我们使用的目录树却是使用文件名来记录的,因此每个文件名都会关联到一个 i-node ,所以这个属性就是记录有多少文件链接到了同一个 i-node 上。
什么是 i-node ?
i-node 的描述方式很像是我们之前聊过的 Socket,Socket 就是一个四元组,有时会加上协议类型变为五元组,如果你不太清楚我说的是什么,可以看下我的这篇文章 原来这才是 Socket!
我们知道,磁盘的最小存储单位是扇区,操作系统在读取扇区时,不会一个扇区接着一个扇区这样读取,因为效率太低,而是以块为单位进行读取,块是由多个扇区组成的。
文件中的数据都存储在扇区中,但是我们并不知道哪一块数据是我们需要的,为了存储一些文件的元信息,比如文件的创建者,创建日期,文件的大小,开发人员提出了 i-node ,也就是索引节点。一般来说,i-node 具有如下内容
具体关于 i-node 的内容,我们后面还会再说。
然后第三列表示这个文件的所属人,由图可见,大部分文件的所属人都是 root 用户。
第四列表示这个文件的所属群组,在 Linux 系统下,你登录的账号会添加到一个或者多个所有人群组中,这一栏就表示对应的群组权限。
第五列表示文件大小,默认单位为字节(Bytes)。
第六列为创建这个文件的日期和最近修改日期,从图中可以看到,这个日期格式有可能不是我们想要的,如果要显示完整的日期格式,可以使用 ls -l --full-time,包括年、月、日、时间。
如果想要让系统默认的语系变为英文的话,那么你可以修改系统配置文件 /etc/locale.conf,首先我们可以查看一下系统都支持哪些语言。
修改默认语言,输入
vi /etc/profile
在文档的最后输入
export LANG="en_US.UTF-8"
就可以切换成为英文,如果想使用中文,可以输入
export LANG="zh_CN.GB18030"
然后使用 esc + :wq 保存,保存之后使用
source /etc/profile
即可完成设置。
第七列为文件名,有一类特殊的文件名,它表示着隐藏文件,如果文件名之前多一个 . ,那就表示隐藏文件。
权限的重要性
提供系统保护:非权限用户不能操作具有某些权限的功能和数据。
适合团队开发和数据共享:团队所有组成员和个人所属能够共享项目。
如果没有恰当的设置系统权限,可能会造成某些泄密事件或者其他不可忽视的后果,所以权限问题大家要引起重视,下面我们就来聊一聊如何设置系统权限。
改变系统权限和属性
我们现在知道文件权限对于一个系统安全的重要性了,现在就要聊一聊如何修改文件权限了。常用的修改文件权限的指令有
chgrp :改变文件所属群组
chown:改变文件所有者
chmod:改变文件权限
chgrp
chgrp 就是 change group 的缩写,我觉得李纳斯把缩写用到了极致,这也许是我们现在对于缩写这么流行的原因。chgrp 能够改变文件群组,不过,要改变群组的话,要被改变的群组名称要在 /etc/group 文件内存在才行,否则就会显示错误。
chown
既然 chgrp 能够改变文件群组,那么 chown 能够改变文件所有者,同样也需要注意的是,文件所有者必须是系统中存在的账号,也就是在 /etc/passwd 这个文件中有记录的使用者名称才可改变。除此之外,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 u=rwx,go=rx .filename
如果我们想要给所有人增加写入权限,就可以这么操作
chmod a+w .filename
如果我们想给所有人去掉写入权限,就可以这么写入指令
chmod a-w .filename
我们上面列出了三种指令,分别是 =、+、- 号,= 号表示赋值指定权限,+ 号表示增加权限,- 号表示去掉某些权限,在 + 和 - 的状态下,只要没找到指令的项目,那么该权限不会发生变动。
Linux 目录和文件权限
我们上面聊的都是文件权限,文件是容纳数据的地方,这些文件包括一般文本文件、数据库文件、二进制文件等,权限对于文件的意义在于
r(read):可以读取文件的实际内容,比如读取文本文件的文字内容
w(write):可以新增、编辑或者修改文件中的内容(不包括删除文件)
x(execute):使文件具有被文件系统执行的权限。
Windows 下面判断文件是否能够执行的因素是看文件扩展名, 比如 .exe, .bat, .com 等等,但是在 Linux 中,判断文件是否具有可执行权限是直接判断文件有没有 x 这个权限,和文件名无关。
但是在 Linux 中,不只有文件具有权限,目录也有权限,文件是存放实际数据的地方,而目录是记录文件所在位置的清单,我们只有通过目录才能找到文件放在哪里!权限对于不同的目录,也代表着不同的概念。
r (read contents in directory):表示具有读取目录结构清单的权限,所以如果你具有读取一个目录的权限时,就代表你可以查询目录下的文件,所以你就可以使用 ls 将目录的内容显示出来。
w(modify contents of directory):写入权限表示你具有对文件目录和目录中的文件进行修改的操作,主要包括
删除已经存在的文件和目录。
创建新的文件和目录。
将已存在的文件或目录进行改名。
移动目录内文件、目录位置。
x(access directory):这执行权限有啥用?总不能目录也能够被执行把?其实并不是这样,执行权限表示着你有没有权限进入到指定目录下,也就是 cd(change directory) 。
Linux 文件种类和扩展名
想必大家都听说过这样一句话:任何设备在 Linux 下都是文件,但是文件也分为多种,除了上面介绍过的一般文件(-) 和目录文件(d) 之外,还包括下面这些文件类型
常规文件(regular file):常规文件就是我们使用 ls -al 所显示出来的属性,也就是上面我们列出的第一个字符,
文件类型又可以分为
纯文本文件(ASCII),这是 Linux 系统中最多的一种文件类型,纯文本文件是我们能够直接看到的数据,你可以使用 cat 来直接看到这部分内容。比如我们最常用的设置 Linux 静态 ip 的文件 ens33 ,就可以使用 cat 命令来输出
cat ifcfg-ens33
二进制文件,在 Linux 中,查看二进制文件可以使用 xxd 或者 od 进行格式化输出
数据格式文件,数据文件直接使用 cat 读取会显示乱码,但是它能够通过 last 指令进行输出
目录,目录没什么好说的,就是表示一个文件清单,目录的表示就是 [d],也就是 directory。
链接文件(link),链接文件就是某些程序执行时需要和这些链接文件进行链接才能执行的一种文件类型。
디바이스 및 디바이스 파일(디바이스), Linux에서의 디바이스는 블록 디바이스와 캐릭터 디바이스의 두 가지 종류로 나누어집니다.
블록 디바이스는 고정된 크기의 블록 정보를 저장할 수 있는 디바이스이며 고정된 크기의 블록 정보를 지원합니다. 데이터를 읽고 (선택적으로) 쓰기 위한 블록, 섹터 또는 클러스터 크기. 각 블록에는 자체 물리적 주소가 있습니다. 일반적으로 블록 크기는 512 - 65536입니다. 전송된 모든 정보는 연속된 블록에 포함됩니다. 블록 디바이스의 기본 특징은 각 블록이 상대적으로 독립적이어서 독립적으로 읽고 쓸 수 있다는 것입니다. 일반적인 블록 장치에는 하드 드라이브, Blu-ray 디스크 및 USB 드라이브가 포함됩니다.
블록 장치는 일반적으로 /dev/sda에 위치하며 첫 번째 속성은 [b]입니다.
또 다른 유형의 I/O 장치는 문자 장치입니다. 문자 장치는 블록 구조에 관계없이 문자 단위로 문자 스트림을 보내거나 받습니다. 문자 장치는 주소를 지정할 수 없으며 검색 작업을 수행하지 않습니다. 일반적인 문자 장치에는 프린터, 네트워크 장치, 마우스 및 디스크와 다른 대부분의 기타 장치가 포함됩니다.
문자 장치의 가장 큰 특징은 한 번 읽을 수 있고 출력이 잘릴 수 없다는 것입니다. 예를 들어 마우스를 한 번에 다른 곳으로 이동할 수는 없지만 부드러운 움직임을 사용합니다. 기음].
데이터 인터페이스 파일(소켓): 이름에서 알 수 있듯이 데이터 인터페이스 파일은 소켓을 사용하여 네트워크 데이터를 수신하며 일반적으로 /run 또는 /tmp와 같은 디렉터리에 표시됩니다.
데이터 전송 파일(FIFO, 파이프): FIFO도 특수한 유형의 파일입니다. 주요 목적은 여러 프로그램이 동시에 파일에 액세스하여 발생하는 오류 문제를 해결하는 것입니다. .
Linux Extension
이 확장을 얘기하는 것은 사실 골치아픈 일입니다. Linux에는 확장이라는 개념이 없지만 확장에 대한 몇 가지 명명 방법이 있기 때문에 지금은 확장이 됩니다. 유형. 일반적으로 다음과 같은 유형이 있습니다.
*.sh는 실행 스크립트 또는 배치 스크립트이며 일반적으로 셸 스크립트라고도 하며 셸 구문으로 작성된 일부 지침이 포함되어 있습니다.
.tar, .tar.gz, .zip, *.tgz, 이 확장자 유형은 패키지된 압축 파일이며, 다양한 패키징 방법에 따라 다양한 확장자 유형이 있습니다.
.html, .php: 웹 페이지 관련 파일은 각각 HTML 및 PHP 구문으로 된 웹 페이지 파일을 나타냅니다.
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 반드시 이해해야 할 Linux 권한(요약 공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!