LinuxにGIMPやLibreOfficeなどのプログラムをインストールするとき、権限について尋ねられることはありません。 Ubuntuにプログラムをインストールすることにより、ドライブ上の任意の場所での読み取り/書き込みとインターネットへのフルアクセスの完全なアクセス許可をプログラムに明示的に付与していますか?
理論的には、GIMPはSudoタイプのパスワードを必要とせずに、ドライブ上の任意のディレクトリを読み取りまたは削除できますか?
それが可能であるかどうかではなく、技術的に可能である場合にのみ、私は興味があります。もちろん、その可能性は低いです。
ここには2つの点があります。
標準的な方法(Ubuntuのapt/apt-getなどのシステムインストーラー)でプログラムをインストールすると、通常、すべてのユーザーが使用できるディレクトリ(/ usr/bin ...)にインストールされます。このディレクトリには書き込み権限が必要なので、インストール中に特別な権限が必要です。
プログラムを使用すると、ユーザーIDで実行され、IDで実行されたプログラムが読み取りまたは書き込みを許可されている場合にのみ、読み取りまたは書き込みができます。 Gimpの場合、たとえば、ブラシなどの標準リソースは共有/usr/share/gimp/
にあるため編集できないこと、および最初にそれらをコピーする必要があることがわかります。これはEdit>Preferences>Folders
にも表示されます。ほとんどのフォルダーはペアであり、システムは読み取り専用で、ユーザーは書き込み可能なフォルダーです。
Ubuntuにプログラムをインストールすることにより、ドライブ上の任意の場所での読み取り/書き込みとインターネットへのフルアクセスの完全なアクセス許可をプログラムに明示的に与えていますか?
はい、Sudo
または同等のものを使用する場合は、ドライブ上の任意の場所で読み取り/書き込みを行うためのinstallerフルアクセス権を付与します。これはほとんど同じです。インストーラーが設定できるsetuidと呼ばれるフラグもあります。これにより、インストール後もプログラムに完全なアクセス許可が与えられます。
インストーラーを無視し、プログラムがsetuidでない場合(プログラムがsetuidを使用することは非常にまれです)でも、プログラムを実行すると、アカウントがアクセスできるすべてのものに完全にアクセスできます。たとえば、オンラインバンキングにログインしている場合、仮にすべての資金がナイジェリアに送金される可能性があります。
AndroidまたはiOSのようなアクセス許可がないのはなぜですか?
Linuxのセキュリティモデル(つまり、セキュリティシステムの設計方法)は非常に古いものです。 1960年代にさかのぼるUnixから継承されています。当時、インターネットはなく、部門のほとんどの人が同じコンピューターを使用していました。あなたのプログラムのほとんどは信頼された大企業から来ました。したがって、セキュリティシステムは、ユーザーをお互いから保護するために設計されたものであり、ユーザーが実行するプログラムからユーザーを保護するためのものではありません。
最近ではかなり古くなっています。 AndroidはLinuxに基づいていますが、すべてのユーザーではなく、アプリごとに個別の「ユーザーアカウント」を作成することで機能します。iOSの用途はわかりません。現在、Flatpakなどの取り組みはLinuxデスクトップに同じ種類のものを持ち込もうとしています。
あなたが欲しいものはFlatpackアプリによって提供されています。これらは、iOS、Android、またはWindowsストアアプリとほぼ同じです。
私はそれらを使用していないので、各アプリがインストールされたときに必要な権限を確認するために、まだGUIを実装しているかどうかはわかりません。
すべてのフラットパックアプリケーションには、メタデータと呼ばれるマニフェストが含まれています。このファイルには、アプリケーションのID(app-id)や使用するランタイムなど、アプリケーションの詳細が記述されています。また、アプリケーションに必要な権限もリストされています。
デフォルトでは、インストールすると、アプリケーションは要求したすべての権限を取得します。ただし、flatpak runを呼び出すたびに、またはフラットパックオーバーライドを使用してアプリケーションごとにグローバルにアクセス許可をオーバーライドできます(詳細については、flatpak-runおよびflatpak-overrideのマンページを参照してください)。現在、アプリケーションのアクセス許可の処理はインターフェイスでいくらか隠されていますが、長期的な計画では、インストール中にアクセス許可を表示し、それらをオーバーライドしやすくすることです。
また、Ubuntuの代替であるSnappyを使用して、GUIに表示されるそのような機能が提供されているかどうかを確認していません。
技術的には可能であり、ソリューションにはapparmor
、selinux
およびfirejail
、あるいはLXC
のような完全なコンテナまたは完全な仮想マシン(例:VirtualBox
、kvm
またはvmware
)。ネットワーキングには、OSXのopensnitch
プログラムのクローンであるlittlesnitch
があります。
ユーザーによって与えられたアクセス許可を持つ広範なセキュリティモデルがない理由は、伝統的にあなたがあなたのPCで何を実行するかに注意しているからです。モバイルシステムのアプリストアにあるものの90%は、PC上のマルウェアと見なされます。
PC上のマルウェアとしてFacebook、Googleアナリティクス、広告ネットワークの接続などの動作を分類するアドウェア(つまり、アダウェアまたはSpybot D&D)のスキャナーがあります。これらのことに関しては、モバイルエコシステムはコンピューティング全体の再起動のようなものです。アドウェアがバンドルされているのは、それが簡単で分析機能が追加されているからです。副作用はプライバシーとセキュリティの低下です。セキュリティの部分はサンドボックスモデルによって説明されますが、プライバシーの部分は未解決の問題です。
これをPCで長期間使用しないもう1つの理由は、サンドボックスの複雑さです。これは、以前のPCでは遅すぎて、利点がほとんどないものにさらにエンジニアリングが必要になる可能性があることを意味します。
今日では、snapやflatpakなどの新しいパッケージ形式でサンドボックスを使用する試みが見られ、ブラウザも拡張機能にそれを使用しています。 Chromiumは最初から許可モデルを使用しており、FirefoxはすべてのWeb拡張機能に1つを使用しています(57からインストールできる唯一の拡張機能です)。これは非常に合理的です。人々は、知らない人のアプリと同じように、未知の作成者のブラウザ拡張機能をインストールします。彼らがアクセスするWebサイトほど危険ではないと考えています。これは、サンドボックスがないと致命的な誤解です。
Androidは「マーケットプレイス」のセキュリティモデルを使用しています。さまざまなアプリケーションはさまざまな(準信頼できる)ベンダーから提供されており、保護されたリソースや互いから分離する必要があります。ほとんどのアプリは営利目的で配布されます。これらのアプリは販売(ペイウェア)、有料広告を表示、またはデータをサードパーティに販売してユーザーを「収益化」します。たとえ捕まったとしても、違法なデータアクセスに従事する高い動機があります。
Debian、Red Hat、および同様の「クラシック」Linuxディストリビューションのほとんどのアプリケーションはソース形式で配布されます。オープンソースアプリケーションが十分な勢いを得た後、ディストリビューションのメンテナーが手動で選択して組み込みます。不正なデータアクセスを実行する動機はほとんどありません—潜在的な利益は努力を正当化しません。
注目に値するのは、Android=の高度なセキュリティモデルが理由の1つであり、モバイル市場でiOSを簡単に克服し、大きな牽引力を得た理由です。最新のデスクトップLinuxディストリビューションは、単に「異なる」だけではありません。 、—実際には、セキュリティと配布モデルの面でかなり遅れています。
一部のLinuxディストリビューションでは、ソフトウェアディストリビューションシステムに改善が加えられています。一元化されたサードパーティソフトウェアリポジトリ(AUR)、サードパーティソフトウェア(AppImage、Snappy、Flatpack)を配布するための専用パッケージフォーマット、セカンダリリポジトリシステム(Docker)。残念ながら、これらの改善は時間の経過とともにほとんど魅力がありません。AppImageは2004年に発明され、AURの最初のバージョンは2005年にリリースされましたが、10年以上後に正式に機能を採用した最新のLinuxディストリビューションはありません。
LinuxにGIMPやLibreOfficeなどのプログラムをインストールするとき、権限について尋ねられることはありません。
これらのアプリケーションは、ファイルシステムの特権部分にインストールされます。この部分には、通常、変更するためのアクセス権はありません。
デスクトップ用に設定されたメインストリームディストリビューションでは、インストール時に最初に設定された単一のユーザーが通常、管理者権限を持ちます。彼らが通常求められるのは、ソフトウェアをインストールするための自分のログインパスワードだけであり、常にそうであるとは限りません。
ソフトウェアをインストールすると、デフォルトで、通常のユーザーが実行できるようにセットアップされ、データファイルを読み取ることができます。それだけで十分です。
Ubuntuにプログラムをインストールすることにより、ドライブ上の任意の場所での読み取り/書き込みとインターネットへのフルアクセスの完全なアクセス許可をプログラムに明示的に付与しますか?
プログラムではありません。ユーザーアカウントが異なるグループに属していて、異なるグループが異なるリソースへのアクセスを許可していることが起こります。
Linuxのセキュリティモデルでは、ユーザーアカウントには特定の権限があり、アカウントが属するグループには特定の権限があります。ファイルシステムのany部分に権利を付与するには、通常はユーザーに付与されていないroot権限が必要です。 Sudoを使用しても、すべての権利を取得することはできません。
通常のユーザーアカウントは通常、インターネットなど、必要になると予想されるリソースにアクセスできます。
理論的には、GIMPはSudoタイプのパスワードを必要とせずに、ドライブ上の任意のディレクトリを読み取りまたは削除できますか?
ユーザーがアクセス権を持っているディレクトリまたはファイルは、通常、ユーザーの権利を継承しているため、起動したアプリケーションからアクセスできます。通常ログインしているユーザーは、デフォルトでは通常、ほとんどの重要なシステムファイルまたは共有ファイルを変更する権限を持ちません。
それが可能であるかどうかではなく、技術的に可能である場合にのみ、私は興味があります。もちろん、その可能性は低いです。
ほとんどのユーザーは通常、適切にポリシングされたリポジトリからアプリケーションをインストールし、悪意のあるコードのリスクは低いことに注意してください。
Linuxのアクセス許可を理解するために、追加の資料をお勧めします。
Androidセキュリティモデルは、OSの基本的なセキュリティモデルについて一般的に何も理解していないだけでなく、ほとんど理解していないユーザーのニーズに合わせて進化しています。コンピュータについては何でも。
Linuxモデル(私は率直に言ってもっと気に入っています)は、ユーザー(特に管理者)がシステムのセキュリティを(許可されたアクセス許可の制限内で)より細かく制御できるように設計されています。
ユーザーの観点からは、フルオート制御とセミオート制御またはマニュアル制御の違いとして最もよく説明されていると思います。現代の消費者はフルオートを望んでいます。 Linuxには半自動と手動があります。最近、ほとんどのLinuxユーザーはセキュリティモデルについて知る必要はありませんが、必要な場合や必要な場合は、コントロールがあります。
一部のプログラムをインストールすると、システム全体ではなく、独自のユーザー空間(つまり、ホームディレクトリに自己完結型)にプログラムをインストールできます。そのため、1人のユーザーが自分で使用するためのプログラムをインストールする必要がないため、スーパーユーザー権限を求められることはありません。このようにインストールされたプログラムは、実際にはnot特権の昇格なしに「非所有者非グループメンバーはこれを読み取ることができます」許可が付与されていないファイルにアクセスできます。