mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

16_Linux基礎-ファイル&ディレクトリの権限と所有権

一。ファイル / ディレクトリの権限#

ファイル / ディレクトリの権限

アクセス権限

  • 可読(read):ファイルの内容を表示し、ディレクトリのリストを表示することを許可する r
  • 可写(write):ファイルの内容を変更し、ディレクトリ内に新しいファイルやサブディレクトリを作成、移動、削除することを許可する w
  • 可実行(execute):プログラムを実行し、ディレクトリを切り替えることを許可する x

所有権(オーナーシップ)

  • ファイル所有者(owner):そのファイルまたはディレクトリのユーザーアカウント # 注:所有者
  • 属組(group):そのファイルまたはディレクトリのグループアカウント # 注:グループ
  • その他の人(others):所有者とグループ以外の他の人 # 注:その他

#注:ファイルに対してかディレクトリに対してかを区別する

ls -al 現在のディレクトリ内のファイルまたはフォルダの詳細情報を表示し、ファイルの権限を含む
ls -ld 現在のディレクトリを表示
例1:ファイルの権限を表示 ls -al
# 注:第三列は所有者、第四列はグループ
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -al				#注:ファイルの権限を表示
合計 668
-rw-r--r--.  1 root root    211 9月  18 10:31 '!'
dr-xr-x---. 21 root root  12288 11月  6 15:16  .
[root@sanchuang-linux ~]# ls -al zuoye.sh 		# 注:単一ファイルの権限を表示
-rw-r--r--. 1 root root 1212 10月 29 20:20 zuoye.sh
[root@sanchuang-linux ~]# ls -al /home			# 注:/homeディレクトリ内のすべてのファイルの権限を表示
合計 18348
drwxr-xr-x. 43 root         root            4096 11月  6 15:36 .
dr-xr-xr-x. 38 root         root            4096 11月  5 15:12 ..
[root@sanchuang-linux ~]# ls -al *.sh			# 注:ファイルの権限を表示
-rw-r--r--. 1 root root    0 9月  25 09:35 backup_log.sh
-rw-r--r--. 1 root root   41 10月 28 20:27 file_test.sh

例2:ディレクトリの権限を表示 ls -ld /home
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -ld /home			# 注:/homeディレクトリの権限を表示
drwxr-xr-x. 43 root root 4096 11月  6 15:36 /home

二。ファイル / ディレクトリの権限#

[root@localhost ~]# ls -ld first.py 
-rw-r--r--. 1 root root 1097 10月 13 10:20 first.py
ファイルタイプ アクセス権限 所有者 グループ

image-20220816204743513

例:drwxr-xr-x
--------------------------------------------------------------------------------------------
第一列:ファイルタイプと権限を示す
	最初の文字
        -	通常ファイル file
        d	ディレクトリを示す
        s	socketファイルを示す			# 注:socket(ソケット)はプロセス間通信の一種。
        p	パイプファイル pipe
        c	キャラクタデバイスファイル	tty
        b	ブロックデバイスファイル	ディスク(disk)	# 注:ハードウェアに関連するブロックデバイスファイルは一般的に /devに置かれる
        l	リンクファイル				# 注:/usr/bin/ディレクトリには多数のリンクファイルが存在する

  #権限 r 可読  w 可写  x 可実行
  ·第2-第4文字
  	  所有者の権限を示す
  ·第5-第7文字
  	  グループの権限を示す
  ·最後の3文字
	  他の人の権限を示す
--------------------------------------------------------------------------------------------
入力したすべてのコマンドはPATH環境変数のパス内で検索される

リンクファイルを作成
# 注:ln -s ソースファイル 目標ファイル		symbolic adj. 象徴的;記号の;記号を使用する
[root@sanchuang-linux bin]# ln -s python3.6 python			# 注:-sはソフトリンクを作成
[root@sanchuang-linux bin]# ln -s python3.6 /root/python	# 注:絶対パスでリンクファイルを作成できる
#注:リンクファイル/root/pythonは/rootディレクトリに置かれた
whichコマンドの絶対パスを確認
[root@sanchuang-linux bin]# which mkdir
/usr/bin/mkdir
[root@sanchuang-linux bin]# mv /usr/bin/mkdir /usr/bin/mkdirbak	# 注:名前を変更した後、コマンドが見つからなくなった
[root@sanchuang-linux bin]# mkdir
-bash: mkdir: コマンドが見つかりません
[root@sanchuang-linux bin]# mkdirbak /tmp/mkdir
[root@sanchuang-linux bin]# mv /usr/bin/mkdirbak /usr/bin/mkdir	# 注:元に戻す

