問題タブ [linux-capabilities]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ルート所有ファイルの名前を変更する Linux 機能
一部のコンポーネントのテストでは、 Ubuntu 14.04の C++ testappで、 /sbin/rebootの名前を一時的に変更して、テスト中のシステム (testapp 内で開始された別の大きな C++ アプリ) が呼び出され
ないようsystem("/sbin/reboot")
にし、テスト後に復元/sbin/rebootしたいその完全な栄光。
したがって、私が呼び出すcmdシェルで
私のtestappがsystem("chown user /sbin/reboot")さらに呼び出すことができるようにするためsystem("chgrp developer /sbin/reboot")にsystem("mv /sbin/reboot /sbin/reboot.tmp")
しかし、testapp は chown で停止します: '/sbin/reboot' の所有権を変更しています: 操作は許可されていません
では、sudo を実行していないアプリ内からこの特定のファイルの名前を変更できるようにするには、どうすればよいでしょうか?
linux - Linux の setcap コマンドを使用して Yocto ビルド中に機能を設定する
Yocto 1.8 を使用して Linux システムを構築しています。
libcap パッケージのレシピ ( http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-support/libcap/libcap_2 ) を介して導入される、ビルド中にコマンド「setcap 」を使用してファイルの機能を設定する必要があります。 25.bb?h=マスター
問題は、レシピがライブラリのみであるlibcapパッケージと、使用する必要があるバイナリを含むlibcap-binと呼ばれる別のサブパッケージを提供することです。しかし、レシピ内のlibcap-bin-nativeパッケージを依存関係としてビルドまたは使用できませんでした ( DEPENDS変数を使用)。そのため、「setcap」バイナリを呼び出すたびに、Yocto はビルド システムのバイナリではなくホスト バイナリ (Ubuntu 14.04 64 ビット) を使用します (存在しないため)。
libcap-bin パッケージからビルドされたネイティブ バイナリを、レシピの実行中に使用されるネイティブ sysroot ビルドシステムに含める方法を知る必要があります。
setcap コマンドを使用するレシピの例:
このレシピは正常に機能していますが、" /sbin/setcap "にあるホスト システム (Ubuntu 14.04 64 ビット)のsetcapコマンドを使用する点が異なります。
依存パッケージ libcap-native には、ネイティブ sysroot 内のライブラリ ファイルのみが含まれますが、バイナリは含まれません。
これをレシピ内で使用した場合:
このエラーが発生しました:
このスレッドでも同じトピックについて話しているのを見ました: Linux capabilities with yocto
しかし、彼は Yocto > 2.3 を使用しており、私は Yocto 1.8 を使用しており、今は更新できません。
何か助けはありますか?
PS: IPK の作成中に ACL と拡張属性を保持するように yocto ビルド システムを既に更新しました。IPK 内、rootfs 内、およびフラッシュ後のターゲット上で機能し、保持されています。
linux - コンテナ内に権限をドロップする
私のイメージの 1 つは、デバイスのマウントを必要とします。したがって、起動時に cap_sys_admin が必要です。ただし、必要がなくなったら、この機能を削除したいと思います。
後の段階で機能を削除する方法はありますか?