ユーザーrootを介したログインを無効にし、sudoerリストにある別のユーザーを作成したルートサーバーがあります。したがって、サーバーで作業したいときは、次のようにします。
ssh myusername@IP_ADDRESS
サーバー上:
Sudo su
root権限を取得するには、パスワードを入力してください。これで6か月間問題なく動作しました。今日私はSudo su:
Sudo: no tty present and no askpass program specified
何がハッキングされていますか?このエラーは何を意味し、なぜそれを得るのですか? root権限がないと、サーバーでそれほど多くのことはできません。これを修正する方法はありますか?
Sudo
は、読み書きのために/dev/tty
を開こうとし、失敗するとそのエラーを出力します。コメントに/ dev/ttyがシステムにないことが示されています。
Sudoには、/ dev/ttyの代わりに標準入力からパスワードを読み取るオプション-S
があります。 rootになるには、Sudo -S
を実行できる必要があります。
/ dev/ttyの回復方法については、サーバーを再起動するだけで十分な場合があります。システムは、起動時に/ dev内のすべてのデバイスを再作成する場合があります。または、デバイスを作成するには、mknod
コマンドを使用しますが、ttyデバイスの正しいメジャー番号とマイナー番号を知る必要があります。私が利用できるUbuntuシステムでは、/ devに次のエントリが表示されます。
crw------- 1 root root 5, 1 Apr 16 18:36 console
crw-rw-rw- 1 root tty 5, 2 Sep 24 15:35 ptmx
crw-rw-rw- 1 root tty 5, 0 Sep 24 14:25 tty
この場合、メジャー番号は5、マイナー番号は0です。/dev/consoleと/ dev/ptmxのメジャー番号は同じです。したがって、/ dev/consoleまたは/ dev/ptmxを調べて正しいメジャー番号を見つけ、次のコマンドを実行します。
mknod /dev/tty c major 0
ここで、「major」は正しいメジャー番号です。
/ dev/ttyを再作成した後、権限が正しいことを確認してください:
chmod 666 /dev/tty
Sudo
がrootパスワードのプロンプトを表示しようとしているため、疑似ttyが割り当てられていないため、失敗します。
Rootとしてログインするか、_/etc/sudoers
_(または_Sudo visudo
_)に次のルールを設定する必要があります。
_# Members of the admin group may gain root privileges.
%admin ALL=(ALL) NOPASSWD:ALL
_
次に、ユーザーがadmin
グループ(またはwheel
)に属していることを確認します。
理想的には(より安全)%admin ALL=(ALL) NOPASSWD:/path/to/program
として指定できる特定のコマンドのみにroot権限を制限することです
チェックすべきことの1つは、OSがさまざまなプロセスに「問題がある」と見なしているかどうかです。それでも問題が解決しない場合は、sshを実行するシェルとSudoを実行するシェルの両方でこれを実行する価値があります。確認する簡単な方法は、コマンド「tty」です。「not tty」が返された場合、シェルには「制御tty」がなく、ファイルシステムに/ dev/ttyが存在していても開くことができません。
さまざまな状況により、制御ttyを使用してシェルが実行されなかった可能性があり、それらのいくつかは目に見える警告を提供しません。たとえば、最近Emacs ShellウィンドウでHigh Sierraに問題が発生しました( Mac OS High Sierraではptyを開けません )-High Sierraは、以前のMac OS Xリリースとは異なるメカニズムを使用してptyを割り当てます、そのため、コードを再構成しないと、ptyの割り当てに失敗します。