問題タブ [setuid]
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++ - C++ で root 以外のユーザーに UID を設定する
Ubuntu 11.04 の NetBeans 6.9 で C++ で開発しています。root ではなくユーザー "peter" として呼び出されたい system() 呼び出しを行っています。という事は承知しています
ユーザーをルートに設定しますが、ユーザーをピーターに設定するにはどうすればよいですか?
ありがとう、ピーター。
c - Linuxでsetgidとsetuidを呼び出した後、グループに属するファイルにアクセスできません
新しいグループとユーザーを追加して、システムグループに追加しましょうvideo
ファイルを作成し、その所有者をルートに変更し、グループをに変更しますvideo
setgid()
ここで、とを使用してCで記述された単純なアプリケーションについて考えてみます。setuid()
コンパイル後、通常のユーザーとして実行できます。
setgidへのアクセス許可がないため、失敗します。mydaemonとして直接実行します。
setgid
結構です、私はできますsetuid
(私は同じユーザーです)そして私は期待通りにファイルを開くことができます
次に、rootとして実行します。
私はできるしsetgid
、 mydaemonとして実行していると言いますがsetuid
、ファイルを開くことができません。(errno 13はEACCES:許可が拒否されました)getgid
getuid
問題はどこだ?
centos - 非特権ユーザーとして adjtime() を使用する
CentOS 5.4 を実行していますが、root 以外のユーザーとして「adjtime()」システム コールを使用する方法があるかどうか疑問に思っていました。
よろしくお願いします。
c - root以外のユーザーと同等のsetuid
Linuxにはsetuidに似たCインターフェースがありますか?これにより、プログラムはユーザー名/パスワードなどを使用して別のユーザーに切り替えることができますか?setuidの問題は、スーパーユーザーのみが使用できることです。
ログインしたユーザーとしてジョブを実行する必要がある単純なWebサービスを実行しています。したがって、メインプロセスはrootとして実行され、ユーザーがログインした後、フォークしてsetuidを呼び出し、適切なuidに切り替えます。ただし、メインプロシージャをrootとして実行することに慣れていません。su
私はむしろそれを別のユーザーとして実行し、 (ただし新しいプロセスを開始せずに)同様の別のユーザーに切り替えるメカニズムを持っていると思います。
c - C Makefile を使用して実行権限を設定する
Makefile を使用して C プログラムをコンパイルしており、実行可能ファイルを setuid にしたいと考えています。Makefile を使用して権限を設定するにはどうすればよいですか?
bash - /bin/sh は権限を削除しません
スタックオーバーフローの皆さん、こんにちは。
system("/bin/bash") を使用して bash シェルを呼び出すだけの C プログラムを作成しました。
setuid パーミッション ビットを有効にしてプログラムを実行すると、呼び出されたシェルの euid は 0 に設定されません。
しかし、sudo ln -s /bin/bash /bin/sh を使用して /bin/sh を /bin/bash を指すように変更した場合
次に、/bin/sh を引数としてシステムを実行すると、新しく呼び出されたシェルの euid=0 が設定されます。
私はubuntu 10.04に取り組んでいます
なぜこれが起こるのですか?
linux - Set-user-id ビットは Linux でどのように機能しますか?
次の内容の「ルートファイル」があります。
このファイルのアクセス許可は次のとおりです。
このファイルには set-user-id ビットが設定されているため、このファイルを実行すると、root 以外のユーザーが実行した場合でも有効な uid が 0 として表示されることが予想されます (set-user-id ビットにより、ファイルの所有者 (この場合は root) の実効ユーザー ID で実行されるプロセス)。ただし、代わりに、非ルート シェルから「root-file」を実行すると、次の出力が得られます。
このファイル/スクリプトは有効なユーザー ID 0 で実行されていません。なぜですか?
c - setuid/capabilitiesを使用したstdbuf
出力を生成する別のプロセスからの出力を読み取っています(低速で無限)。このデータをリアルタイムで読み取りたいので、「stdbuf -oL」(行バッファー、データはテキスト)を使用します。生成プロセスを制御できないため、ソースを変更して強制的にフラッシュすることはできません。
これまでのところ、stdbufは問題なく動作しますが、プロセスはSOCK_RAWを使用し、rootとして実行するか、setuid(0)またはcap_net_raw
機能を備えている必要があります。setuidまたは機能を使用して非rootとして実行している場合、stdbufは無視されるようです。問題を説明しましょう:
これは単純なライターです。
そして簡単な読者:
予想通り、実行./writer | ./reader
してもバッファがいっぱいになるまで何も表示されません。プリペンディングstdbuf -oL
はラインバッファリングを有効にし、リーダーにラインを取得します。
しかし、追加すると機能cap_net_raw+ep
しなくなります。
setuidを使用した場合も、同じ動作が見られます。
これが発生する理由と、rootとして実行せずにstdbufを引き続き使用する方法を理解することに興味があります。setuidが舞台裏で何をしているのか完全には理解していないことを認めます。
linux - setuid が有効にならない
ユーザーAとBがいて、別のグループに属しているとしましょう。それらのボットはルートではありません
最初に、ユーザー A として。
次にユーザーBに切り替えます。ユーザーBはバイナリを正常に実行して「こんにちは」という挨拶を受け取ることができると想定していますが、実際にユーザーBとしてバイナリを実行すると、「許可が拒否されました」。なぜ?
linux - Linux の機能とゼロ/非ゼロの UID との関係は?
機能のマンページはかなり長く、いくつかのことを完全には理解していません。
たとえば、CAP_NET_RAW にアクセスできるかどうかを決定する関数はどのように見えるでしょうか?
入力:
- a = 実効 uid は 0
- b = 0 であるいくつかの実際の/保存された/任意の uid があります
- c = CAP_NET_RAW は +e
- d = CAP_NET_RAW は +i
- e = CAP_NET_RAW は +p
- f = CAP_NET_RAW は「境界セット」から除外されます
出力:
- x =
socket
EPERM を取得せずに呼び出すことができるようになりました - y = いくつかのトリッキー (ファイルシステムベース
chmod +s
またはsetcap
アクセス昇格、外部ヘルパーへの接続を含まない) の後、たとえば、capsetp
最終的に raw ソケットを開くことができるようになります。
私が現在理解しているように、それは次のようなものです:
- x = !f && (a || c)
- y = !f && (b || a || c || e)
実際にはどうですか?