Linuxでは、管理者ユーザーのことをスーパーユーザーと呼んでいる。アカウント名がrootであることからルートとも呼ぶ。
スーパーユーザーは、ファイルに設定されている読み取りや書き込みといった許可に関係なく、ファイル操作をすることができる。たとえば、一般ユーザーの所有するファイルのパーミッションが600であっても、スーパーユーザーは何の制限もなくファイルを読み、修正することができる。削除してしまうことも可能だ。そのため、スーパーユーザー権限でコマンドを実行するときは、特に注意深く行わなければならない。もし、カレントディレクトリが/であるのに気づかず、うっかりとrmコマンドをfrオプション付きで実行してしまうと、無条件にすべてのファイルが削除され、悲惨な状況に陥ってしまう。
スーパーユーザー権限で作業をするのに、再度ログインをする必要はない。コマンドラインから、
USER$ su
と実行し、rootのパスワードを入力するだけだ。これだけでスーパーユーザーになる。逆に、一般ユーザーレベルに戻るには、
root# exit
とする。なお、環境変数などもrootとしてログインした場合と同じにする場合は、“su -”を実行する。
suコマンドを使うとスーパーユーザーになるだけでなく、任意のユーザーにもなることができる。たとえば、PostgreSQLではデータベース管理者用に特別なアカウントpostgresを設けている。そのユーザーになるにも、
USER$ su postgres
として、パスワードを入れる。パスワードが正しければ、PostgreSQLのデータベース管理者となることができる。
そこで、パスワードを知らないはずのユーザーが、rootや他のユーザーになっていないかを時おり、確認しなければならない。
誰がsuコマンドを実行して、どのアカウントになろうとしたのかは、/var/log/messagesファイルに記録されている。このファイルは、通常のテキスト形式なため、lessで表示したり、grepで必要な部分だけを抽出することができる。suコマンドの部分だけなら、
root# grep '(su)' /var/log/messages
とすればよい。クオーテーション(')で囲っているのは、かっこがシェルの特殊文字であるためだ。なお、messagesファイルは他にも多くの記録が残されているため、rootユーザー以外は読めないようにしておこう。