Debian wheezyでiwconfigをsuidする方法は?

Debian wheezyでiwconfigをsuidする方法は?

さまざまなワイヤレスインターフェイスを処理する私のユーザーアカウントで実行されるスクリプトがあります。無線LANなどをインテリジェントにオフまたはオンにします。ただし、デバイスの電源を入れたり切ったりするiwconfigなどのツールを呼び出してこれを行います。hciconfigしかし、これにはスーパーユーザー権限が必要なので、プライベートスクリプトフォルダにこのバイナリのコピーを作成してsuidフラグを設定することにしました(ディレクトリを読み込んで実行できる唯一の人は私です)。したがって、これらのバイナリに対する権限は私のデフォルトグループ-rwsr-x---に属しているようです。root

ただし、このバイナリを実行すると、次のような結果が得られるため、suidビットは完全に無視されるようです。

me@host:~/scripts/suid$ stat iwconfig
  File: `iwconfig'
  Size: 26968       Blocks: 72         IO Block: 4096   regular file
Device: 15h/21d Inode: 4194732     Links: 1
Access: (4750/-rwsr-x---)  Uid: (    0/    root)   Gid: ( 1000/   me)
Access: 2011-08-24 04:15:39.008148182 +0200
Modify: 2013-02-09 21:25:47.777488386 +0100
Change: 2013-03-12 15:55:20.765681857 +0100
 Birth: -
me@host:~/scripts/suid$ ./iwconfig wlan0 txpower off
Error for wireless request "Set Tx Power" (8B26) :
    SET failed on device wlan0 ; Operation not permitted.

また、グループをroot、guidビットに設定し、バイナリを実行可能で読み取り可能にしようとしました。結果は同じです。

では、なぜこのようなのでしょうか?どうすれば解決できますか?

ベストアンサー1

ホームディレクトリにすでにこのnosuidフラグがインストールされている可能性があります。を見るとこれを確認できます/proc/mounts。どのファイルシステムにホームディレクトリが含まれているかわからない場合は、df ~これを知らせます(これはgrepを使用して簡単に見つけることができます/proc/mounts)。

しかし、より良いオプションは、NOPASSWDこのフラグでsudoを使用することです。たとえば、root として実行し、visudo -f /etc/sudoers.d/local-iwconfig次の行を追加します。

your-user-name ALL=(root) NOPASSWD: /sbin/iwconfig

sudoを使用してさらにロックすることもできます。たとえば、引数を含む実行するコマンドライン全体を指定できます(その後、各コマンドラインに1つずつ複数のエントリを持つことができます)。詳しくはご確認くださいsudoers(5) のマニュアルページ

おすすめ記事