私は大学コースの権限昇格に努めています。私は単にls
ビットの出力をコピーして設定する簡単なコードを持っていますSUID
。
int main(void){
system("/bin/ls");
return 0;
}
また、シェルとして機能するスクリプトをホームディレクトリに追加しました。
#!/bin/bash
/bin/sh
また、最初の変数である.
変数を追加しました。$PATH
したがって、Cでコードを実行するたびにbin
ホームディレクトリのスクリプトを呼び出す必要がありますが、変数が代わりにIFS
実行されるため、変数は完全に無視されます。なぜですか?/bin/ls
bin ls
ベストアンサー1
プログラムは実行されません」bin
script"をホームディレクトリに保存します。を実行します"/bin/ls"
。システムコールはシェルを使用しますが、絶対パス名も使用します(実際にはPOSIX実行方法は実装によって定義されます。)シェルの選択にPATH
影響を与える方法はありません。ls
POSIX行動について次のようにIFS
言います。
実装が無視できる値
IFS
環境にあってもなくてもIFS
環境でシェルを呼び出すとき、シェルは以下を設定する必要があります。IFS<space>
<tab>
<newline>
呼び出されるまで。
実装について問い合わせる場合いいえこのように振る舞うと(POSIXはこれらの慣行が目立つほど頻繁に発生することを示唆しているため)、特定の実装が関連しているはずです。