問題タブ [linux-namespaces]

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.

0 投票する
1 に答える
1174 参照

linux - 新しいユーザー名前空間の資格情報を含む exec.Command でエラーが発生する:「操作は許可されていません」

Linux 名前空間と Go to execute コマンドを使用して単純なサンドボックスを実装したいと考えています。コマンドがディスクに書き込まれないようにするために、コマンドは を使用して別のユーザーとして実行されますCredential: &syscall.Credential{Uid: uint32(1), Gid: uint32(1)}

ただし、「fork/exec /Main: 操作は許可されていません」というエラーが発生しました。

コードを に変更してもCredential: &syscall.Credential{Uid: uint32(0), Gid: uint32(0)}、同じエラーが発生しました。

container.go は次のとおりです。

を実行するsudo ./container -command='/Main' -username='nobody'と、「fork/exec /Main: 操作は許可されていません」というエラーが発生しました。

のユーザー名前空間のユーザーjusticeInitは root である必要がありますが、 を使用して uid と gid を設定することはできませんCredential

私は Linux と名前空間の初心者です。たぶん私は何かを誤解しています。このエラーを修正するにはどうすればよいですか? どうもありがとう!

0 投票する
3 に答える
10545 参照

centos - Podman が「名前空間で使用可能な ID が不足しています」と異なる UID で報告するのはなぜですか?

事実:

  1. Rootless podman は uid で完璧に動作します1480
  2. rootless podman が uid で失敗する2088
  3. CentOS 7
  4. カーネル3.10.0-1062.1.2.el7.x86_64
  5. ポッドマン版1.4.4
  6. 2 つの間でほぼすべての環境が削除されました
  7. のファイルシステム/tmpxfs
  8. 2 人のユーザーのcapsh出力は同じですが、uid / ユーザー名が異なります
  9. 両方の UID の/etc/sub{u,g}idファイルに同一のエントリがあります
  10. $HOME/.config/containers/storage.confがデフォルトであり、uid を除いて 2 つの間で同一です。以下storage.conf、参考までに。

以下のシェル スクリプトを作成して、この 2 つが動作している環境がどれほど似ているかを示します。

スクリプトの出力は次のとおりです。

storage.confこれが1480uidのです。以下を除いて同一ですs/1480/2088/

podman infoユーザーの 2 つの出力に基本的に違いがないことがわかります。

if (2088 == uid) { abort(); }podman のソース コードのどこかに、または同様のナンセンスがあるとは信じられません。私は何が欠けていますか?

0 投票する
1 に答える
489 参照

linux - Linux カーネル - CPU サブシステム (CGROUPS の) は CPU スケジューラとどう違うのですか?

ここのLinux カーネル コードは、プロセス (docker コンテナー プロセスを含む) をスケジュールするための複数のスケジューリング アルゴリズムを持つCPU スケジューラーを提供します。


制御グループはカーネル構造であり、プロセスのグループによるホスト システムの物理リソースへのアクセスを制限し、その使用を説明することができます。

コントロール グループは、もともと 2007 年に Linux カーネルに実装されました。

このバージョン 1 の実装は、Linux カーネル 4.5 でバージョン 2 の実装に置き換えられました。バージョン 2 では、バージョン 1 の実装に関連するいくつかの制限が修正されました。

Linux カーネルの 6 つの CGROUP サブシステムのうち 2 つはcpu サブシステムcpuset サブシステムです。

cpu サブシステムは、スケジューラを介してシステムの CPU へのアクセスを制御します

cpuset サブシステムは、CGROUPS に属するプロセスを特定の CPU コアまたはメモリ ノードにピン留めします。


CPU スケジューラは (CGROUPS の) cpu サブシステムとどう違うのですか? デフォルトの名前空間複数の名前空間に何か関係がありますか?