知らないかもしれないLinuxのファイル権限管理方法

知らないかもしれないLinuxのファイル権限管理方法

なぜ権限管理が必要なのでしょうか?

1. コンピュータ リソースは限られているため、コンピュータ リソースを合理的に割り当てる必要があります。

2. Linux はマルチユーザー システムです。すべてのユーザーにとって、個人のプライバシーの保護は非常に重要です。

ディレクトリのrwx権限

現在のユーザー: vagrant:vagrant

testdir ディレクトリを作成し、testdir ディレクトリに入ります。ファイルテストを作成します。

$ mkdir テストディレクトリ
$ cd テストディレクトリ
$ タッチテスト

testdirの権限を000に変更し、ls testdirを実行してみてください。

$ chmod 000 テストディレクトリ
$ ls テストディレクトリ/
ls: ディレクトリ testdir/ を開けません: 権限が拒否されました

testdirの権限を400に変更し、ls testdirを実行してみてください。

$ chmod 400 テストディレクトリ
ls -l テストディレクトリ/
ls: testdir/test にアクセスできません: 権限が拒否されました
合計 0
-????????? ? ? ? ? ? テスト

結果: ディレクトリ内のファイル リストは読み取れますが、現在のユーザーが /testdir/test の所有者であり、rwx 権限を持っているにもかかわらず、特定のファイル情報 (権限、サイズ、ユーザー グループ、時間など) は表示されません。

ディレクトリの r 権限により、ディレクトリ内のファイルのリストを読み取ることができます。

さあ、testdir ディレクトリに変更してみましょう。

$ cd テストディレクトリ/
-bash: cd: testdir/: アクセス権が拒否されました

r 権限ではディレクトリに入ることができないようです。

x権限を追加してみましょう。

~$ chmod 500 テストディレクトリ/
~$ cd テストディレクトリ/
~/testdir$ ls -l
合計 0
-rw-rw-r-- 1 放浪者 放浪者 0 11月19日 08:16 テスト

正常に入力されました。

ディレクトリに対して x 権限を持っていると、そのディレクトリに入ることができます。この作業ディレクトリでは、ファイルリストとファイル属性情報を表示できます。

テスト ファイルを削除するか、新しいファイル test1 を作成してみてください。

~/testdir$ rm テスト
rm: 'test' を削除できません: 権限が拒否されました
~/testdir$ タッチテスト1
タッチ: 'test1' をタッチできません: 権限が拒否されました

ディレクトリに対して rx 権限を持っていても、ディレクトリの内容を変更することはできません。ディレクトリ内のファイルのリストは、ディレクトリの内容と見なすことができます。

ディレクトリに対する w 権限を持つユーザーは、ディレクトリの内容を追加または削除できます。

~/testdir$ chmod 700 。
~/testdir$ rm テスト
~/testdir$ タッチテスト1
~/testdir$ ls -l
合計 0
-rw-rw-r-- 1 放浪者 放浪者 0 11月19日 08:30 test1

umask

上記の例では、作成した新しいファイルの権限は 664 (-rw-rw-r--) です。デフォルトの権限が 664 なのはなぜですか? 新しいファイルのデフォルトの権限を変更したい場合はどうすればよいですか?

コンソール入力umask:

$ umask
0002

umask は権限の 2 の補数です。ファイルのデフォルトの権限は 666 - umask です。

作成したファイルに対して他のユーザーに r 権限を与えたくない場合は、補足コードを 0006 に変更できます。

~/testdir$ umask 0006
~/testdir$ タッチテスト2
~/testdir$ ls -l | grep test2
-rw-rw---- 1 放浪者 放浪者 0 11月19日 08:38 test2

デフォルトのファイル権限が 777 - umask ではないのはなぜですか?新しく作成されたファイルにはデフォルトでは実行権限がないため、rw 権限のみを考慮すると、この操作は当然 666 になります。

デフォルトでは、ディレクトリには x の権限があります。umask が 0002 の場合、作成されたディレクトリのデフォルトの権限は 777 - 0002 = 775 になります。

~/testdir$ mkdir dir1
~/testdir$ ls -l | grep dir1
drwxrwxr-x 2 vagrant vagrant 4096 11月19日 08:39 dir1

特別な権限

スイド

一般的に言えば、ファイルの権限は rwx です。 passwd (パスワード変更コマンド) の権限を確認しましょう。

~/testdir$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 2017年5月16日 /usr/bin/passwd

よく見ると、ユーザー権限の x ビットが実際には s であることがわかります。この権限は SUID と呼ばれ、バイナリ プログラムに対してのみ有効です。

ユーザーがファイルの実行権限を持っている場合、ファイルを実行すると、一時的にファイル所有者の権限のサポートが取得されます。

たとえば、すべてのユーザーのパスワードは /etc/shadow ファイルに保存され、ファイルのデフォルトの権限は -r-------- root root です。root ユーザーのみに必須の書き込み権限があります。では、なぜ一般ユーザーがパスワードを変更できるのでしょうか? passwd コマンドには SUID 権限があるため、ユーザーがこのコマンドを実行すると、ファイル所有者の root の権限サポートが取得され、自分のパスワードが変更されます。

SGID

グループの x 位置が s になると、ファイルに SGID 権限があることを意味します。

