パスワードを要求せずにEclipse PyDevプロジェクトでスーパーバイザコマンドを実行する方法は?

パスワードを要求せずにEclipse PyDevプロジェクトでスーパーバイザコマンドを実行する方法は?

したがって、npmパッケージがインストールされていることを確認する必要がある次のコードがあります。

def is_installed(name, as_global=True):
    # Returns whether NPM package is installed. 
    s = shell(_get_npm_command("ls -p --depth 0", as_global))
    match = re.search(r'\b%s\b' % (name), s['stdout'])
    if match:
        return True
    return False

シェル関数は subprocess.Popen() を囲むラッパーです。

def shell(c, stdin=None, env={}):
    # Simplified wrapper for shell calls to subprocess.Popen()
    environ = os.environ
    environ["LC_ALL"] = "C"
    for x in env:
        environ[x] = env[x]
    if not "HOME" in environ:
        environ["HOME"] = "/root"
    p = subprocess.Popen(shlex.split(c),
            stderr=subprocess.PIPE,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            env=environ)
    data = p.communicate(stdin)
    return {"code": p.returncode, "stdout": data[0],
        "stderr": data[1]}

次のようにget_npm_commandを使用してください。

def _get_npm_command(command, as_global, path=None):
    # returns npm command
    if as_global:
        return _get_global_npm_command(command)
    else:
        return _get_local_npm_command(command, path)

def _get_global_npm_command(command):
    # returns global npm command
    os.chdir(NPM_PATH)
    return "gksu -u npm 'npm " + command + " -g'"

def _get_local_npm_command(command, install_path):
    # returns local npm command
    if install_path:
        os.chdir(install_path)
    return "npm " + command + " "

ご覧のとおり、最終コマンドは次のとおりです。

gksu -u npm npm ls -p --depth 0

つまり、しばらく前にnpmでroot権限を使用しないことをお勧めしたので、グローバルnpmパッケージをインストールするためにnpmというユーザーを作成しました。彼らは心を変えますが、誰かが提案したオンラインで見つけた解決策に固執します。

とにかく、gksuはこのコマンドのパスワードを求めるメッセージを表示しますが、npmにはパスワードがないため、パスワードを要求せずにこのコマンドを実行できるようにしたいです。

私は以下を試しました:

/etc/sudoers.d/arkos.sudo

npm     ALL=(ALL) NOPASSWD: /usr/bin/npm

..しかし、あまり効果はないようです。

ベストアンサー1

おすすめ記事