AndroidやiOSのような許可がないのはなぜですか?


26

LinuxにGIMPやLibreOfficeなどのプログラムをインストールするときに、許可について尋ねられることはありません。Ubuntuにプログラムをインストールすることにより、ドライブ上の任意の場所で読み取り/書き込みを行う完全な許可と、インターネットへの完全なアクセスをそのプログラムに明示的に許可していますか?

理論的には、GIMPはsudoタイプのパスワードを必要とせずに、ドライブ上のディレクトリを読み取ったり削除したりできますか?

技術的に可能かどうかだけが知りたいのですが、可能かどうかは知りません。もちろん、そうではないことを知っています。


26
必須のXKCD:xkcd.com/1200
アンドレア

10
なぜなら、Linuxのセキュリティモデルは、誰もがそれを考えようとする前からのものだからです。実際、それはインターネットの前にさかのぼります-あなたの最大の脅威が同じコンピュータを使用している他の人々であったとき。
user253751

2
1つには、* nixを使用する多くの人々がプログラムを「インストール」しないため、ソースからコンパイルするか、自分でプログラムを作成します。したがって、作成した単純な小さなシェルスクリプトごとに「許可」リガマロールを実行する必要がある場合を想像してください。
-jamesqf

4
「コードはオープンソースです。レビューして自分でコンパイルできます!」これらのステートメントはすべて真実ですが、実行したコードのすべての行をレビューできるわけではありません。コンピューターに悪影響を及ぼす悪意のあるコードまたは不正なコードを見つけることができます。しかし、入力のおかげで、それがどのように大きな痛みになり得るかがわかり、現在、その回避方法を発見しました。
スタミネーター

回答:


31

ここには2つのことがあります。

  • 標準的な方法(Ubuntuのapt / apt-getなどのシステムインストーラー)でプログラムをインストールすると、通常はすべてのユーザーが利用できるディレクトリ(/ usr / bin ...)にインストールされます。このディレクトリには権限を書き込む必要があるため、インストール中に特別な権限が必要です。

  • プログラムを使用すると、ユーザーIDで実行され、IDで実行されたプログラムが読み取りまたは書き込みを許可されている場所でのみ読み取りまたは書き込みができます。Gimpの場合、たとえば、ブラシなどの標準リソースは共有されているため編集できず、/usr/share/gimp/最初にコピーする必要があることがわかります。これは、Edit>Preferences>Foldersほとんどのフォルダーがペアになっている場所、読み取り専用のシステムフォルダーと書き込み可能なユーザーフォルダーも示しています。


