System Administration Guide: Security Services

Monitoring and Restricting Superuser

An alternative to using the superuser account is to set up role-based access control. Role-based access control is called RBAC. For overview information on RBAC, see Role-Based Access Control (Overview). To set up RBAC, see Chapter 9, Using Role-Based Access Control (Tasks).

ProcedureHow to Monitor Who Is Using the su Command

The sulog file lists every use of the su command, not only the su attempts that are used to switch from user to superuser.

  1. Monitor the contents of the /var/adm/sulog file on a regular basis.

    # more /var/adm/sulog
    SU 12/20 16:26 + pts/0 stacey-root
    SU 12/21 10:59 + pts/0 stacey-root
    SU 01/12 11:11 + pts/0 root-rimmer
    SU 01/12 14:56 + pts/0 pmorph-root
    SU 01/12 14:57 + pts/0 pmorph-root

    The entries display the following information:

    • The date and time that the command was entered.

    • If the attempt was successful. A plus sign (+) indicates a successful attempt. A minus sign (-) indicates an unsuccessful attempt.

    • The port from which the command was issued.

    • The name of the user and the name of the switched identity.

    The su logging in this file is enabled by default through the following entry in the /etc/default/su file:


Entries that include ??? indicate that the controlling terminal for the su command cannot be identified. Typically, system invocations of the su command before the desktop appears include ???, as in SU 10/10 08:08 + ??? root-root. After the user starts a desktop session, the ttynam command returns the value of the controlling terminal to the sulog: SU 10/10 10:10 + pts/3 jdoe-root.

Entries similar to the following can indicate that the su command was not invoked on the command line: SU 10/10 10:20 + ??? root-oracle. The user might have switched to the oracle role by using a GUI.

ProcedureHow to Restrict and Monitor Superuser Logins

This method immediately detects superuser attempts to access the local system.

  1. View the CONSOLE entry in the /etc/default/login file.


    By default, the console device is set to /dev/console. With this setting, root can log in to the console. root cannot log in remotely.

  2. Verify that root cannot log in remotely.

    From a remote system, try to log in as superuser.

    mach2 % rlogin -l root mach1
    Password: <Type root password of mach1>
    Not on system console
    Connection closed.
  3. Monitor attempts to become superuser.

    By default, attempts to become superuser are printed to the console by the SYSLOG utility.

    1. Open a terminal console on your desktop.

    2. In another window, use the su command to become superuser.

      % su -
      Password: <Type root password>

      A message is printed on the terminal console.

      Sep 7 13:22:57 mach1 su: 'su root' succeeded for jdoe on /dev/pts/6

Example 3–7 Logging Superuser Access Attempts

In this example, superuser attempts are not being logged by SYSLOG. Therefore, the administrator is logging those attempts by removing the comment from the #CONSOLE=/dev/console entry in the /etc/default/su file.

# CONSOLE determines whether attempts to su to root should be logged
# to the named device

When a user attempts to become superuser, the attempt is printed on the terminal console.

SU 09/07 16:38 + pts/8 jdoe-root


To become superuser from a remote system when the /etc/default/login file contains the default CONSOLE entry, users must first log in with their user name. After logging in with their user name, users then can use the su command to become superuser.

If the console displays an entry similar to Mar 16 16:20:36 mach1 login: ROOT LOGIN /dev/pts/14 FROM mach2.Example.COM, then the system is permitting remote root logins. To prevent remote superuser access, change the #CONSOLE=/dev/console entry to CONSOLE=/dev/console in the /etc/default/login file.