これに触発された 質問 ....
12.04でシステムを使用するのは私だけです。
毎回Sudo
コマンドを発行します。システムはユーザーパスワードを要求します(独自の方法で有効です)。
しかし、私は考えていました。 rootアカウントをアクティブ化せずに;認証にユーザーパスワードを要求しないSudoコマンドを実行するにはどうすればよいですか。
注:パスワードで認証せずにSudoコマンドを実行したい。ターミナルを介して実行される場合のみ。
「Ubuntu Software Center」を使用しているときや、端末に何かをドラッグアンドドロップしてbashスクリプトを実行しているときなど、この余分なセキュリティ層を他の機能から削除したくありません。
Sudo -i
は、システム(または他のシステム)の変更中に10分ごとにパスワードを入力したくない場合、およびシステムファイルを変更したくない場合に使用する方法です。
コンソールを閉じるかSudo
と入力すると、exit
ユーザーパスワードを使用してrootに切り替わり、通常のユーザーに戻ります。
パスワードを要求しないようにSudo
を構成できます。
ターミナルウィンドウを開き、次のように入力します。
Sudo visudo
ファイルの下部に、次の行を追加します。
$USER ALL=(ALL) NOPASSWD: ALL
$USER
はシステム上のユーザー名です。 sudoersファイルを保存して閉じます(デフォルトのターミナルエディターを変更していない場合(変更されているかどうかがわかります)、ctl + xを押してnano
を終了すると、保存するように求められます)。
Ubuntu 19.04の時点で、ファイルは次のようになります。
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
YOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL
この後、パスワードの入力を求められることなく、ターミナルウィンドウでSudo <whatever you want>
と入力できます。
これは、ターミナルでSudo
コマンドを使用する場合にのみ適用されます。 (たとえば)ソフトウェアセンターからパッケージをインストールしようとすると、パスワードの入力を求められます。
ルートSudoタイムアウトは、これを行う最も簡単で安全な方法です。すべての例をレイアウトしますが、この方法ははるかに安全ですが、これを行う方法は非常に危険です。
Sudo visudo
これによりエディターが開き、sudoersファイルがポイントされます。Ubuntuはデフォルトでnanoであり、他のシステムではViが使用されます。これで、システム上の最も重要なファイルの1つを編集するスーパーユーザーになりました。ストレスがない!
(Vi固有の指示は(vi!)で示されています。nanoを使用している場合は無視してください。)
矢印キーを使用して、Defaults
行の最後に移動します。
(vi!) A(大文字の「a」)キーを押して現在の行の最後に移動し、編集モードに入ります(行の最後の文字の後に追加します)。
次のように入力します:
,timestamp_timeout=X
ここで、Xは分単位のタイムアウト有効期限です。 0を指定すると、常にパスワードが要求されます。 負の値を指定した場合、タイムアウトは期限切れになりません。例Defaults env_reset,timestamp_timeout=5
。
(vi!) Escapeキーを押してコマンドモードに戻ります。編集に満足したら、:w
と入力します Enter ファイルと:q
を書き込む Enter viを終了します。間違えた場合、おそらく最も簡単な方法は、最初からやり直し、保存せずに終了することです(ヒット Escape コマンドモードを開始するには)を入力してから:q! Enter。
ヒット Ctrl+X、その後 Y、その後 Enter ファイルを保存してnanoを終了します。
追加情報については、sudoersおよびviのマニュアルページを参照してください。
man sudoers
man vi
次を使用してタイムアウト値をリセットします。
Sudo -k
これらの手順は、Sudoコマンドを使用するときにパスワードのプロンプトを削除することです。ただし、rootアクセスにはSudoコマンドを使用する必要があります。
ターミナルウィンドウを開きます。 Sudo visudo
と入力します。ファイルのENDに次の行を追加します(最後にない場合は、後のエントリで無効にすることができます)。
<username> ALL=NOPASSWD: ALL
<username>
をユーザー名に置き換えます(<>
なし)。これは、Ubuntuがユーザー名と同じ名前のグループを作成したことを前提としています。これは一般的です。代わりに、グループユーザーまたは他のグループを使用することもできます。そのグループにいることを確認してください。これは、[システム]-> [管理]-> [ユーザーとグループ]に移動して確認できます。
例:
michael ALL=NOPASSWD: ALL
^ X(Ctrl+X) 出る。これにより、ファイルを保存するオプションが表示され、Yを入力して保存します。
ログアウトしてから再度ログインします。これにより、パスワードの入力を求められることなく、Sudoコマンドを実行できるようになります。
ルートアカウントを有効にする
ルートアカウントを有効にする必要はほとんどありません。 Ubuntuシステムの管理者として行う必要があるほとんどすべてのことは、Sudoまたはgksudoを介して実行できます。永続的なルートログインが本当に必要な場合、最良の代替方法は、次のコマンドを使用してルートログインシェルをシミュレートすることです。
Sudo -i
ただし、mustルートログインを有効にする必要がある場合は、次のように実行できます。
Sudo passwd root
ルートアカウントを再度無効にする
何らかの理由でルートアカウントを有効にし、再度無効にする場合は、ターミナルで次のコマンドを使用します。
Sudo passwd -dl root
システム全体のグループSudo
root$ echo "%Sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
ログアウトしてから、再度ログインします。
Sudoタイムアウトのリセット
次を実行することで、Sudoが次回パスワードを要求することを確認できます。
Sudo -k
個人(またはグループ)のアクセス許可を付与する好ましい方法は、/etc/sudoers.d
の下にファイルを追加することです
これにより、ローカルの変更がデフォルトポリシーから分離され、配布がファイルを変更した場合に時間を節約できます。
現在ログインしているユーザーをsudoerにし、Sudo
がパスワードを要求しないようにするには、次を使用します。
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | Sudo tee /etc/sudoers.d/$USER
これにより、/etc/sudoers.d/$USER
($USER
はコマンドを実行したときにログインしたユーザーのユーザー名)というファイルが作成され、どのユーザーに許可が与えられているかが明確になります。
別のユーザーに対してこれを行う場合は、上記のコマンドで$USER
の両方のインスタンスを他のユーザー名に置き換えてください。
echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | Sudo tee /etc/sudoers.d/otheruser
同様に、1つのファイルを使用して複数のディレクティブを管理できます。
echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | Sudo tee -a /etc/sudoers.d/local
詳細については、/etc/sudoers.d/README
およびman sudoers
を参照してください。
現在のユーザーのSudoプロンプトを削除する素敵なワンライナー
Sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
もちろん、やりたいことはお勧めしません。しばらくすると、Sudo
と入力すると自動的になり、その有用性が低下します。
もう1つの方法は、sudoersファイルをそのままにして、数え切れないほどのサーバーに対して複雑なことをしながら、Sudo bash
と入力することです。これにより、終了するまでルートとして認証されるシェルが提供されます。
Super User から良い答えが出ます:
STDINからパスワードを読み取る-Sスイッチを使用します。
echo <password> | Sudo -S <command>
<password>
をパスワードに置き換えます。
これは、/etc/sudoer.d/README
に記載されているようにファイルのアクセス許可も変更する1行のソリューションです。
Sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & Sudo chmod 440 /etc/sudoers.d/$(logname)
一発ギャグ
Sudo sed -i /etc/sudoers -re 's/^%Sudo.*/%Sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'