17
プログラムがインストールされると、インストール方法は関係なくなります。唯一のカウントは、それが(()、それを使用しているつまり、で実行USERIDその下にあることをそれからそれは同じユーザーが実行するすべての他のプログラムと同じアクセス権を前提としています。。
xenoid

3
@xenoidプログラムがrootによって所有され、setuidビットがオンでインストールされている場合を除きます。その場合、他の人が使用しているにもかかわらず、プログラムはルートとして実行されます。
モンティハーダー

2
はい、18個すべて:mount / umount / ping / sudo
...-xenoid

2
@xenoid、重要な点は、パッケージをインストールしてもsetuidバイナリをインストールする許可を明示的に求められないことです。代わりに、パッケージにあるものはすべてインストールされ、特権プログラムが関与している場合は、他の方法で「知る」必要があります。パッケージがドキュメントと一致し、その他の点で安全であることを確認するために、パッケージャーに完全に依存しています。パッケージマネージャーユーティリティは、そこでは何もしません。
-ilkkachu

3
はい、それで新しいものはありません。これがリポジトリがある理由です... setuidビットとインストールされたソフトウェアがなくても、などの他の厄介なことがたくさんできますrm -rf ~/。他のソースからインストールする場合は、注意する必要があります(または、コード検査後にソースからインストールします)。
キセノイド

23

Ubuntuにプログラムをインストールすることにより、ドライブの任意の場所で読み取り/書き込みを許可し、インターネットに完全にアクセスできるように、そのプログラムに明示的に許可しますか?

はい、使用するsudoか同等のものを使用する場合、インストーラーにドライブの任意の場所で読み取り/書き込みを行う完全な許可を与えます。これはほとんど同じことです。インストーラーが設定できるsetuidと呼ばれるフラグもあります。これは、インストール後もプログラムに完全な権限を付与します。

インストーラを無視し、プログラムがsetuidでない場合(プログラムがsetuidを使用することは非常にまれです)、プログラムを実行すると、アカウントがアクセスできるものすべてに完全にアクセスできます。たとえば、オンラインバンキングにログインしている場合、仮想的にすべての資金がナイジェリアに送られる可能性があります。

AndroidやiOSのような許可がないのはなぜですか?

Linuxのセキュリティモデル(つまり、セキュリティシステムの設計方法)は非常に古いものです。1960年代に遡るUnixから継承されています。当時、インターネットはなく、部門のほとんどの人が同じコンピューターを使用していました。あなたのプログラムのほとんどは、信頼された大企業から来ました。そのため、セキュリティシステムは、実行するプログラムからユーザーを保護するのではなく、ユーザーを相互に保護するように設計されました。

最近ではかなり時代遅れです。AndroidはLinuxをベースにしていますが、すべてのユーザーではなく、アプリごとに個別の「ユーザーアカウント」を作成することで機能します。iOSが何を使用しているかわかりません。Flatpakのような努力は現在、Linuxデスクトップに同じ種類のものをもたらすことを試みています。


2
これは実際には、潜在的に悪用可能なコードを個別の非特権ユーザーとして実行し、OSに特権エスカレーションの脆弱性がないことを期待するための1つの議論です。またはDocker。
ウィルテック

@immibis Androidは、Linuxカーネルとext FSを使用します。他の類似点はありません。LinuxとUNIXライク(またはGNU / Linux)を混同しないでください。(少なくともFreeBSDを "Linux"とは呼ばなかった。)
wizzwizz4

1
@ wizzwizz4 Linuxはカーネルであり、AndroidはLinuxと呼ばれるカーネルを使用しています。あなたのポイントが何なのかわかりません。
user253751

@Willtech技術的にはセキュリティ対策として機能しますが、かなり不便です。結局のところ、通常アプリがファイルにアクセスできるようにする必要があります。ただし、アクセスするように指示したファイルのみ。
user253751

@immibis許可はカーネルに実装されていないため、Androidが許可モデルを含むシステムに基づいていることを意味するのは誤解を招きます。(IIircカーネルはいくつかの許可を強制します。.)
wizzwizz4

9

必要なのは、Flatpackアプリによって提供されることです。これらは、iOS、Android、またはWindowsストアアプリとほぼ同じです。

私はそれらを使用したことがないので、GUIをまだ実装しているかどうかはわかりません。インストール時に各アプリに必要な権限を確認します。

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

すべてのflatpakアプリケーションには、メタデータと呼ばれるマニフェストが含まれています。このファイルには、ID(app-id)や使用するランタイムなど、アプリケーションの詳細が記述されています。また、アプリケーションに必要な権限もリストします。

デフォルトでは、アプリケーションはインストールされると、要求したすべての権限を取得します。ただし、flatpakを呼び出すたびに、またはflatpakオーバーライドを使用してアプリケーションごとにグローバルにアクセス許可をオーバーライドできます(詳細については、flatpak-runおよびflatpak-overrideのマンページを参照してください)。現在、アプリケーションのアクセス許可の処理はインターフェイスに多少隠されていますが、長期計画では、インストール中にアクセス許可を表示し、それらを簡単にオーバーライドできるようにします。

また、Ubuntuの代替機能であるSnappyを使用して、GUIでこのような機能が表示されるかどうかを確認していません。


フラットパックには、Ubuntuのホームフォルダーに対する読み取り/書き込み権限がありますか?
スタミネーター

1
リンクを読むと、a)ユーザーがファイルを開く/保存するウィンドウなどで選択したファイルにのみアプリがアクセスするエレガントなソリューションを持っているように見えます、b)デフォルトはホームディレクトリへのフルアクセスを許可することでした。
sourcejedi

