Bash 初期化ファイル 対話型ログインシェル 次の場合にはログイン シェルを取得できます。
ログイン シェルが起動すると、まずシステムのグローバル構成 /etc/profile を読み取り、次に 3 つの構成ファイル ~/.bash_profile、~/.bash_login、~/.profile を順番に検索し、最初に見つかった読み取り可能なファイルを読み取ります。 ログイン シェルが終了すると、~/.bash_logout 内のコマンドを読み取って実行します。 設定ファイルが存在するが読み取り不可能な場合は、エラー メッセージが表示されます。ファイルが存在しない場合は、bash は自動的に次のファイルを検索します。 デフォルトでは、PATH、USER、MAIL、HOSTNAME、HISTSIZE などのグローバル環境変数は、/etc/profile ファイルで定義されます。/etc/bash.bashrc ファイル (システム レベルのシェル関数とエイリアスを含む) と、特定のプログラムを初期化するために使用される /etc/profile.d パス内のすべての *.sh ファイルも自動的にインポートされます。 対話型非ログインシェル 非ログイン シェルとは、システムの起動時にシステムに対して認証する必要がないことを意味します。 GUI でユーザーが開いたターミナルは、デフォルトでは非ログイン シェルであり、logout コマンドで判別できます。 # Ubuntu GUIデスクトップでターミナルを開く > ログアウト bash: ログアウト: ログインしないシェル: `exit' を使用する > bash --ログイン > logout # 通常通りログアウトすると何も出力されません 非ログインシェルは初期化時に ~/.bashrc リソースファイルのみを読み取り、~/.bashrc ファイルは ~/.bash_profile または ~/.profile によって自動的にロードされます。そのため、ログインシェルと対話型非ログインシェルが同じ構成になるように、環境変数は通常 ~/.bashrc ファイルで定義されます。 > echo "export sflag=\"ログインシェルはこのメッセージを表示します\"" >> ~/.profile > バッシュ > $sflagをエコーする # 変数が見つからない場合は、空白行が出力されます> exit > bash --ログイン > $sflagをエコーする ログインシェルはこのメッセージを見るでしょう > ログアウト 非対話型シェル スクリプトが bash コマンドを通じて実行されると、シェルは非対話形式で起動され、実行中にユーザーがスクリプトに干渉することがなくなります。非対話型スクリプトが開始されると、BASH_ENV 変数によって指定されたファイルのみがロードされます。ただし、PATH 変数はデフォルトでは非対話型シェルによってロードされないため、変数 BASH_ENV の値は絶対パスにする必要があることに注意してください。 現在のシェル モードは、特殊変数 - を通じて確認できます。 > エコー$- himBHs # 'i' は対話型シェルです もう 1 つの簡単な方法は、プロンプト環境変数 PS1 が現在のシェルに存在するかどうかを確認することです。 if [ -z "$PS1" ]; then echo "非対話型";else echo "対話型";fi 特別な事情 互換モード sh コマンドを使用して bash を呼び出すと、互換性を確保するために bash は sh と同じ方法で初期化されます。ログイン シェルとして起動されると、bash は /etc/profile と ~/.profile 構成ファイルをその順序で読み取ります。非ログイン シェルとして起動すると、bash は ENV 環境変数によって指定されたファイルのみを読み取ります。 POSIX モード bash を起動する場合:
Bash は POSIX 標準に従って初期化を試み、環境変数 ENV によって指定されたファイルのみを読み取ります。 リモート起動スクリプト rshd を使用してスクリプトをリモートで起動する場合、~/.bashrc ファイルのみがロードされます。ただし、rlogin、telnet、rsh、rcp などのリモート コマンドは暗号化されていないプレーン テキスト情報を送信するため、使用しないようにしてください。リモート アクセスが必要な場合は、SSH を使用してください。 UIDとEUIDが一致しません プロセスが作成されると、プロセスの実行に必要な情報が task_struct に記録されます。 UID (実ユーザー ID) はプロセスを作成したユーザーの ID を記録するために使用され、EUID (実効ユーザー ID) はファイルに対する現在のプロセスのアクセス レベルを決定するために使用されます。一般的に、UID = EUID です。実行可能ファイルの set-user-ID: SUID ビットが有効な場合 (例: -rwsr-xr-x、ユーザーの x が s に置き換えられます)、ファイルが実行されるときに、プロセスには実行者ではなくファイル所有者の権限が付与されます (EUID の値はファイル所有者の ID です)。 bash 実行ファイルに set-user-id フラグを設定すると、デフォルトの所有者は root になるため、他の非 root ユーザーが bash を実行すると、プロセスの UID は EUID と等しくなくなります。この場合、セキュリティを確保するために、bash は初期化フェーズ中にファイルを読み込みません。 制限されたシェル rbash または bash --restricted または bash -r 経由で起動すると、次のように機能が制限されたシェルが生成されます。
理論的には、この機能により、ユーザーは指定されたフォルダ内の指定されたファイルを実行して、制限された機能を完了できます。ただし、環境変数が適切に設定されていない場合、ユーザーは簡単に制限を解除できます。 > rbash > cd /etc rbash: cd: 制限あり > バッシュ > cd /etc # bash 環境であり制限がないため、これを正常に実行できます。 効果的なアプローチは、新しく作成されたユーザーが実行できるコマンドを制限することです。たとえば、ftp コマンドのみを実行できる ruser を作成できます。 > useradd -s /bin/rbash ruser # ユーザーがログインするときに提供されるシェルを設定します > chown -R root:ruser /home/ruser/.bashrc /home/ruser/.bash_profile # 所有者として root を設定し、グループ所有者として ruser グループを設定します (新しい ruser はデフォルトで ruser グループとして入力されます) >chmod 640 /home/ruser/.bashrc /home/ruser/.bash_profile # root は読み取りと書き込みが可能、ruser グループのユーザーは読み取りのみ可能、他のユーザーは何もできません> mkdir /home/ruser/bin # ユーザー実行ファイルまたはリンクを保存します> echo "export PATH=/home/ruser/bin" >> /home/ruser/.bash_profile > ln -s /user/bin/ftp /home/ruser/bin/ftp bash の初期化メカニズムの詳細な説明については、これで終わりです。より関連性の高い bash 初期化コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: vue構成ファイルはルーティングとメニューインスタンスコードを自動的に生成します
>>: MySQLデータベースはMMM高可用性クラスタアーキテクチャを実装します
目次1 テスト環境1.1 サーバーハードウェア1.1.1 t2.マイクロ1.1.2 c5.large...
解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...
これは主に CSS スタイルのコントロールと META タグです。コードをコピーコードは次のとおりで...
パフォーマンスの問題のあるSQL文を取得する方法1. ユーザーからのフィードバックを通じてパフォーマ...
この記事では、MySQL 5.7.18インストーラーの詳細なインストールチュートリアルを参考までに記...
この記事の例では、テーブルを追加および削除するためのjsの具体的なコードを参考までに共有しています。...
今日、ふとリッチテキストエディタの制作原理を見直してみようと思いました。それで、彼は何も言わずにそれ...
Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...
目次序文1. 不明 vs 任意2. 未知とあらゆるもののメンタルモデル3. まとめ要約する序文any...
wget や curl ツールを使用して、Linux サーバーで大規模なネットワーク ファイルを直接...
先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...
この記事では、MySQL データベースでよく使用される SQL ステートメントを例を使用して説明しま...
目次導入複数の異なるハッシュを区別するハッシュチャンクハッシュコンテンツハッシュjs キャッシュの実...
今日は、すべてのブラウザ (主に IE 9 以上と Chrome) と互換性のある自分のホームページ...
mysql5.6.28のインストールと設定方法1. 基本的なシステム情報を確認し、yumでインストー...