web-dev-qa-db-ja.com

Niceの値を-20にしてプロセスにroot権限を与えずにプロセスを開始するにはどうすればよいですか?

ナイス値-20でプロセスを開始したいと思います。これには-Sudo Nice -n -20 matlabのようなコマンドを使用する必要があります。ただし、これはルートとしてもmatlabを起動します。 root以外のユーザーとしてmatlabを使用する方法はありますか?

私の現在のアプローチは-Sudo Nice -n -20 Sudo -u myusername matlab-です。これは、私にとってはハックのように見えます。これを行う直接的なアプローチはありますか?

18
Lord Loh.

私はそれを普通に始め、その後「レニス」を使います...

しかし、私は機能する "su"と一緒に素早くハックすることができました:

Sudoニース-n -20 su -c command_to_run user_to_run_as

(もしあなたがSudoにパスワードを与える必要がないなら-おそらくあなたはすでにそれを与えたばかりかもしれないので-バックグラウンドに全部を置くために "&"を追加するかもしれません。)

Sudoコマンドですでにrootになっているので、suはパスワードを要求しません。 Xの下のターミナルエミュレータからXプログラムを起動できました。Xプログラムを、Xセッションを所有しているユーザー以外のユーザーとして実行する場合は、Xにそれを許可するように明示的に指示する必要があります。 (そのユーザーからのXクライアント用に開きます)。

21
Baard Kopperud

さらに一歩@ジョーダン、これがSudo Nice -n -xx su <username> -c matlabハックに対するエレガントな解決策です

注:username =sid、matlabメタデータdir =/ var/lib/matlab、ニース=-10自由に変更

  1. matlabメタデータディレクトリを作成(PERPARE)

    Sudo mkdir /var/lib/matlab

  2. 指定したユーザーを追加して、MATLABと正しいpersimissonを起動します

 Sudo useradd -d/var/lib/matlab sid 
 Sudo chown sid:sid /var/lib/matlab
  1. ユーザー(sid)パスワードを設定

    Sudo passwd sid

  2. /etc/security/limits.confに以下を追加します

    sid - priority -10

  3. ログインを自動化するためのssh-keyのセットアップとコピー(オプション)

 ssh-keygen -t rsa #following key passwd misc 
 ssh-copy-id sid @ localhost #using sid's passwd 
  1. MATLAB Shellラッパーを作成します(fix silent fail ERR
 Sudo -i 
 cat>/usr/local/bin/wmatlab 
#!/ bin/bash-
#matlabを起動するラッパー
/usr/local/MATLAB/<バージョン>/bin/matlab -desktop 
 EOF 
 chmod + x /usr/local/bin/wmatlab
  1. sidのログインシェルを調整する

    Sudo usermod -s /usr/local/bin/wmatlab sid

  2. Xforwardでsshを使用してmatlabを起動します

    ssh -X sid@localhost

9
Jiahao D.

これは、ファイル/etc/security/limits.confを変更することで実行できることを発見しました(少なくとも一部のLinuxディストリビューションでは)。私の場合、私は単に追加しました

#<domain> <type> <item> <value> my_user - Nice -20

その後、実行することができます

Nice -n -20 matlab

5
guyik

pamを使用すると、グループごとにニースの設定ファイルに制限を設定できます。

@grniceハードプライオリティ-20

@grniceハードニース-20

そして、プロセスがgrniceで実行されるグループを確認します。

1
Jordan

別の可能なオプション(単純ですが安全性は低くなります)は、Nice実行可能ファイルのsetuid/setgid権限を有効にすることです。

Sudo chmod +s /usr/bin/Nice

setuidは、ファイルを実行できるすべてのユーザーに、ファイルの実行時にファイル所有者の有効なUID(この場合はroot)を割り当てます。したがって、そのユーザーとして実行することと同じです。 setguidは、効果的なGIDに対して同じことを行います。


または、より安全に行うことができます。

# create a system group named `Nice'
groupadd -r Nice

# set the owner group for `Nice' executable
chgrp Nice /usr/bin/Nice

# disallow other users to run `Nice`
chmod o-x /usr/bin/Nice

# allow anyone who are able to execute the file gain a setuid as root
chmod u+s /usr/bin/Nice

# add your user to the group
usermod -a -G Nice <your-user-name>

新しいグループを有効にするには、アカウントに再度ログインする必要があることに注意してください。

1
Shou Ya

ユーザーをsudoersに追加します(実際には/etc/sudoers.dの新しいファイルですが、同じ前提です)。

niceuser ALL=NOPASSWD:/usr/bin/Nice

次に、「niceuser」として:

niceuser@localhost $ Sudo Nice -n -10 command...

そして、それは私が必要とすることを実行します(つまり、私のユーザーは{command ...}の優先度を上げることができます)。複数のユーザーなどをサポートしています-man 5 sudoers 詳細については。

1
squeegee

@jordanmが言ったように、須藤を落とす。独自のプロセスをナイスにして、優先順位を低くすることができます。

Nice -20 matlab

いいえSudo

1
John