sudoなしで一般ユーザーとしてコマンドを実行するには?

sudoなしで一般ユーザーとしてコマンドを実行するには?

一般ユーザーとしてコマンドを実行するためにsudoにsetuidビットを割り当てることはできますか?

ユーザーテストを実行した後、次のことを行うとします。

test@test$ apt-get update

しかし、sudoを使用したりsudoersファイルを変更したくありません。 setuidビットだけを使用できますか?

答え1

アカウントに権限がある場合はsudosuid ビットを台無しにする必要はありません。以下では、Bash を対話型シェルとして想定しているため、使用する項目に応じて、手順 2 と 3 を変更する必要があります。


  1. /etc/sudoersの最後に追加します。

    USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/apt-get
    USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/shutdown
    
  2. ~/.bashrcに追加してください。

    alias shutdown='sudo shutdown'
    alias apt-get='sudo apt-get'
    
  3. 現在のセッションの開始構成を再ロードします。

    $ source ~/.bashrc
    
  4. root / sudoのパスワードを求めるプロンプトは表示されず、通常のユーザーとしてコマンドを実行できるようになります(パスワードを知らなくても済みます)。

    $ apt-get update
    $ apt-get upgrade
    $ shutdown -h now
    

答え2

短い答え:あなたできない管理コマンドを実行せずに管理コマンドを実行します。

  • Sudoまたは
  • ルートです。

NOPASSWD長い答え:rootとしてログインしているか/etc/sudoersログインしている必要があります。バラよりhttps://askubuntu.com/questions/147241/execute-sudo-without-password

visudo

次に、1行を追加します。

username ALL=(ALL) NOPASSWD: ALL

要求どおりに特定のプログラムを実行したい場合バイナリ使用できるファイル

chown root:wheel /usr/binary
chmod u+s /usr/binary

ただし、sudoなしでrootとして実行したいプログラムがシェル(またはPython、awk、Perl)の場合は実行できません。

罠に気をつけてください。私の基本的なUbuntuには/usr/bin/shutdownトラップがあります/sbin/systemctl

上記のchmod / chownを適用する前に、後者を前者にコピーする必要があります。

関連情報