「!!」に相当する BSD はありますか?

「!!」に相当する BSD はありますか?

適切な昇格された権限がないコマンドを発行してしまうことがよくあります。

Ubuntuでは

sudo !!

これにより、sudo 権限で同じコマンドが発行されます。OpenBSD に同等のものはありますか?

編集: OpenBSD のバージョンをもっと具体的にすべきでした。私は OpenBSD 4.8 を使用していますが、sudo はデフォルトでインストールされているようです。root 以外のユーザーを既に作成し、そのユーザーが sudo を使用できるように sudoers ファイルを編集しました。

私の質問は、前のコマンドを使用するための「!!」の組み込みショートカットがすでにあるかどうかです。

答え1

sudoUbuntu や OpenBSD より少なくとも 10 年前に開発が開始された独立したソフトウェア パッケージです。

これをシステムに導入するにはOpenBSDのpkg_addを使用することをお勧めしますが、OpenBSDのFAQには新しいパッケージをインストールするには を使用する例があるのでsudo、すでにインストールされているはずです。

!!は単独で(つまり なしで)動作しますかsudo?動作しない場合は、Ubuntu で使用するシェルとは異なるシェルを使用するように設定されている可能性があります。

答え2

他の回答と明確にしておくと、!!これはシェルの履歴メカニズムの一部です。問題は sudo ではなく、シェル、より具体的には root のときのシェルにあると思います。

私が BSD を触ったのは随分前のことですが、BSD はより「伝統的な」UNIX である傾向があり、つまり、ルートのシェルとして本物の Bourne シェル (つまり、bash ほど機能的ではない) をまだ使用しています。この場合の「本物の」Bourne シェルとは、履歴メカニズムがないことを意味します。これは、システム回復のためです。(*)

exec /bin/bashルートにログインすると、履歴付きのシェルを実行できますexec /bin/tcsh

昔のトリックは、通常「toor」と呼ばれる、tcshまたはbashログインシェル、同じホームディレクトリ、およびuid 0を持つroot同等のアカウントを持つことでした。rootにsudoするのではなく、 を実行してsudo toorからbashに入ります。新しいホットなものが何なのかはわかりませんが、おそらく

(*) 理由は、ルートのシェルが /sbin/sh であり、静的にリンクされているからです。つまり、依存関係が最小限であるということです。シェルが /bin/bash であり、/usr にライブラリ依存関係があり、/usr がマウントされている場合、シェルはありません。シェルが /sbin/sh である場合、少なくとも /sbin がマウント可能であれば、何らかの作業を行うことができます。

答え3

このサイトはあなたにとって役立つはずです:http://linux-bsd-sharing.blogspot.com/2009/03/howto-using-sudo-on-freebsd.html

また、BSD では、管理タスクは通常、ルート ユーザー アカウントから直接処理されます。Ubuntu では、ルート管理者アカウントは無効になっており、すべての管理タスクはユーザー アカウントを通じて実行され、sudo プログラムによって正常に検証されます。

BSD をインストールしたときに、root パスワードを何にするか尋ねられたはずです。指定したパスワードを使用して root にログインできるはずです。Gnome (またはデスクトップとして使用しているもの) でローカル root ログインが無効になっている場合は、ターミナルでコマンド「su -」を使用して root としてログインすると、root パスワードを尋ねられます。root としてログインすると、そのアカウントにはすべての権限があるため、何でも実行できます。

セキュリティ上の理由から、一般的には root としてログインしてすべてをその方法で実行することは推奨されません。root として実行するプログラムには root 権限があります。つまり、ハード ドライブ上のすべてのものを削除するように設計されたプログラムを実行すると、そのプログラムにはその権限が与えられます。そのため、root にログインするときは常に注意し、ログインして必要な操作を行う必要があります。完了したら、安全のためにユーザー アカウントに戻ってください。

答え4

OpenBSD には独自の実装が基本システムに組み込まれているため、ユーザーがファイル内にある場合/etc/sudoers、問題はおそらくシェルがデフォルトの Bourne でありsh、Ubuntu で慣れているのと同じ機能が提供されていないことにあると考えられます。

pkg_add -r bashコマンドを使用して bash をインストールし、 で設定できると思いますchsh -s /usr/local/bin/bash (これが正しいパスだと思います。私は FreeBSD に詳しいのですが、ポート/パッケージ システムは両方で似ていると思います)。

関連情報