web-dev-qa-db-ja.com

起動時にrootとして実行するコマンドが働いていません

鉱山のマシンを起動するたびに、次のコマンドSudo xhost SI:localuser:rootを実行する必要があります。だから私はこのプロセスを自動化したいのですが。私はこれにUbuntu 12.04 LTSを使用しています。

xhostを実行すると表示されるべきであるため、このコマンドをファイル/etc/rc.localに置いてみましたが機能していません。

SI:localuser:<myUser>
SI:localuser:root

ファイル/etc/rc.localは次のとおりです。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

xhost SI:localuser:root

exit 0

私は何かがありませんか?

* PS。:コメントを提案するように**私がやることをすることはこの質問について説明されています ここで 。これをより良い方法でやることができますか?

1
GarouDan

非常に正しく指摘するように、これはうまくいきません。あなたが本当にこれをやりたい(これはかなり悪い考えのように思えます)、これらの行を持つ~/.xinitrcファイルを作成します。

#!/usr/bin/env bash
xhost SI:localuser:root

xhostコマンドはroot以降のものとして実行する必要はありませんあなた Xセッションの所有者です。今、xinitrcはかなり古いです、そして私はそれが現代のデスクトップ環境によって読まれることはわかりません。あなたはおそらくあなたのGNOMEセッションプロパティを微調整することによって同じことを達成することができます。

あなたのXサーバーへのrootアクセスを可能にする一般的なルールとしては、本当に良い考えではありません。いつでも必要なルートグラフィカルプログラムを実行するには、アクセス制御を無効にできます。

xhost + 
Sudo gedit
xhost -

私はほとんどの現代のシステムでこれをする必要がないと確信しています。あなたは正確に何をしようとしていますか? Sudoで呼び出されたプログラムは、とにかくXサーバーにアクセスする必要があります。

2
terdon

働くつもりはありません。

  1. rc.local 以前の実行 X11サーバーが起動されます。

  2. rc.local どこでわかりません X11サーバーがあります。つまり、$ DISPLAYの正しい値を知りません。

    常に複数X11サーバー - Ubuntuは「高速ユーザー切り替え」をサポートしているため、自分のために1つのXORGインスタンスがある可能性があるため、ログイン画面に2番目のもの。

  3. rc.local アクセスがありません現在実行中のX11サーバーのいずれかに。

    それについて考えてください:xhostを使ってrootにアクセスする必要がある場合は、rootはまだアクセスできないことを意味します。 rc.localはrootとして実行されています。

3つのポイントはすべて、Cronjobs、UDEVルール、そして他のほとんどのことにも適用されます。

2
user1686