2
多くの場合、面倒なことに非効率的ですが、Webアプリはこの問題に対するはるかに標準的なソリューションです。一般的なWebブラウザーは、非常に用途が広く、徹底的にテストされたサンドボックスです。
須藤

6

それは技術的には可能であるとソリューションが含まれapparmorselinuxかつfirejail、あるいは同様のフルコンテナLXCまたは完全な仮想マシン(例えばVirtualBoxkvmまたはvmware)。ネットワークには、OSX opensnitchlittlesnitchプログラムのクローンがあります。

ユーザーによって与えられた権限を持つ広範なセキュリティモデルが存在しない理由は、従来、PCで実行するものに注意を払っていることです。モバイルシステムのアプリストアにあるものの90%は、PC上のマルウェアと見なされます。

Facebookの接続、Googleアナリティクス、広告ネットワークなどの動作をPC上のマルウェアとして分類するアドウェア(アダウェアまたはSpybot D&D)のスキャナーがあります。モバイルエコシステムは、これらのことになるとコンピューティングの完全な再起動のようなものです。好奇心easy盛だからといって、誰もがアドウェアをバンドルします。副作用はプライバシーとセキュリティの低下です。セキュリティ部分はサンドボックスモデルによって説明されますが、プライバシー部分は未解決の問題です。

これを長い間PCに搭載していないもう1つの理由は、サンドボックスの複雑さです。つまり、以前の古いPCにとっては両方とも遅すぎて、ほとんど利点のないものにはより多くのエンジニアリングが必要でした。

今日、snapやflatpakのような新しいパッケージ形式でサンドボックスを使用しようとする試みがあり、ブラウザも拡張機能でサンドボックスを使用しています。Chromiumは起動時に許可モデルを使用し、FirefoxはすべてのWeb拡張機能に使用します(インストールできる拡張機能は57のみであるため)。これは非常に合理的です。なぜなら、人々は、聞いたことのない人のアプリのように、知らない作者のブラウザ拡張機能をインストールするからです。彼らは、訪問するWebサイトよりも危険ではないと考えています。これは、保護するサンドボックスがない場合の致命的な誤解です。


4

Androidは「マーケットプレイス」セキュリティモデルを使用します。異なるアプリケーションは異なる(半信頼の)ベンダーのものであり、保護されたリソースや相互に分離する必要があります。ほとんどのアプリは営利ベースで配布されます。それらは販売(ペイウェア)、有料広告の表示、またはサードパーティへのデータ販売によるユーザーの「収益化」です。不正なデータアクセスに巻き込まれたとしても、不正なデータアクセスに関与する高いモチベーションがあります。

Debian、Red Hat、および類似の「クラシック」Linuxディストリビューションのほとんどのアプリケーションは、ソース形式で配布されます。オープンソースアプリケーションが十分な支持を得た後、ディストリビューションメンテナーが手動で選択します。不正なデータアクセスを実行する動機はほとんどありません。潜在的な利益は努力を正当化するものではありません。

注目に値するのは、Androidの高度なセキュリティモデルが理由の1つであり、モバイルマーケットでiOSを簡単に克服できるほど大きな牽引力を得た理由です。最新のデスクトップLinuxディストリビューションは、単に「異なる」だけではありません。実際、セキュリティとディストリビューションモデルの点では時代遅れです。

一部のLinuxディストリビューションでは、ソフトウェアディストリビューションシステムが改善されています。中央集中型サードパーティソフトウェアリポジトリ(AUR)、サードパーティソフトウェア(AppImage、Snappy、Flatpack)を配布するための専用パッケージフォーマット、セカンダリリポジトリシステム(Docker)です。残念ながら、これらの改善は時間とともにほとんど牽引力を獲得しません:AppImageは2004年に発明され、AURの最初のバージョンは2005年にリリースされましたが、10年以上後に公式にその機能を採用したLinuxディストリビューションはありませんでした。