/usr/bin/には多数のリンクファイルが存在する
[root@sanchuang-linux tmp]# cd /usr/bin/						# 注:/usr/bin/には多数のリンクファイルが存在する
[root@sanchuang-linux bin]# ls -al python2						# 注:リンクファイル
lrwxrwxrwx. 1 root root 9 6月   5 11:38 python2 -> python2.7
[root@sanchuang-linux bin]# ls -al python3						# 注:リンクファイル
lrwxrwxrwx. 1 root root 25 9月  18 15:47 python3 -> /etc/alternatives/python3

三. socket(ソケット)#

#注:socket(ソケット)はプロセス間通信の一種で、通常は異なるホストの異なるプロセス間の通信方法(ネットワークプログラミング)

ftp には vsftpd サービスがあり、vsftpd サーバーが起動すると 21 番ポートが開かれる。ftp クライアントがこのサービスに接続するには、ftp クライアントはランダムポートを開いて 21 番ポートに接続し、ネットワーク伝送を行う。ネットワークを通じて特定のプロトコルを指定してネットワーク接続を行う。

vsftpd を起動すると、socket ファイルが生成される

ポートを開放すると、基本的に socket ファイルが存在する

[root@localhost mail]# cd /data/mysql
[root@localhost mysql]# ls -al
srwxrwxrwx  1 mysql mysql        0 10月  7 12:04 mysql.sock		# 注:s socketファイル (ピンク)

四. Linux カーネルの 5 つのサブシステム#

Linux カーネルの 5 つのサブシステム:

  • 1、ファイルシステム
  • 2、メモリ管理
  • 3、プロセス通信
  • 4、プロセススケジューリング
  • 5、ネットワークインターフェース

五。プロセス#

プロセスはシステムがリソースを配分する基本単位であり、異なるプロセス間のリソースは互いに隔離されている

プロセス間通信(一般的な 5 種類):

  1. パイプ
  2. シグナル (kill -9)
  3. 共有メモリ
  4. socket ソケット
  5. メッセージキュー
例1:パイプ				#注:パイプはプロセス間通信の一種

