「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Linux OSの基礎的トピック]] --[[Linuxを触ってみる。]] *目次 [#ja1d7bfc] #contents *概要 [#sa3123ff] 触ってみるということで、各種 基礎。 *コマンド [#yc474a51] **基本的なコマンド [#ib9cbeed] ***sudoコマンド [#m50d7028] -ユーザーが別のユーザーの権限レベルでプログラムを実行するためのコマンド。 -一般的に、スーパーユーザー(superuser、≒root)の特権レベルを要求する。 ***aptコマンド [#g7f0f43a] [[Debian系>Linuxのディストリビューション#h6f6e35a]]のパッケージ管理システム -update sudo apt-get update -install sudo apt install パッケージ名 ***yumコマンド [#eb8a6d5c] [[Red Hat系>Linuxのディストリビューション#j97561c1]]のパッケージ管理システム -update yum update -install yum install パッケージ名 ***[[vi]]コマンド [#o30a7d0c] sudo vi ファイル・パス ***[[フォルダ移動、ファイル操作コマンド>WindowsユーザがLinuxに乗り換える際に、知っておくとイイ情報集。#p5ea3e98]] [#z6725687] ***[[chmodコマンド>#ra5e6ede]] [#j827be00] ***参考 [#nef981c2] -Linuxコマンド一覧(UNIX入門)~ http://hocolamogg.com/unix/linux_com/index.html **ありがちなオプション [#i9be00d2] ***-y, --yes, --assume-yes [#b2e04ab4] 処理中に現れるプロンプトに対して常に"yes"と解答 **パイプ [#z4c3c029] テキスト・ベースのシェルで、テキストをパイプできる。~ ちなみに、[[PowerShellはオブジェクト・ベースのシェル>https://techinfoofmicrosofttech.osscons.jp/index.php?PowerShell%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%AB]]。 ***パイプの裏側 [#m0009986] は、[[ストリーム>#m356ea0b]]。 ***ファイルの削除の例 [#n8c88868] find したファイルをxargs で消す。 find /XXXX/XXXX/*.txt -type f | xargs rm -rf ***...の例 [#t8ead529] ***参考 [#yc6efd4b] -パイプ (コンピュータ) - Wikipedia~ https://ja.wikipedia.org/wiki/%E3%83%91%E3%82%A4%E3%83%97_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF) *ファイル [#l8feafe9] **ファイルの種類 [#vcc60966] ***普通のファイル [#x26ecc15] regular file -狭義のファイル -内容が記録されているファイル ***[[ディレクトリ>#f899924e]] [#l9bb3bac] directory -他のファイル(広義のファイル)を~ 複数入れることができるファイル ***シンボリックリンク [#c49ce194] symbolic link -他のファイルの名前を格納したファイル -Microsoft Windows - ショートカット -Mac OS - エイリアス ***名前付きパイプ [#mde6d012] named pipe -プロセス間通信に使うファイル ***UNIXドメインソケット [#ja85b51f] UNIX domain socket -プロセス間通信で使うファイル -現在ではTCPソケットで代替できる ***デバイスファイル [#eb4a40aa] device file -デバイス(ハードウェア)をファイルとして表現したもの **[[ファイルシステムとマウント>WindowsユーザがLinuxに乗り換える際に、知っておくとイイ情報集。#xa32166c]] [#s107286b] Linuxでは、~ ファイルシステムのマウントにより、~ 一本の巨大なディレクトリツリーになる。 **ストリーム [#m356ea0b] バイトストリーム(byte stream) -ファイルにつながったストリーム -通常、プロセスに対する入力と出力の2つのストリーム -[[パイプ>#z4c3c029]]すると、 --プロセスAの出力ストリームが、 --プロセスBの入力ストリームとなる。 -プロセス間通信で使用される。 --[[名前付きパイプ>#mde6d012]] --[[UNIXドメインソケット>#ja85b51f]] -「Linuxにおいては全てがファイル」~ ...と言うのはシステムコールのI/Fが~ バイトストリームであることに起因するらしい。 *ディレクトリ [#f899924e] **[[Windowsとの比較>#s107286b]] [#cd125676] → ファイルシステムとマウント **rootディレクトリ [#o741bf33] rootディレクトリでlsすると、以下が表示される。 -bin~ 基本コマンド -sbin~ システム管理用コマンドなど -boot~ 起動に必要なファイル -dev~ デバイスファイル -etc~ 設定ファイル -home~ ホームディレクトリ -lib~ bin、sbinの共有ライブラリ -lib64~ 共有ライブラリ(64bit) -media~ リムーバブル媒体のマウントポイント -mnt~ 一時的なマウントポイント -opt~ 追加アプリケーション -proc~ プロセス情報など -root~ root用ホームディレクトリ -run~ 実行時の可変データ群 -snap~ snapアプリケーションのインストール先 -srv~ システムによって提供されたサイト固有のデータ群。 -sys~ ドライバ関連のプロセス情報群。 -tmp~ 一時的なファイル ***usr [#f6d04a34] 全ユーザー向け、各種プログラムやライブラリ、ドキュメント -bin~ 基本コマンドなど(ユーザ版) -sbin~ システム管理用コマンドなど(ユーザ版) -lib~ bin、sbinの共有ライブラリ(ユーザ版) -lib64~ 共有ライブラリ(64bit) -libexec~ その他、補助コマンド -etc~ あまり利用されない。 -share~ アーキテクチャに依存しない共有データ -include~ ヘッダファイル -src~ ソースコードとそのヘッダファイル -local~ ホスト固有のローカルデータを格納する第三階層~ (ソースコンパイルするとココに入る) -tmp~ 一時的なファイル(ユーザ版) ※ [[個別ユーザ向け>#oa9af6c1]] ***var [#tc261bab] ログやキャッシュなど可変ファイル群。 -cache~ 各種キャッシュ保存先 -crash~ クラッシュダンプ保存先 -db~ 各ソフトで利用するデータベース情報。 -empty~ SSHで利用される。 -local~ /usr/local用のログファイル保存場所。 -lock~ 使用中リソースをロックするファイル -log~ 各種システム・ログファイル -mail~ ユーザーのメールボックス -opt~ /opt用の動的ファイル保存場所。 -run~ ブート以降の走行中システムに関する情報 -spool~ 処理待ち状態のタスクのスプール -tmp~ 一時ファイル置場 (マルチユーザーモードの推奨) **ユーザ・ディレクトリ [#oa9af6c1] ログインした際、ユーザ・ディレクトリがカレント・ディレクトリになる。 /home/ユーザー名 **パス指定方法 [#hd7c4a88] ***/xxxx [#q7f36cdb] rootディレクトリ以下 ***~/xxxx [#q94313cc] ユーザ・ディレクトリ以下 ***./xxxx [#m7c25ffb] カレント・ディレクトリ以下 *権限 [#a2ebbcf4] **setuid/setgid [#ef3f58ba] -それぞれ、set user ID と set group ID の略。 --実行ファイルを実行する際にその実行ファイルの~ 所有者(ユーザー識別子やグループ識別子)の権限で実行できるようにする。 --一般ユーザーが高い特権レベルでしか実行できないタスクを一時的に実行できるようにする --ユーザー識別子やグループ識別子が指定されるが、必ず特権レベルが高くなるわけではない。 -setuid/setgidが設定されているプログラムは --所有者/グループの権限で動作する。 --従って、所有者/グループがrootだと危険。 -setuid/setgidが設定されているプログラム --/bin/password --/bin/ping --/bin/su -参考 --setuid - Wikipedia~ https://ja.wikipedia.org/wiki/Setuid **ファイル属性 [#d8accab2] ***ファイル属性の読み方 [#ac4f10e9] ファイルの種別とパーミッションが設定されている。 -x文字目 --1(1):ファイル種別 --2-4(3):ファイル所有者に対する権限 --5-7(3):ファイル所有グループに対する権限 --8-10(3):その他に対する権限 -ファイル --種別 |種別|意味|h |-|ファイル| |d|ディレクトリ| |l|シンボリックリンク| --権限 |モード(数字)|モード(アルファベット)|権限|h |4|r|読み取り| |2|w|書き込み| |1|x|実行| ***パーミッション設定(chmodコマンド) [#ra5e6ede] chmod モード 対象ファイル名 -パーミッションを数字([[権限の合計値>#ac4f10e9]])で指定する。 chmod nnn 対象ファイル名 --100の位~ 所有者 --10の位~ 所有グループ --1の位~ その他 -パーミッションを英字で指定する。 chmod 変更対象 変更方法 変更内容 対象ファイル --変更対象 |変更対象|意味|h |u|ユーザー| |g|グループ| |o|その他| |a|すべて| --変更方法 |変更方法|意味|h |=|指定した権限にする| |+|指定した権限を付与する| |-|指定した権限を除去する| --変更内容 |変更内容|意味|h |r|読み取り| |w|書き込み| |x|実行| |s|set user ID(SUID)、set group ID(SGID)| |t|スティッキービット(sticky bit)| ***パーミッション設定例 [#lb3f4188] -確認([[lsコマンド>#z6725687]]) $ ls -l -変更([[chmodコマンド>#ra5e6ede]]) $ chmod nnn ファイル名 -設定例 $ cd ~/.ssh $ ls -l total 0 -rw-rw-rw- 1 seigi seigi 398 Aug 20 13:12 authorized_keys $ chmod 600 authorized_keys $ ls -l total 0 -rw------- 1 seigi seigi 398 Aug 20 13:12 authorized_keys >※ 600は、所有者に読み書き権限を付与。 |数値|権限|h |0|---| |1|--x| |2|-w-| |3|-wx| |4|r--| |5|r-x| |6|rw-| |7|rwx| *Advanced [#nd16729d] Advanced Windowsに習い。 **カーネルオブジェクト [#a5103983] **ジョブ、プロセス、スレッド [#v877f07f] **スレッド同期 [#y4393934] **メモリアーキテクチャ [#s390c7c1] ***物理 [#h669bc4a] ***仮想 [#scbb60a3] ***メモリマップファイル [#m91c2e37] ***Windowシステム(GUI) [#da3b2264] ***DLLインジェクションとAPIフック [#rab084f3]