Linux入門 3-1 ファイル・ディレクトリの操作と管理

[](参照ソース)
[Udemyの動画講座]:https://www.udemy.com/course/linuxlpic/?utm_source=bene-content-marketing&utm_campaign=normal&utm_content=story&utm_term=career&utm_medium=udemyads
[Linux入門 2-4]:https://qiita.com/hoglet/items/152c3c9c711911e6d9c8
[Linux入門 3-2]:https://qiita.com/hoglet/items/c6af8d1bd5c256b0369a
# はじめに
Linux初学者である自分向け用の記事です。[Udemyの動画講座]を参考にしました。
僕の勉強法は`動画を見る`→`実際に動かしてみる`→`問題演習`という流れです。

前回まで：[Linux入門 2-4]

***
# 3. LinuC 101 Ver .10.0(問題、テスト、演習)
# ファイル・ディレクトリの操作と管理

```
chmod , umask , chown , chgrp , ls
```
## ls
ディレクトリ、ファイルの属性を含んだ詳細な情報を表示するコマンド

```
ls -1: 縦に並べて表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/033efbbc-bb01-4808-a0f0-b9269760fd4e.png)

```
ls -l: 詳細（所有者、アクセス権など）も含んだ情報を表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/bbd43604-9ea3-5a05-9393-c06031e56a59.png)

```
ls -a: . から始まるファイル（隠しファイル）も表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/92b5686b-8fac-8ab9-0eb0-b9a810148605.png)

```
ls -r: 逆順に表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/d27294e5-2a01-6a44-0eb8-7a12d7a499c7.png)

```
ls -R: ディレクトリ内を再帰的にすべて表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/dc2509d7-7e2f-fbfb-d510-bb006fba0f4a.png)

```
ls -t: 更新日時でソートして表示
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/b0525368-83a0-b068-8cc0-a787fc8a17ad.png)

## chown
指定したファイル、ディレクトリの所有するユーザ、グループの変更
-R: ディレクトリの中身も再帰的に変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/3c10d5b0-774d-15ea-8399-cddb6c8c4532.png)

```
test.txtの所有ユーザをrootからtestに変更
chown test test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/bc7dc053-1f02-7394-257b-3b7eb6ecb5a0.png)

```
test.txtの所有ユーザをroot、所有グループをtest に変更
chown root:test test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/78311303-e3b1-a04e-0938-a5731d8e0c44.png)

```
d1と中のファイル所有ユーザをroot、所有グループをtest に変更
chown -R root:test d1/
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/356176d9-26d6-c825-cf6e-58f2e4ac4a74.png)

## chgrp
指定した所有グループに変更
-R: ディレクトリの中身も再帰的に変更

```
test.txtの所有グループをmy_groupに変更
chgrp my_group test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/53b0fbd8-6022-197a-135c-142940249dbf.png)

## chmod
アクセス権を変更するコマンド（root ユーザと所有しているユーザが実行できる）
-R: ディレクトリの中身も再帰的に変更

簡易早見表(これだけ覚えればOK！)

```
4 2 1
r w x
```

|0  |1  |2  |3  |4  |5  |6  |7  |
|---|---|---|---|---|---|---|---|
|---|--x|-w-|-wx|r--|r-x|rw-|rwx|

権限の区分

|ディレクトリ  |所有者権限  |グループ権限  |その他のユーザーの権限  |
|---|---|---|---|
|d  |7  |5  |3  |
|-  |rwx  |r-x  |-wx  |
## 実行例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/70873f31-52b7-e000-eb28-d17a958bf32e.png)

```
すべての権限を付与しない
chmod 000 test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/9b11ecd2-7e90-b575-b613-3ae70e3d7b5d.png)

```
r-x -wx --xの権限
chmod 531 test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/d45c35b2-f30b-b010-cd28-e60d8357f262.png)

```
所有ユーザにr--権限を付与
chmod u+r test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/9ce932a5-ce6d-475f-be25-5578f238e01b.png)

```
所有グループにrw-権限を付与
chmod g+rw test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/9a669f45-36cd-7b1d-3765-dfd0efd19524.png)

```
その他ユーザにrwx権限を与える
chmod o+rwx test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/c78e9083-87f2-c801-9a5b-1d4aa9d48aca.png)

```
所有ユーザと所有グループからr-x権限をはく奪
chmod ug-rx test.txt
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/4ff5cb5d-cd20-bba8-f0f8-4c0a16ec4c99.png)
```
## 所有グループの設定

```
my_groupグループにtestユーザを追加
usermod -g my_group test
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/7ae94485-25d4-a374-fdda-ef65453174eb.png)

## SUID
`Set User ID`の略で、SUIDが設定されているファイルが実行されると、所有ユーザの権限で実行される

```
a.outに対してSUIDを設定する
chmod u+s a.out
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/f1925f48-be3d-0953-d93a-72a00dff1deb.png)
これは、testユーザーの所有ユーザ権限だと実行できないもの（今回は所有ユーザがrootである`a.out`）が、SUIDを設定することで実行できるようになる。

```
//実行不可
test@ $ ./a.out
//a.outに対してSUIDを設定
root@ $ chmod u+s a.out　（もしくは）root@ $ chmod 4755 a.out
//実行可能
test@ $ ./a.out
```
## SGID
`Set Group ID`の略で、SGID が設定されているファイルが実行されると、所有グループの権限で実行される

```
a.outに対してSUIDを設定する
chmod g+s a.out
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/07b6dac7-d94a-4d7e-6569-f2b4c7268387.png)

## スティッキーピット
ディレクトリに設定すると、 他のユーザがファイルを削除できなくなる

```
sticky/は所有ユーザ以外が削除できない
chmod o+t sticky/　（もしくは）　chmod 1544 sticky/
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/eb068336-e7ec-fb82-ce50-53f4e3e56266.png)

## umask
デフォルトのアクセス権を設定する ファイルは 666 から、ディレクトリは 777 から umask で指定した値を引いたものがデフォルト のアクセス権になる

```
ファイルは 666 から、ディレクトリは 777 から umask で指定した値を引いたものがデフォルト のアクセス権になる
umask 666
```
file6のデフォルトは644である。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/13eb75fc-dce4-47ef-b127-4c3bbf3456d6.png)

```
ファイルのデフォルトのアクセス権は666から指定した666を引いたもの->000になる。
$ umask 666
$ touch file
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/f7828c1f-f3f0-d515-c8be-20852a11a550.png)

```
ファイルのデフォルトのアクセス権は666から指定した002を引いたもの->664になる。
$ umask 002
$ touch file4
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/de2ed619-9d13-8881-ecdf-15a9a78ac58d.png)

*To Be Continued...*
[Linux入門 3-2] へ
***