[root@sanchuang-linux ~]# cat /etc/passwd |grep sanchuang	# 注:パイプを通じて前のプロセスの出力を後のプロセスの入力に渡す
sanchuang:x:1005:1005::/home/sanchuang:/bin/bash
#注:同じホストの異なるプロセスに適用
--------------------------------------------------------------------------------------------
例2:シグナル				
例:kill -9 pid
[root@sanchuang-linux ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1………………
[root@sanchuang-linux ~]# ps -ef |grep nginx
root        5868    5691  0 16:29 pts/0    00:00:00 grep --color=auto nginx
[root@sanchuang-linux ~]# kill -9 2868					# 注:9というシグナルを1209プロセスに送信
--------------------------------------------------------------------------------------------
例3:共有メモリ
#注:A、B間で新しいメモリ空間を作成し、一緒に取得できる
#注:同じホストの異なるプロセスに適用
--------------------------------------------------------------------------------------------
例4:socketソケット
#注:異なるホスト間の異なるプロセスのネットワーク通信
--------------------------------------------------------------------------------------------
例5:メッセージキュー
#注:待機列のようなもので 1,2,3,4,5,6
#注:ABが共有するメモリ空間で、Aが生成したものをBが取得する。Aが1を生成し、Bがそれを取得し、1がAから出ていく

六. / ルートディレクトリ#

/etc 設定ファイルを保存
/dev デバイスファイルを保存 # 注:ハードウェア関連のディスク、ネットワークカード、socket
/root # 注:root ユーザーのホームディレクトリ
/home # 注:一般ユーザーのホームディレクトリファイルを保存

[root@sanchuang-linux ~]# cd /dev
[root@sanchuang-linux dev]# ls -al
crw-rw-rw-   1 root tty       5,   0 11月  6 11:32 tty		# 注:キャラクタデバイスファイル	tty
crw--w----   1 root tty       4,   0 11月  5 15:12 tty0
crw--w----   1 root tty       4,   1 11月  6 14:28 tty1
brw-rw----   1 root disk      8,   0 11月  5 15:12 sda		# 注:ブロックデバイスファイル	ディスク

七。実行権限#

第一列の第2から第10文字
  #権限 r 可読  w 可写  x 可実行
  第2-第4文字
  	  所有者の権限を示す
  第5-第7文字
  	  グループの権限を示す
  最後の3文字
	  他の人の権限を示す

--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -al men_test.sh 
-rw-r--r--. 1 root root 0 10月 30 16:26 men_test.sh
[root@sanchuang-linux ~]# bash men_test.sh 	# 注:bashインタプリタを使用して実行(新しいbashを生成)
[root@sanchuang-linux ~]# sh men_test.sh 	# 注:shインタプリタを使用して実行(新しいshを生成)
[root@sanchuang-linux ~]# . men_test.sh		# 注:現在のbashを使用して実行し、現在の環境変数を継承
#注:現在のbash、現在の環境
[root@sanchuang-linux ~]# ./men_test.sh 	# 注:権限が不足しているため、実行権限がない
-bash: ./men_test.sh: 権限が不足しています				 # 注:実行権限のあるファイルは直接./men_test.shで実行できる

八. Shell ファイルの実行方法#

Shell ファイルの実行方法(3 種類)
#注:shell 内の実行可能ファイルの拡張子に制限はなく、必ずしも.sh で終わる必要はない

[root@sanchuang-linux ~]# vim test_aa.sh
echo "testaa..."
echo $a
echo $b
[root@sanchuang-linux ~]# a=1
[root@sanchuang-linux ~]# b=2
[root@sanchuang-linux ~]# . test_aa.sh 	# 注:現在のbashを使用してtest_aa.shを実行し、現在のシェルの環境変数を継承
testaa...								# 注:.を使用すると、現在のbash内のすべての変数を継承する
1
2
[root@sanchuang-linux ~]# bash test_aa.sh 	# 注:新しいbash環境を作成してコマンドを実行
testaa...									# 注:新しいbash環境にはa、b変数が定義されていない
											# 注:親bashのa、bを出力しない
											# 注:a、bを取得しない
[root@sanchuang-linux ~]# sh test_aa.sh 		# 注:新しいsh環境を作成してコマンドを実行
testaa...
											# 注:出力なし

[root@sanchuang-linux ~]# ./test_aa.sh 		# 注:ファイル自体を実行し、ファイル自体に実行権限があるかどうかを確認
-bash: ./test_aa.sh: 権限が不足しています				 # 注:現在のディレクトリにあるこのファイルを直接実行するには実行権限が必要
# 注:他の方法では必ずしも実行権限が必要ではない

まとめ
. test_aa.sh			実行権限は不要	現在のbashプロセスで実行
bash test_aa.sh			実行権限は不要	新しいbashプロセスで実行
sh test_aa.sh			実行権限は不要	新しいbashプロセスで実行
./test_aa.sh			実行権限が必要	新しいbashプロセスで実行

九. chmod コマンド#

chmod コマンド # 注:ファイルのアクセス権限を変更する

形式 1chmod [ugoa] [+-=] [rwx] ファイルまたはディレクトリ...

  • u、g、o、a はそれぞれ
    u 所有者、g グループ、o 他のユーザー、a すべてのユーザー

  • +、-、= はそれぞれ
    + 追加、- 削除、= 権限を設定

  • rwx
    対応する権限文字

一般的なコマンドオプション

  • -R:指定されたディレクトリ内のすべてのファイル、サブディレクトリの権限を再帰的に変更

--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# chmod u+x men_test.sh 		# 注:所有者に実行権限を追加
[root@sanchuang-linux ~]# ls -al men_test.sh 
-rwxr--r--. 1 root root 0 10月 30 16:26 men_test.sh		# 注:実行可能ファイルはすべて緑色
#注:実行可能ファイルはすべて緑色
#注:socketファイルはすべてピンク色
[root@sanchuang-linux ~]# ./men_test.sh 				# 注:直接実行できるようになった
--------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi]# chmod a-x sc -R		# 注:-R再帰的に、このディレクトリとその下のすべてのサブファイルから実行権限を削除
[root@sanchuang-linux lianxi]# chmod a+x sc -R		# 注:すべてのユーザーに実行権限を追加
============================================================================================
#注:ルートディレクトリは基本的にrootユーザーのみが使用できる
[root@sanchuang-linux ~]# ls -ld /
dr-xr-xr-x. 38 root root 4096 11月  5 15:12 /
============================================================================================
[root@mysql-binary ~]# chmod u+x group_member.sh 
[root@mysql-binary ~]# ./group_member.sh sanchuang5		# 注:実行権限を追加した後、./で実行できる
sanchuang5,sanchuang11,sanchuang13,sanchuang10,sanchuang12