3

LinuxにGIMPやLibreOfficeなどのプログラムをインストールするときに、許可について尋ねられることはありません。

これらのアプリケーションは、ファイルシステムの特権部分にインストールされます。特権部分は、あなたとほとんどのユーザーが通常は変更するためのアクセス権を持っていません。

デスクトップ用に設定された主流のディストリビューションでは、インストール時に最初に設定された単一のユーザーが通常管理者権限を持ちます。通常彼らに求められるのは、ソフトウェアをインストールするための自分のログインパスワードだけであり、常にそうとは限りません。

ソフトウェアがインストールされると、デフォルトでは、通常のユーザーが実行できるようにセットアップされ、データファイルを読み取ることができます。必要なのはそれだけです。

Ubuntuにプログラムをインストールすることにより、ドライブ上の任意の場所で読み取り/書き込みを行う完全な許可と、インターネットへの完全なアクセスをそのプログラムに明示的に許可していますか?

プログラムではありません。起こることは、ユーザーアカウントが異なるグループに属し、異なるグループが異なるリソースへのアクセスを許可することです。

Linuxのセキュリティモデルでは、ユーザーアカウントには特定の権限があり、アカウントが属するグループには特定の権限があります。ファイルシステムの任意の部分を権利化するには、通常はユーザーに付与されないルート権限が必要です。sudoを使用する場合でも、すべての権利を取得するわけではありません。

通常、通常のユーザーアカウントは、インターネットなど、必要になると予想されるリソースにアクセスできます。

理論的には、GIMPはsudoタイプのパスワードを必要とせずに、ドライブ上のディレクトリを読み取ったり削除したりできますか?

ユーザーとしてアクセス権を持っているディレクトリまたはファイルはすべて、通常は権限を継承するため、起動するアプリケーションからアクセスできます。通常ログインしているユーザーは、デフォルトでは通常、重要なシステムファイルまたは共有ファイルのほとんどを変更する権利を持ちません。

技術的に可能かどうかだけが知りたいのですが、可能かどうかは知りません。もちろん、そうではないことを知っています。

ほとんどのユーザーは通常、適切にポリシングされたリポジトリからアプリケーションをインストールし、敵対的なコードのリスクは低いことに注意してください。

Linuxの許可を把握するために、おそらく追加の参考資料をお勧めします。

Androidのセキュリティモデルは、一般的にOSの基本的なセキュリティモデルについて何も理解はほとんど理解していないしていないだけでなく、ユーザーのニーズに合致するように進化して何もコンピュータについてを。

Linuxモデル(率直に言って)は、ユーザー(特に管理者)がシステムのセキュリティを(許可されている場合は制限内で)より細かく制御できるように設計されています。

ユーザーの観点からは、全自動制御と半自動制御、または手動制御の違いとして最もよく説明されると思います。現代の消費者はフルオートを求めています。Linuxにはセミオートとマニュアルがあります。最近のLinuxユーザーのほとんどは、セキュリティモデルについて知る必要はありませんが、必要な場合や必要な場合はコントロールがあります。


2

一部のプログラムをインストールすると、システム全体ではなく、独自のユーザー空間(つまり、ホームディレクトリ内に自己完結型)内にインストールできます。そのため、1人のユーザーが自分で使用するためにプログラムをインストールする必要がないため、スーパーユーザー特権を求められることはありません。このようにインストールされたプログラムは、特権の昇格がない場合、「非所有者、非グループメンバーはこれを読み取ることができます」許可が付与されていないファイルにアクセスできません。


プログラムがホームディレクトリにインストールされている場合、ホームディレクトリ内のどこでも読み書きできますか?
スタミネーター

2
あなたの許可で実行されるので、あなたがアクセスできるものなら何でもアクセスできます。
-DopeGhoti

1
シングルユーザーマシンでは、ユーザーのみのアクセスはルートアクセスよりも安全ではありません。いずれにせよ、重要なものはすべて、おそらくユーザーがアクセスできます。
須藤
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.