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高可用性クラスタアーキテクチャを実装します
実は多くの会社がユーザー権限ツリーに似た機能を持っています。最近、追加、削除、修正のツリー構造を書き...
Zabbix サーバー環境プラットフォームバージョン: ZABBIX バージョン 4.4システム:...
<canvas> 要素は、クライアント側のベクター グラフィックス用に設計されています。...
直接コード: タイプとして「bigint unsigned」、バイトとして「8」、max_numとし...
タッチコマンドこれには 2 つの機能があります。1 つは、既存のファイルの時間タグを現在のシステム時...
コードをコピーコードは次のとおりです。 li {幅:300px; 高さ:23px; 行の高さ:24p...
テキスト非表示コード、HTML 内の特定のテキストを非表示にするコードをコピーコードは次のとおりです...
el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...
今日、Tomcat サーバーの設定時にちょっとした問題が発生したので、参考までにいくつかご説明したい...
LIKE 演算子は、列内の指定されたパターンを検索するため、WHERE 句で使用されます。文法: 列...
Redux はシンプルな状態マネージャーです。その歴史をたどることはしません。使用法の観点から見ると...
データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...
1 分で最初の Web ページを作成します。簡単な Web ページを作ってみましょう。ぜひフォローし...
目次1. はじめに2. インターフェース3. 簡単な例4. 結論1. はじめにMDN の公式 Web...
まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...