十. chmod コマンド#

chmod コマンド # 注:ファイルのアクセス権限を変更する

形式 2chmod nnn ファイルまたはディレクトリ... # 注:nnn は 3 桁の 8 進数を示す

権限項目 読 書 実行 読 書 実行 読 書 実行

文字表示 r w x r w x r w x

数字表示 4 2 1 4 2 1 4 2 1

権限割り当て ファイル所有者 ファイル所属グループ 他のユーザー

image-20220816210259355

一般的なコマンドオプション

  • -R:指定されたディレクトリ内のすべてのファイル、サブディレクトリの権限を再帰的に変更

#注:root ユーザーは基本的に権限がなくても使用できる


--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# chmod 777 sc 				# 注:すべての権限を持つ
[root@sanchuang-linux ~]# chmod 700 sc 				# 注:所有者に読み書き実行権限を付与
--------------------------------------------------------------------------------------------
[root@sanchuang-linux home]# ls -ld sanchuang		# 注:ディレクトリの権限を表示 ls -ld
drwx------. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
[root@sanchuang-linux home]# chmod 777 /home/sanchuang		# 注:すべての権限を持つ
[root@sanchuang-linux home]# ls -ld sanchuang
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
[root@sanchuang-linux home]# chmod 777 /home/sanchuang -R	# 注:-R:指定されたディレクトリ内のすべてのファイル、サブディレクトリの権限を再帰的に変更
[root@sanchuang-linux home]# ls -ld sanchuang
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
#注:ユーザーのホームディレクトリ(例:/home/sanchuang)にすべてのオブジェクトに読み書き実行権限を付与すると、一般ユーザーsanchuangがリモートログインできなくなる

例:rootユーザーは基本的に権限がなくても使用できる
[root@sanchuang-linux ~]# ls -ld /etc/shadow
---------- 1 root root 4201 11月  7 12:04 /etc/shadow
[root@sanchuang-linux ~]# vim /etc/shadow

十一。一般的に普通ユーザーはホームディレクトリまたは /tmp ディレクトリ内にファイルまたはフォルダを作成できる#

一般的に普通ユーザーはホームディレクトリまたは /tmp ディレクトリ内にファイルまたはフォルダを作成できる

#注:/tmp ディレクトリは一時ディレクトリであり、一般的に一時的なもの(例:プログラムの実行中に記録する必要があるもの、プログラム終了後に /tmp ディレクトリ内のものを削除する)を保存する

[root@sanchuang-linux ~]# su - sanchuang
最終ログイン:金 11月  6 17:09:41 CST 2020pts/2
[sanchuang@sanchuang-linux ~]$ ls -ld /
dr-xr-xr-x. 38 root root 4096 11月  5 15:12 /
[sanchuang@sanchuang-linux ~]$ ls -ld /etc
drwxr-xr-x. 90 root root 8192 11月  7 15:00 /etc
[sanchuang@sanchuang-linux ~]$ ls -ld ./				# 注:ホームディレクトリ内にファイルまたはフォルダを作成
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 ./ 
[sanchuang@sanchuang-linux ~]$ ls -ld /tmp				# 注:/tmpディレクトリ内にファイルまたはフォルダを作成
drwxrwxrwt. 12 root root 264 11月  7 10:36 /tmp

#注:chmod 自分が所有者のときのみ、権限を変更できる

十二. chmod#

chmod # 注:ファイルの所有権限を変更する

chmod の使用は、ファイルの所有者でなければ、ファイルの読み書き実行権限を変更できない(root を除く)

[root@sanchuang-linux chenpeng]# su - sanchuang11		# 注:-を付けると自動的にホームディレクトリに移動
最終ログイン:土 11月  7 15:10:51 CST 2020pts/0
[sanchuang11@sanchuang-linux ~]$ exit
ログアウト
[root@sanchuang-linux chenpeng]# su sanchuang11			# 注:-を付けないと現在のパスのまま
[sanchuang11@sanchuang-linux chenpeng]$ 

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。