この記事では、権限のプロパティを変更する方法など、Linux 権限に関する知識を提供します。皆様のお役に立てれば幸いです。
Linux を使用する過程で、多かれ少なかれ、ユーザーとグループに関するいくつかの問題に遭遇します。特定のパスで特定のコマンドを実行すると、このエラー メッセージが表示されることがよくあります。
permission denied
とにかく、FTP を使用してファイルを転送すると、このエラーが表示される可能性が高くなります。長時間待っても、転送率はまだゼロです。ネットワークはそんなに遅いのでしょうか?なぜ伝わらないのでしょうか?実際のところはわかりませんが、これは権限の問題が原因です。
私の一般的な修復方法は、777 アクセス許可を直接付与するか、su 管理者を直接使用してログインすることです。 。 。 。 。 。
あなたは私が何を言っているのかわからないかもしれませんし、私のアプローチが低すぎると考える偉い人もいるかもしれません。とにかく、この種の問題が発生した場合は、十分な権限がないことを意味します。なぜ?次に、Linux のユーザーとグループについて知る必要があります。
ユーザーとグループ
Linux では、ファイル所有者は、ファイル所有者、グループ、およびその他が属する 3 つのカテゴリに分類されます。次の 3 つの概念をそれぞれ説明します。
ファイル所有者
Linux は、マルチユーザー マルチタスク システムです。ユーザーとは、一部のユーザーが作成したファイルが他のユーザーに表示されるかどうかを意味します。これは可視性の問題であり、プライバシーの問題でもあります。全員のプライバシーを考慮するために、Linux はファイルの所有権を作成者の役割として設計しました。機密性の高い情報やファイルがある場合、そのファイルを「自分だけが閲覧できる」ように設定することがファイル所有者の役割です。
グループ
グループの概念はチーム開発で使用され、プロジェクトでより便利です。 権限の設定たとえば、あなたが銀行のアウトソーシング部門で働いており、あなたと他のアウトソーシング部門が共同で特定の銀行にサービスを提供しており、すべてのアウトソーシング グループが 1 つのサーバーを使用している場合、グループのアクセス許可の問題が発生します。他のアウトソーシング部門にプロジェクトを表示したくない場合は、プロジェクトがグループに表示されるように設定します。ただし、全体の責任者は銀行であり、すべての銀行がアウトソーシング部門のすべてのプロジェクトを参照する権限を持っているため、銀行の権限も設定する必要があります。
#他人は所属する
Linux ファイルのアクセス許可
ユーザーとグループの概念について上で説明した後、ファイルのアクセス許可について話しましょう。それをどのように設定するかという問題です。 up は、アクセス許可が拒否された問題を解決するための鍵となるため、非常に重要です。権限属性
最初に Linux システムにログインし、su - を使用してルート ID に切り替えてから、ls -al を実行します。 コンテンツは合計 7 列あり、これら 7 つの列の内容は次の図に示すとおりです。 後続の chgrp、chown、およびその他の命令の処理には root が必要であるため、学習時には root を直接使用できますが、作業中は root 権限を使用しないことを強くお勧めします。 root として終了するには、exit を使用します。 上記のコマンドでは、ls はリスト (リスト) を意味し、オプション -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 上のデバイスは、ブロック デバイスとキャラクター デバイスの 2 つのタイプに分類されます。
ブロック デバイスはデバイスです。固定サイズのブロック、セクター、またはクラスターでのデータの読み取りおよび (オプションで) 書き込みをサポートする、固定サイズのブロック情報を持つデバイス。各ブロックには独自の物理アドレスがあります。通常、ブロック サイズは 512 ~ 65536 です。転送されるすべての情報は連続したブロック内に収まります。ブロック デバイスの基本的な特徴は、各ブロックが比較的独立しており、独立して読み書きできることです。一般的なブロック デバイスには、ハード ドライブ、Blu-ray ディスク、USB ドライブなどがあります。
ブロック デバイスは通常 /dev/sda の下にあり、その最初の属性は [b] です。
もう 1 つのタイプの I/O デバイスは、キャラクター デバイスです。キャラクタ デバイスは、ブロック構造に関係なく、キャラクタ単位でキャラクタのストリームを送受信します。キャラクタ デバイスはアドレス指定できず、シーク操作を実行しません。一般的なキャラクター デバイスには、プリンタ、ネットワーク デバイス、マウス、およびディスクとは異なるその他のほとんどのデバイスが含まれます。
キャラクターデバイスの最大の特徴は、一度読み込むだけで出力が切り捨てられないことです。たとえば、マウスを一度に別の場所にジャンプさせることはできませんが、スムーズな動きを使用します。の属性は [c] です。
データ インターフェイス ファイル (ソケット): 名前が示すように、データ インターフェイス ファイルはソケットを使用してネットワーク データを受信します。その属性は [s] で、通常はディレクトリ / にあります。 run または /tmp.到着します。
データ転送ファイル (FIFO、パイプ): FIFO も特別なタイプのファイルであり、その主な目的は、複数のプログラムが同時にファイルにアクセスすることによって引き起こされるエラーの問題を解決することです。 . の最初の属性は [p] です。
Linux 拡張機能
この拡張機能に関しては、実は頭の痛い問題です。Linux Conceptual には拡張機能はありません。 , しかし、拡張子の名前付け方法がいくつかあり、非常に恥ずかしいので、ここでは拡張子の種類と呼びます。一般に、次の種類があります:
*.sh. これは実行スクリプトまたはバッチ スクリプトです。一般にシェル スクリプトとも呼ばれます。シェル構文で記述されたいくつかの命令が含まれています。 。
.tar、.tar.gz、.zip、*.tgz、この拡張子タイプはパッケージ化された圧縮ファイルであり、さまざまなパッケージ化方法に応じてさまざまな拡張子のタイプがあります
.html、.php: Web ページ関連ファイル。それぞれ HTML および PHP 構文で Web ページ ファイルを表します。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上が理解する必要がある Linux 権限 (概要の共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。