Linux機能の操作

前書き

Linux機能はLinuxカーネルの特別な属性であり、プロセスおよびバイナリ実行可能ファイルに、通常、実効ユーザーIDが0のプロセス(ルートユーザーであり、ルートユーザーのみがUID 0を持つ)に予約されている特定の特権を付与します。

この記事では、使用可能な機能のいくつか、その使用方法、およびそれらを設定および削除する方法について説明します。実行可能ファイルに機能を設定すると、システムのセキュリティが危険にさらされる可能性があることに注意してください。そのため、本番環境に機能を実装する前に、非本番システムでのテストを検討する必要があります。

前提条件

  • rootアクセス権を持っているLinuxシステム(rootユーザーまたはsudoアクセス権を持つユーザーを介して)。

説明

基本的に、機能の目標は、「root」の権限を特定の特権に分割することです。そのため、1つ以上の機能を持つプロセスまたはバイナリが悪用された場合、rootとして実行されている同じプロセスと比較すると、潜在的な損傷が制限されます。

プロセスおよび実行可能ファイルに機能を設定できます。ファイルの実行から生じるプロセスは、そのファイルの機能を獲得できます。

Linuxに実装されている機能は多数あり、その多くは最初のリリースから追​​加されています。それらのいくつかは次のとおりです。

  • CAP_CHOWN:ファイルのユーザーIDとグループIDを変更する
  • CAP_DAC_OVERRIDE:DAC(随意アクセス制御)をオーバーライドします。たとえば、vtoは読み取り/書き込み/実行権限チェックをバイパスします。
  • CAP_KILL:プロセスにシグナルを送信するための許可チェックをバイパスします。
  • CAP_SYS_NICE:プロセスの素晴らしさを上げる(素晴らしさの説明はここにあります
  • CAP_SYS_TIME:システムとリアルタイムのハードウェアクロックを設定する

完全なリストについては、を実行してくださいman 7 capabilities

機能はセットで割り当てられます。つまり、スレッドには「許可」、「継承」、「有効」、「環境」、ファイルには「許可」、「継承」、「効果」が割り当てられます。これらのセットはさまざまな複雑な動作を定義しているため、完全な説明はこの記事の範囲を超えています。

たとえば、ファイルに機能を設定する場合、ほとんどの場合、「許可」および「有効」を使用しますCAP_DAC_OVERRIDE+ep+ep前述のセットを示すに注意してください。

ファイル機能の操作

必要なパッケージ

2つの主要なツールがgetcapあり、setcapこれらはそれぞれこれらの属性を表示および設定できます。

  • DebianとUbuntuでは、これらのツールはlibcap2-binパッケージで提供され、次のようにインストールできます。apt install libcap2-bin
  • CentOSおよびFedoraでは、libcapパッケージが必要です。yum install libcap
  • Arch Linuxでは、これらも以下によって提供さlibcapれます。pacman -S libcap

読書能力

ファイルに機能セットがあるかどうかを確認するには、単にを���行しますgetcap /full/path/to/binary。次に例を示します。

 [email protected]:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 [email protected]:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

システムにすでに設定されている機能を確認する場合は、次のコマンドを使用してファイルシステム全体を再帰的に検索できます。

getcap -r /

仮想ファイルシステム(など/proc)はこれらの操作をサポートしていないため、上記のコマンドは何千ものエラーを生成するため、より明確な出力を得るには、以下を使用します。

getcap -r / 2>/dev/null 

機能の割り当てと削除

ファイルに特定の機能を設定するには、を使用しますsetcap "capability_string" /path/to/file

ファイルからすべての機能を削除するには、を使用しますsetcap -r /path/to/file

デモのために、現在のディレクトリに空のファイルを作成し、機能を付与して削除します。以下から始めます。

[email protected]:~# touch testfile
[email protected]:~# getcap testfile

2番目のコマンドは出力を生成しません。つまり、このファイルには機能がありません。

次に、ファイルの機能を設定します。

[email protected]:~# setcap "CAP_CHOWN+ep" testfile
[email protected]:~# getcap testfile
testfile = cap_chown+ep

例として「CAP_CHOWN + ep」を使用しましたが、他の方法でもこの方法で割り当てることができます。

次に、からすべての機能を削除しますtestfile

[email protected]:~# setcap -r testfile
[email protected]:~# getcap testfile

繰り返しになりますが、「CAP_CHOWN + ep」が削除されたため、出力はありません。

結論

機能には多くの潜在的な用途があり、システムのセキュリティを強化するのに役立ちます。実行可能ファイルでSUIDビットを使用する場合は、必要な特定の機能に置き換えることを検討してください。



LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

Ubuntu 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

はじめにWeb分散オーサリングおよびバージョン管理(WebDAV)は、リモートでファイルを作成および変更するためのフレームワークを提供するHTTP拡張です。

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

Ubuntu 14 64ビットでのTeamspeak 3サーバーの作成

Ubuntu 14 64ビットでのTeamspeak 3サーバーの作成

概要開発チームとの大規模なコラボレーションプロジェクトで作業しているか、最新のロールプレイングゲームでボスを殺しているかに関係なく、

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

ハロウィーンのお得な情報に興奮していますか?しかし、Conned –スパムURLを取得する可能性があります

ハロウィーンのお得な情報に興奮していますか?しかし、Conned –スパムURLを取得する可能性があります

このハロウィーンシーズンのオンライン詐欺師は、魅力的なオンライン取引を熱心に探している間、あなたを騙す準備ができています。したがって、このような詐欺やデマを回避する方法は次のとおりです。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています