「フードの下」でGUIにマウントする方法


12

更新

間違っている場合は修正してください。Debianという名前のGNU / Linuxディストリビューションでコンピューターで作業する場合、コマンドを入力する、アプリケーションを起動する、ファイルを開くなどの2つの方法を知っています。

  • テキストを入力するコマンドラインインターフェイス
  • グラフィカルユーザインタフェース [別名GUI ]:「ウィンドウ」を提供するインターフェース、記号等

「ウィンドウマネージャー」という名前の何かがあります。GNU / Linuxを使用するとき、X-Window Systemで作業します(私の知る限り)。

ここに画像の説明を入力してください


元の投稿


状況/etc/fstabUSBスティックの自動マウントを無効にしました[例/dev/sdb1]。マウントにはroot、または少なくともコマンドラインのsudoエントリが必要ですが、ウィンドウマネージャには含まれていません(!)。私が意味するものではありませんautomount、私は、ウィンドウマネージャの「シンボルをクリックすると、」ルートでなければならないのCLI 1上の任意の質問、なしでGUI上のデバイスを開き意味します。

質問:GUIでのマウントは「内部」でどのように機能しますか?config一般的なウィンドウマネージャー用のファイルはありますか、それとも個別に設定する必要がありますか?

私はmountコマンドを理解して使用しています。読み方や構成方法を理解し/etc/fstab、そこにあるエントリの/etc/mtab意味と意味を確認する場所を知っていると思います。


1
また、AFAIKウィンドウマネージャーはこれについて責任を負いません。重要なのは、その下で実行されているデスクトップ環境(の一部)です。例えば、私はAwesome GNOMEを使用します-GNOME Shellの代わりにAwesomeを使用するGNOMEとディスクの自動マウント。しかし、単純なAwesomeを使用しただけではそうではありません。正直なところ、私はあなたの報奨金を本当に理解していません-@slmの答えはかなり明らかです。
13

2
非常に初期の頃は、自動マウンターがこれらのトリックをバックグラウンドで実行していました(root-cliで使用するマウントコマンドとほぼ同じです)。現在、ジョブを実行するGUIと統合する独自のサブプロセスがあります。slmからの回答を参照してください。
ニルス

5
「(さまざまなウィンドウマネージャー)一人ひとりがこれを解決する独自の方法を模索しなければならないと信じるのは難しいと思います。」->これを行うのはウィンドウマネージャ(WM)ではありません。それはだデスクトップ環境(DE)。彼ら全員が自分でそれをしなければならないということについては、まあ、彼らはすべて他の多くのことを自分自身のためにもします。選択により。しかし、彼らはする必要はありません。たとえば、GNOMEにはGPLライセンスがあります。したがって、GPLを使用する他のDEは、必要に応じてGNOMEパーツを使用できます。
goldilocks

2
シナモンやメイトなどがした@goldilocks。
被災者

2
@strugee:GNOMEはGTK(もともとはGIMPでした)と密接な歴史的関係があり、GNUも維持している下位レベルのサポートライブラリ(glib)であり、GNOMEとGTKから増殖したと思います。ほとんどすべての人がglibを作っていると思います。これは、マルチタスク、イベント駆動型GUIの基本的な多くのものを提供します(実際のグラフィックパーツではありません)。GNOMEは基本的にglib + gtk + windomマネージャー+いくつかのアプリケーションだと思います。
goldilocks

回答:


5

これは状況に対する私の理解ですが、私は専門家ではないので、他の答えよりも技術的ではありません。これは、これらのシステムを長年使用した後に理解したことであり、詳細については調査していません。

ここには3人の主なプレーヤーがいて、それらの間でマウントを管理します。

  • FUSE:Wikipediaページで説明されているように、これはすべての中心にあります

    Filespace in Userspace(FUSE)は、Unixに似たコンピューターオペレーティングシステム用のオペレーティングシステムメカニズムであり、非特権ユーザーがカーネルコードを編集せずに独自のファイルシステムを作成できるようにします。これは、FUSEモジュールが実際のカーネルインターフェイスへの「ブリッジ」のみを提供する一方で、ユーザー空間でファイルシステムコードを実行することによって実現されます。

    したがって、基本的に、これは特権のないユーザーがファイルシステムをマウントできるようにするものです。

  • gvfs:Gnomeファミリーのデスクトップ環境(Gnome、Mate、Cinnamonを含む)では、これは(とりわけ)新しく接続されたドライブを自動的にマウントするデーモンです。それはFUSE を介して行われます。KDEファミリーに相当するものはKIOと呼ばれます(ただし、間違いかもしれません)

    の主なプロセスは次のgvfsとおりです(から取得man gvfs)。

    • gvfsd-メインのgvfsデーモン
    • gvfs-fuse-daemon-gvfsをfuseファイルシステムとしてマウントします
    • gvfsd-metadata-gvfsメタデータを書き込みます
  • udev:これは、新しいデバイスを検出し、接続されたときにスクリプト/コマンドを実行できるシステムです。たとえばudev、新しい画面を検出し、その画面でデスクトップをミラーリングできます。

    udevは、Linuxカーネルのデバイスマネージャーです。主に、/ devのデバイスノードを管理します。これはdevfsとhotplugの後継です。つまり、ファームウェアのロードを含むデバイスを追加/削除するときに、/ devディレクトリとすべてのユーザー空間のアクションを処理します。

    具体的には、gvfs仕事に思えるてgvfs-udisks2-volume-monitorいるudisksベースのボリュームモニターがあります。udisksただし、それ自体は依存していますudev(を参照man 7 udisks)。

