私はここ数ヶ月Linuxのコースを受講してきましたが、 (Linux)Linuxの1つの側面で常に混乱していたのは、権限がどのように機能するかでした。たとえば、ファイルをWebサーバーに一度アップロードしてエラーが発生した場合、Webホストからファイルのアクセス許可を755に変更するように指示されました。
権限を変更すると問題が修正されましたが、それが何を意味するのかわかりませんでした。Linuxの権限はそれほど複雑ではなく、システムを理解するだけでよいことに気づきました。この記事では、Linuxのアクセス許可について高レベルで説明し、chmodコマンドを使用してファイルとフォルダーのアクセス許可を変更する方法を示します。
Linuxの権限とレベル
Linuxでは(Linux)、基本的に、読み取り、書き込み、実行の3つの権限について通常心配する必要があります。これらの3つはすべてかなり自明です。これらの権限がファイルに適用されると、レベルで適用されます。
Linuxには、所有者、グループ、その他の3つのレベルの権限があります。所有者はファイル/フォルダーを所有するユーザーであり、グループにはファイルのグループ内の他のユーザーが含まれ、その他は所有者またはグループ内にない他のすべてのユーザーを表します。
読み取り(Read)、書き込み、および実行は、記号文字または8進数として表されます。たとえば、いくつかのファイルがあるディレクトリでls -lを実行すると、権限の記号表現が表示されます。
権限は次のように記述されます。最初のビットはダッシュまたは文字dのいずれかです。ダッシュ(Dash)はそれがファイルであることを意味し、dはディレクトリを表します。ファイル名がリンクの場合、最初のビットもlになる可能性があることに注意してください。(l)次に、3ビットの3つのグループがあります。各グループの最初のビットは読み取り用、2番目のビットは書き込み用、3番目のビットは実行用です。最初の3ビットは所有者用、次の3ビットはグループ用、3番目の3ビットはその他用です。これがより視覚的な説明です。
文字の代わりにダッシュが表示されている場合は、所有者、グループ、または他のすべてのユーザーがその権限を持っていないことを意味します。上記の例では、所有者、グループ、およびその他すべての人が読み取り、書き込み、および実行のアクセス許可を持っています。
ls -lコマンドからの出力を見ると、私の練習用テキストファイルに次の権限があることがわかります。
-rw-rw-rw-
これは、誰もがファイルの読み取り/書き込み権限しか持っていないことを意味します。別の例を次に示します。
drwxr--r--
最初のビットを見ると、アクセス許可がディレクトリに対するものであることがわかります。所有者には読み取り/書き込み/実行権限がありますが、グループおよび他のユーザーには読み取り権限しかありません。
8進数の表現
これが、 Linux(Linux)でシンボルを使用して権限が表示される方法です。同じ権限を表す2番目の方法は、8進数を使用することです。後でchmodコマンドを使用すると、記号または8進数のいずれかを使用して権限を変更できることがわかります。
では、 Linux(Linux)は8進数を使用して読み取り、書き込み、実行をどのように表現するのでしょうか。基本的には、以下に示すように、各権限に番号を割り当てるだけです。
読み取り権限は4で表され、書き込みは2で、実行は1で表されます。必要なのは、8進数の権限を取得するためにそれらを合計することだけです。たとえば、全員がすべての権限を持っている上記の例を見てみましょう。
-rwxrwxrwx
所有者はrwxを持っているので、4 + 2 + 1を追加して値7を取得します。グループに対しても同じことを行い、他のグループに対しても同じことを行います。最終的な8進数の値は777です。読み取り/書き込み権限のみを付与した例を見てみましょう。
-rw-rw-rw-
読み取りと書き込みを追加しているため、最初の8進数は4+2になります。2番目のものは3番目の8進数と同じになります。ここでは、666の最終的な8進数値があります。
それでは、別の方法で試してみましょう。755が表す権限を知りたいとしましょう。さて、それを個々の数字で分類すると、非常に簡単に理解できます。最初の数値は7です。これは、4 + 2 + 1を追加することによってのみ取得できます。これは、所有者が読み取り/書き込み/実行のアクセス許可を持っていることを意味します。5は、4 + 1を追加することによってのみ取得できます。つまり、グループおよび他のユーザーは、読み取りおよび実行のアクセス許可を持っています。
うまくいけば(Hopefully)、それは8進数を使用してLinuxでパーミッションを表す方法の良い説明です。全体的にはかなり簡単です。
chmodを使用して権限を変更する
権限の読み取り方法を理解したので、権限を変更する方法について説明しましょう。この目的で使用する最も簡単なユーティリティは、chmodコマンドです。仕組みは次のとおりです。コマンドを説明する最良の方法は、例を確認することです。
上記で説明した権限から始めましょう。つまり、次のようになります。
-rw-rw-rw-
所有者、グループ、その他の実行権限を追加する場合は、2つの方法で実行できます。シンボル法または8進法を使用できます。シンボルメソッドの場合、以下に示すように、次のようにします。
正確なコマンドは
chmod a+x filename
構文は次のとおりです。所有者(u)、グループ(g)、その他(o)、またはすべて(a)を表す1つまたは複数の文字の後に、アクセス許可を追加する場合は +–、権限(読み取りの場合はr、書き込みの場合はw 、実行の場合は(w)x)。
上記の例では、すべてのユーザーに実行権限を追加しました。上のスクリーンショットでわかるように、結果は所有者、グループ、その他のxになります。(x)ここで、グループと他のユーザーのみの書き込みおよび実行権限を削除したいとします。
ここでわかるように、私はこれを達成するために次のコマンドを使用しました。
chmod go-wx filename
グループなどの権限を変更したいので、文字gと文字oを使用します。権限を削除したいので、–記号を使用します。最後に、書き込みと実行のアクセス許可を削除したいので、wとxを使用します。シンボルの使用法に関する便利な小さな表を次に示します。
シンボルメソッドを使用する方法はこれですべてです。それでは、8進法について話しましょう。これは、少し簡単だと思います。パーミッションを一度に追加または削除できるため、Octalは便利です。(Octal)
ファイルに対して次のアクセス許可から始める場合は、8進数の方法を使用してそれらを変更する方法を見てみましょう。
-rw-rw-rw-
上記(Above)では、次のコマンドを使用したことがわかります。
chmod 744 filename
これは基本的に、所有者が読み取り/書き込み/実行権限を取得し、グループおよびその他が読み取り権限のみを取得することを意味します。ご覧のとおり、1つの簡単なコマンドで権限を追加または削除するのは簡単です。続けて、権限をもう一度変更したいと言いましょう。
ここで、次のコマンドを使用しました。これも非常に単純なコマンドです。
chmod 640 filename
ここでは、所有者に読み取り/書き込み権限を付与し、グループには読み取り権限のみを付与し、他のグループには権限を付与していません。権限がないことを示すには、ゼロを使用します。とても簡単ですね
結論として、これはLinuxのアクセス許可の非常に単純な概要であり、これよりもはるかに複雑になる可能性がありますが、初心者にとっては、始めるのに適した場所です。将来的には、より高度な権限に関する記事をさらに投稿する予定です。ご不明な点がございましたら、お気軽にコメントください。楽しみ!
Understanding Linux Permissions and chmod Usage
I’ve been taking a course on Linux for thе last few months and one aspect of Linux that always confusеd me was how permissions worked. Fоr еxamрle, whеn uрloading a file to my web server once and getting an error, I was told by my web hоst to change the file permissions to 755.
I had no clue what that meant, even though changing the permissions fixed the problem. I’ve now realized Linux permissions aren’t all that complicated, you just have to understand the system. In this article, I’ll talk about Linux permissions on a high-level and show you how to use the chmod command to change permissions for files and folders.
Linux Permissions & Levels
In Linux, there are basically three permissions that you will normally have to worry about: read, write and execute. All three of these are pretty self-explanatory. Now when these permissions are applied to a file, they are applied in levels.
There are three levels of permissions in Linux: owner, group and other. The owner is the user who owns the file/folder, the group includes other users in the file’s group and other just represents all other users who are not the owner or in the group.
Read, write and execute are represented as either symbolic characters or as octal numbers. For example, if you do a ls -l in a directory with some files, you’ll see the symbolic character representation of the permissions.
The permissions are written as follows: the first bit is either a dash or the letter d. Dash means it’s a file and d stands for directory. Note that the first bit can also be an l if the file name is a link. Next, there are three groups of three bits. The first bit in each group is for read, the second bit is for write and the third bit is for execute. The first three bits are for the owner, the second three bits are for the group and the third three bits are for other. Here’s a more visual explanation.
If you see a dash in place of a letter, it means that the owner, group or all other users do not have that permission. In the example above, the owner, group and everyone else has read write and execute permissions.
If you look at the output from the ls -l command, you’ll notice that my practice text file has the following permissions:
-rw-rw-rw-
This means that everyone only has read/write permissions for the file. Here’s another example:
drwxr--r--
Looking at the first bit, we can see that the permissions are for a directory. The owner has read/write/execute permissions, but the group and other users only have read permission.
Octal Number Representation
So that’s how permissions are displayed in Linux using symbols. The second way to represent the same permissions is by using octal numbers. When we use the chmod command later on, you’ll see that you can change the permissions using either symbols or octal numbers.
So how does Linux represent read, write and execute using octal numbers? Basically, it just assigns a number to each permission as shown below.
The read permission is represented by 4, write by 2 and execute by 1. All you have to do is add them up to get the octal permission. For example, let’s take the example above where everyone has all permissions:
-rwxrwxrwx
The owner has rwx, so we will add 4 + 2 + 1 to get a value of 7. We do the same thing for group and the same thing for other. The final octal value is 777. Let’s take a look at the example where we only gave read/write permissions:
-rw-rw-rw-
The first octal number will be 4 + 2 since we are adding read and write. The second one will be the same as will the third octal number. Here we have a final octal value of 666.
So now let’s try it the other way. Say we want to know what permissions 755 represents? Well, it’s pretty easy to figure out if you break it down by individual numbers. The first number is 7, which we can only get by adding 4 + 2 + 1, meaning the owner has read/write/execute permission. Five can only be gotten by adding 4 + 1, meaning the group and other users have read and execute permissions.
Hopefully, that’s a good explanation for how to represent permissions in Linux using octal numbers. It’s pretty straight-forward overall.
Using chmod to Modify Permissions
Now that we understand how to read permissions, let’s talk about how we can change them. The easiest utility to use for this purpose is the chmod command. Here’s how it works. The best way to explain the command is to go through an example.
Let’s start with the permissions we talked about above, namely:
-rw-rw-rw-
If we wanted to add the execute permission for owner, group and other, we could go about it in two ways. We could use the symbol method or the octal method. For the symbol method, we would do the following, as shown below:
The exact command is
chmod a+x filename
The syntax is as follows: the letter or letters representing the owner (u), group (g), other (o) or all (a) followed by a + for adding permissions or a – for taking away permissions and then the letter for the permission (r for read, w for write and x for execute).
In the above example, I added the execute permission for all users. The result as you can see in the screenshot above is an x for owner, group and other. Now let’s say I wanted to remove the write and execute permissions for only the group and other users.
As you can see here, I used to the following command to accomplish this:
chmod go-wx filename
Since I want to change the permissions for group and other, I use the letter g and the letter o. I want to remove permissions, so I use the – sign. Finally, I want to remove the write and execute permissions, so I use w and x. Here’s a handy little table for symbol usage:
So that’s all there is to using the symbol method. Now let’s talk about the octal method, which I find to be a bit easier. Octal is nice because you can add or remove permissions all in one go.
If we start with the following permissions on a file, let’s see how we can change them using the octal method:
-rw-rw-rw-
Above, you can see I used the following command:
chmod 744 filename
This basically says the owner gets read/write/execute permission and the group and other gets read permission only. As you can see, it’s easy to add or remove permissions in one simple command. Let’s keep going and say I want to change permissions again.
Now I used the following command, again a very simple one:
chmod 640 filename
Here we have given the owner read/write permissions, the group read permission only and the other group no permissions. You use a zero to denote no permissions. Pretty simple, eh?
In conclusion, this is a very simple overview of Linux permissions and it can get a lot more complicated than this, but for beginners, it’s a good place to start. I’ll be posting more articles on more advanced permissions in the future. If you have any questions, feel free to comment. Enjoy!