include("site.inc"); $template = new Page; $template->initCommon(); $template->displayHeader(); ?>
Some applications, such as Log Viewer and other
applications in the Configuration Tools Project need root privileges to
run. To prompt the user for the root password, configure the correct PAM
files to use consolehelper
. This example uses the
program redhat-logviewer
as an example. Replace it with
the name of your program.
At a shell prompt, change to the /usr/bin/
directory, and make a symbolic link from the name of the application
to /usr/bin/consolehelper
. For example:
ln -s consolehelper redhat-logviewer
As root, create the file
/etc/security/console.apps/
,
such as
app-name
/etc/security/console.apps/
,
with the following lines:redhat-logviewer
USER=root
PROGRAM=/usr/share/redhat-logviewer/redhat-logviewer.py
SESSION=true
Create the PAM configuration file
/etc/pam.d/redhat-logviewer
with the following
lines:
#%PAM-1.0
auth sufficient /lib/security/pam_rootok.so
auth sufficient /lib/security/pam_timestamp.so
auth required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_permit.so
session optional /lib/security/pam_xauth.so
session optional /lib/security/pam_timestamp.so
account required /lib/security/pam_permit.so
When a user executes the command redhat-logviewer
, it
calls consolehelper
, which in turn calls
userhelper
to authenticate the user with PAM. If the
user enters the correct root password, the user is authenticated, and
authentication is remember for the user on the same tty for five minutes.
When using Make to install the package and when configuring the files to
build the RPM package, to make sure these files are installed in the
correct location, create the
/etc/security/console.apps/redhat-logviewer
file as
redhat-logviewer.console
and the
/etc/pam.d/redhat-logviewer
file as
redhat-logviewer.pam
. In the
Makefile
, add the following variables declarations:
PAMD_DIR = /etc/pam.d
SECURITY_DIR = /etc/security/console.apps
PKGNAME = redhat-logviewer
In the install
section of the
Makefile
, add the following lines:
install ${PKGNAME}.pam $(INSTROOT)$(PAMD_DIR)/${PKGNAME}
install ${PKGNAME}.console $(INSTROOT)$(SECURITY_DIR)/${PKGNAME}
Finally, in the redhat-logviewer.spec
file, add the
following lines under the %files
section
so that the files are installed with the RPM and are in the file list for
the package:
%attr(0644,root,root) %config(noreplace) /etc/security/console.apps/%{name}
%attr(0644,root,root) %config(noreplace) /etc/pam.d/%{name}