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。次に例を示します。

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# 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

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

root@demo:~# touch testfile
root@demo:~# getcap testfile

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

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

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

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

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

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

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

結論

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



Leave a Comment

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

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

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

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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つになりました

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で公開されています。このチュートリアルでは

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

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

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

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

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

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

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