ルートで自分でsudoを実行すると(ライブ)権限が失われます

ルートで自分でsudoを実行すると(ライブ)権限が失われます

Debian wheezyにアップグレードした後(カーネルをアップグレードしていません。まだ3.8.2です)、以前と同じようにjackdを起動できなくなりました。わかりましたyou are not allowed to use realtime scheduling

sudo調査の結果、これはルートからmartinにsudoを実行したスクリプトのコマンドに関連していることがわかりました。 Firewire ハイブリッドコンソールを開くと、udev ルールを使用して jackd を起動するため sudo が必要です。コマンドラインでsudoと入力すると、問題を再現できます。

簡単に言えば、私が観察したのはこれです。

  • マーティンでjackdを開始 - >日
  • jackdをrootとして起動 - >実行
  • rootとしてログインsu - martinしてjackdを起動 - > work
  • root sudo -u martin /usr/bin/jackd ...- >動作しません
  • 上記と同じですがsudo -E -u martin ...- >動作しません。

私の/etc/security/limits.confには次の行が含まれています。

@audio - rtprio 40
@audio - nice -20
@audio - memlock 1554963

sudo -u martin id私はオーディオグルー​​プに属していると表示されますが、ルートはそうではありません。ルートからマーティンにsudoした後、マーティンにはリアルタイム権限がありません。

sudo -u martin sh -c "ulimit -e -r"
scheduling priority             (-e) 0
real-time priority              (-r) 0

オーディオグルー​​プにルートを追加しても違いはありません。ルートはまだリアルタイムの権限を持っておらず、sudo -u martin マーティンの後もまだ上記のようです。

ベストアンサー1

martinsudoはrootユーザーの環境を維持するため、ユーザーが設定したパスやその他の環境変数がない可能性があります。jackこのオプションを使用して、シェルでsudoを介して実行することもできます-s /path/to/shell

ただし、rootとしてsuパスワードを入力するように求められず、アクセス(代替ユーザー)することができます(そしてこれを達成するためにsudoを設定する必要はありません。sudoは特にrootではないユーザーのためです)。

 su - martin -c /usr/bin/jackd ...

-csuに実行するコマンドを通知し、この-オプション(完了でも使用可能-l)は、実行中のユーザー(この場合)に似た環境を設定しようとしますmartin

おすすめ記事