したがって、基本的に(「恐ろしい単純化」を読んで)起こることは、ドライブを接続udevすると、それを検出し、gvfsそれをFUSEデバイスとしてマウントするデーモンに警告することです。

FUSE udevはすべてのデスクトップ環境で同じです。変更点はudev、ドライブをFUSEファイルシステムとして監視およびマウントするDEデーモンです。


1
Dバスをudev、gvfs、その他すべてのギャップを埋めます。
ブライアム

gvfsに関する情報を更新することもできます。彼らはGIOに移行しています。
Braiam

8

それはあなたのウィンドウ環境(GNOME / KDE / etc。)に依存しますが、例えばGNOMEでは、デーモンが実行されていると表示されますgvfs-*-volume-monitor。これらのデーモンは、デスクトップ環境を実行するときにデバイスをマウントする役割を果たし、とは関係なく/etc/fstab、完全に独立して動作します。

構成ファイルに関しては、DEを実行しているユーザーのホームディレクトリにある、これに関連するファイルがいくつかあります$HOME/.local/share/gvfs-metadata

このU&Lに関するQ&Aタイトル:gvfsとは何ですか?なぜシステムにそれが必要なのですか?、GVFSとは何かを説明しようとします。それはそれを説明するという良い仕事をします。しかし、あなたが本当に求めていることは、USBディスクを自動的にマウントする(仕組み)というタイトルのこのU&LのQ&Aによってさらに対処されていると思います。


答えはHAL…にthunarあるようです。[使用する]などの解決策を見つけました。この記事は方向性を示していました。-しかし、私はまだ共通の分母を探しています
...-erch

IIRC DEは、FUSE(ユーザー空間のファイルシステム)を使用するため、ルートを必要としません。
被災者

@strugeeはDEがデスクトップ環境を意味すると推測しているので、FUSEを調べる必要があります。どこにヒントがありますか?
エルチ

@chirpは、WikipediaでFUSEを検索します:en.wikipedia.org/wiki/FUSE is it、IIRC。そして、slmはすでに答えています。答えは、ウィンドウマネージャではなくデスクトップ環境が自動マウントするということです。
被災者

2
@chirp -ここを参照してください:bbs.archlinux.org/viewtopic.php?id=95509を。HALは非推奨になりました、en.wikipedia.org / wiki / HAL_(software)。UDEVは今後の代替品です。en.wikipedia.org
wiki

8

簡単な答えはチートです。彼らはを使用しませんfstab。通常、udevフックを使用して挿入イベントをキャッチし、ディスクを手動でマウントします。これは、新しいディスクがあることをファイルマネージャーに通知するためにroot渡されるdbusか、アンマウントのsuid代わりにユーティリティを使用しますdbus。残念ながら、これには標準の構成オプションはありません。デスクトップムーブメントは複雑さを隠すことを信じているため、ユーザードキュメントにはこれを文書化せず、開発者ドキュメントにのみ記述します。また、USBドライブはXサーバーにログインする最初のユーザー。


はい!これは私が探しているものです。newbとして、私はどこから探し始めたらいいのか尋ねたいと思います。開始点かそこらは非常]役立つだろう
erch