SGID 権限はバイナリ プログラムに対して有効です。 SUID と同様に、ユーザーがファイルに対して x 権限を持っている場合、ファイルを実行すると、そのファイルが属するユーザー グループが権限サポートを取得します。

バイナリ プログラムに加えて、ディレクトリにも SGID を設定できます。

ユーザーがディレクトリに対して SGID 権限を持っている場合:

このディレクトリ内のユーザーの有効なユーザー グループが、このディレクトリのユーザー グループになります。

ユーザーがディレクトリに対して w 権限を持っている場合、そのディレクトリ内でユーザーが作成したファイルのユーザー グループは、ディレクトリのユーザー グループと同じになります。

この権限はプロジェクト開発にとって重要です。

スビット

この権限は現在、ディレクトリに対してのみ有効です:

ユーザーがこのディレクトリに対して w,x 権限を持っている場合、ユーザーがこのディレクトリの下にフォルダーまたはディレクトリを作成した後、そのファイルを削除する権限を持つのはユーザーと root のみです。

Others の x 権限ビットが t の場合、フォルダーに SBIT 権限があることを意味します。

たとえば、/tmp ディレクトリの場合:

$ ls -l / | grep tmp
drwxrwxrwt 4 ルート ルート 4096 11月19日 09:09 tmp
$ sudo -s
# タッチテスト
root@vagrant-ubuntu-trusty-64:/tmp# 終了
出口
vagrant@vagrant-ubuntu-trusty-64:/tmp$ rm テスト
rm: 書き込み禁止の通常の空のファイル 'test' を削除しますか? y
rm: 'test' を削除できません: 操作は許可されていません

上記3つの権限を設定する方法

通常の権限設定の 3 つの数字の前に別の数字を追加すると、その前の数字は次の権限を表します。

  • 4はSUIDです
  • 2はSGID
  • SBIT 1位

例えば:

# chmod 777 /tmp
# ls -l / | grep tmp
drwxrwxrwx 4 ルート ルート 4096 11月19日 09:17 tmp
# chmod 1777 /tmp
# ls -l / | grep tmp
drwxrwxrwt 4 ルート ルート 4096 11月19日 09:17 tmp
終わり。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • 一般的な Linux ファイル管理コマンドの簡単な分析
  • Linuxのファイル管理の詳細な説明
  • Linux オペレーティング システム ファイル マネージャーの共有
  • Linux ファイルとユーザー管理の実践
  • Linux ファイル/ディレクトリの権限と所有権の管理
  • Linux ファイルディレクトリ管理コマンドの概要
  • Linuxアカウントファイル制御管理の詳細な手順
  • Linuxのファイル権限とディレクトリ管理の詳細な説明
  • Linux du コマンドでフォルダのサイズを表示し、降順で並べ替える
  • Linux で grep コマンドを使用してファイルの内容を取得する方法
  • Linux ftp コマンドラインでファイルをダウンロードするための get コマンドとファイルをアップロードするための put コマンドの詳細な適用
  • フォルダとファイルを削除する Linux コマンド (空でないファイルを含む強制削除)
  • Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]

<<:  jQuery における Ajax の関連知識ポイントのまとめ

>>:  Win 8 以降での最新の MySQL バージョン 5.7.17 (64 ビット ZIP グリーン バージョン) のインストールと展開のチュートリアル

推薦する

ハイパーリンクの表示と開き方

<br />関連記事: ハイパーリンクを表示して開く方法症状<br />ユー...

MySQL 5.7.18 のダウンロードとインストールの詳細な手順

MySql ダウンロード1. 公式サイトを開き、ダウンロード パスを見つけます。ダウンロード アドレ...

Nginx バージョンのスムーズなアップグレードソリューションの詳細説明

目次背景: Nginx スムーズ アップグレード ソリューションフォールバック手順要約する背景:負荷...

Ubuntuで顔認識ログインを実装するための完全な手順

1. Howdyをインストール: howdyプロジェクトアドレス sudo add-apt-repo...

Angularコンポーネントライフサイクルの詳細説明(I)

目次概要1. フックの呼び出し順序2. onChangesフック3. 変更検出メカニズムとDoChe...

CentOS サーバーのセキュリティ構成戦略

最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...

Dockerは同じIPネットワークセグメントとの接続を実現する

最近、Docker とホストが同じネットワーク セグメント上で通信する問題を解決し、そのプロセス全体...

CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

1. 公式ウェブサイトアドレス公式サイトではインストールの参考手順が紹介されています。公式サイトを見...

Windows でのシンプルな Mysql バックアップ BAT スクリプトの共有

序文この記事では、Windows で Mysql をバックアップするための簡単な BAT スクリプト...

mysql と oracle のデフォルトのトランザクション分離レベルの説明

1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...

ES9の新機能の詳細な説明: 非同期反復

目次非同期トラバーサル非同期反復可能トラバーサル非同期反復生成非同期メソッドと非同期ジェネレーター非...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

vue3 の setUp とリアクティブ関数の使用方法の詳細な説明

1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...

ウェブページのコメントにより IE でテキストがオーバーフローする

実験コードは次のとおりです。 </head> <body> <div ...

MySQLからデータをインポートする際の不正なフォーマット、インポートの遅延、データ損失などの問題を迅速に解決します。

遅い問題を完全に解決したい場合は、MySQL を MySQL 8.0 にアップグレードすることをお勧...