2
@chirpがudev(7)および/etc/udev/rules.d/*の調査を開始します
hildred

5

PolicyKit(またはPolkit)は、特権のないプロセスが特権のあるプロセスと通信できるようにするポリシーを定義および処理するためのアプリケーションレベルのツールキットです。

非特権(デスクトップ)アプリケーションの特権操作(Mount()メソッドの呼び出しなど)へのアクセス権の付与に関して、意思決定プロセスを集中化するためのフレームワークです。

認証エージェントは、セッションのユーザーに、セッションのユーザーが実際にユーザー(ユーザーとして認証することにより)または管理ユーザー(管理者として認証することにより)であることを証明させるために使用されます。

GVFSは仮想ファイルシステムであり、ローカルおよびリモートのファイルシステムをごみ箱のサポートとともにユーザーとしてマウントできます。GIOを使用しないアプリケーションがGVFSファイルシステムにアクセスすることを許可するFUSEサポートもありますが、ほとんどのDEは、コンピューターの休止状態やシャットダウン、NetworkManagerのような他のものに対してもPolicykitを介して認証を行うため、 FUSEを使用します。

次の2つの部分で構成されます。

  1. GIOをサポートするアプリケーションによってロードされる共有ライブラリ。
  2. GVFS自体。D-Busを介して相互に通信し、GIOモジュールと通信するデーモンのコレクションが含まれます。

polkitルール用のpolkit-gnomeとともに、gvfsパッケージをインストールする必要があります。グラフィカル認証エージェントがインストールされ、自動起動されていることを確認してください。

特権を管理するための構成ファイルは、ディストリビューションごとに異なる必要があります。Arch Wikiでは、の下にファイルを作成するように指示されます/usr/share/polkit-1/rules.d/。Debianでは、それらはにあり/etc/polkit-1/ます。

出典:DebianのPolicykit || Arch WikiのPolkit || Arch WikiのGVFS || GNOME WikiのGVFS!


GIOはGObject Introspectionの略ですか?もしそうなら、私はそれがGOIと呼ばれるだろうと思っていただろう。Gnomeの人々はそれをGIと呼んでいるようです。GIOの名前に関する別の説明は見つかりませんでしたが、GIと同じではないようです
テルドン

実際にstrugee(上のリビジョン10によって編集した@terdon unix.stackexchange.com/posts/101951/revisions)。...それを削除する
テレサ・電子ジュニア

4

探している一般的な要素の1つは、 GNOMEのgvfsであるFUSEです。たとえば、内部でそれを使用します。1 これはカーネルとのインターフェースであり、Linux上のすべての非特権(自動)マウントシステムに共通していると思います[ただし、コメントを参照]。 個々のDEは、カーネルパッチを必要とするため、このバージョンの独自のバージョンを作成しません。

ここ述べたように、FUSEは数年前に公式カーネルの一部になったため、実際にはそのホームページリンクは古くなっていますが、プロジェクトの起源と目的を説明しています(特権のないマウントだけではありません)。

さまざまなシステムがこれを超えてスタイルを逸脱する理由は、さまざまなデスクトップ環境を持っているのと同じ理由です。GUIがどのように/どのようにあるべきかについての異なるビジョンを表しています。ユーザーインターフェースの形式と機能を管理していますが、FUSEは実際のマウントとカーネルレベルの処理を行います。FUSEは実際には「自動」部分を実行しないことに注意してください。「非特権」部分の詳細ですが、自動部分は非常に簡単です/dev。必要なのは、ポーリングなどです。このように機能するマウントアプリケーションを作成しました。新しいノードの出現を監視するだけです。2 その部分は、おそらく100行程度のC ++です。簡単です-そのレベルで共通のAPIは必要ありません。

1または、本当に特権のないマウントを実行している場合。テレサの答えは、通常のマウントへのアクセスを許可するための新しいアプローチをカバーするかもしれません。

2 hildredが観察しているように、udevコールバックはより良い、より少ないハック方法です。


あなたは「ホームページ」を意味していたと思いますが、タイプミスが消えたらこのコメントを削除します;)ところで、いつものように素晴らしい答えです!
エルチ

1
私たちの答えは互いに矛盾しているように見えるので、いくつかのテストを行いました。少なくともDebianでは、アクティブなPolkitエージェントがなければ、ユーザーはマウントできません。また、モジュールfuse.koは、マウントした後でもロードされません。(私はWheezyでThunarを使用しています)
テレサeジュニア

3
@TeresaeJunior:ポイント(ここに参照を追加しました)、ポルキットルートはユーザースペースのちょっとしたトリックなので、矛盾はないと思いますが、マウントはまだプリヴィルマウントです。GVFSウィキペディアのページには「GVFSはFUSEを使用する可能性がある」と記載されているため、「does」ではなく「may」を作成します。
ゴルディロックス

1
GNOME Wikiから:「gioを使用しないアプリケーションがgvfsファイルシステムにアクセスすることを可能にするfuseサポートもあります。」
テレサジュニア

1
@TeresaeJunior:ええ、それで彼らは一種の並行で、FUSEはフォールバックです。もちろん、GNOMEが唯一のDEではありませんが、他のほとんどはglib(gioを含む)をさまざまな方法で使用していると確信しています。TBH自動マウントが好きではないので、それについての逸話はありません。とにかく、FUSEは可能性です。
goldilocks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.