*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> chatr_pa (1)              
Title
Content
Arch
Section
 

Contents


 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



 NAME    [Toc]    [Back]
      chatr_pa: chatr - change program's internal attributes

 SYNOPSIS    [Toc]    [Back]
    PA-RISC 32-bit SOM chatr
      chatr [-nqsMN [z|Z]] [-l library] [-B mode] [+b flag] [+dbg flag] [+es
           flag] [+mergeseg flag] [+gst flag]
           [+gstbuckets size] [+gstsize size] [+k flag] [+l library]
           [+pd size] [+pi size] [+plabel_cache flag] [+q3p flag] [+q4p flag]
           [+r flag] [+s flag] [+z flag] file ...

    PA-RISC 64-bit ELF chatr    [Toc]    [Back]
      There are two possible syntactic forms that can be used to invoke PARISC
 64-bit chatr.

      FORMAT 1: The first syntactic form, which is compatible with the SOM
      chatr, is used for backward compatibility, and for easy manipulation of
      ordinary files that only have a single text and a single data segment:

      chatr [-nqszZ] [-l library] [-B mode] [+b flag] [+cd flag] [+ci flag]
           [+es flag] [+gst flag] [+gstsize size] [+k flag] [+l library]
           [+md flag] [+mi flag] [+pd size] [+pi size] [+s flag] [+z flag]
           file ...

      FORMAT 2: The second syntactic form provides the ability to explicitly
      specify segments to be modified:

      chatr [-s] [-B mode] [+c flag] [+dz flag] [+k flag] [+m flag] [+p size]
           [+r flag] [+s flag] [+si index | +sa address | +sall ] [+z flag]
           file ...

 DESCRIPTION    [Toc]    [Back]
      chatr allows you to change a program's internal attributes for 32-bit
      mode SOM and 64-bit mode ELF files.

      Upon completion, chatr prints the file's old and new values to
      standard output unless -s is specified.

      The +pd and +pi options only provide a hint for the virtual memory
      page size.  The actual page sizes may vary.  Under certain conditions,
      page size hints of L may result in better performance, depending on
      the specific memory requirements of the application.

      The performance of some applications may benefit from static branch
      prediction, others may not.  The +r option provides a hint for using
      or avoiding this feature.

      The +gst and related options provide performance enhancements through
      use of global symbol table which improves searching for exported
      symbols.  See dld.sl(5) and the HP-UX Linker and Libraries Online User
      Guide for more information.



 Hewlett-Packard Company            - 1 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



    COMMON OPTIONS FOR PA-RISC 32-bit SOM AND PA-RISC 64-bit ELF (FORMAT 1)    [Toc]    [Back]
      chatr
      chatr, by default, prints each file's magic number and file attributes
      to the standard output.

      -l library     Indicate that the specified shared library is subject
                     to run-time path lookup if directory path lists are
                     provided (see +s and +b).

      -n             Change file from demand-loaded (DEMAND_MAGIC) to shared
                     (SHARE_MAGIC) (Ignored in PA-RISC 64-bit FORMAT 1.)

      -q             Change file from shared (SHARE_MAGIC) to demand-loaded
                     (DEMAND_MAGIC).  (Ignored in PA-RISC 64-bit FORMAT 1.)

      -s             Perform its operation silently.  (Available with the
                     PA-RISC 64-bit FORMAT 2 command.)

      -B mode        Select run-time binding behavior mode of a program
                     using shared libraries.  You must specify one of the
                     major binding modes immediate or deferred.  One or more
                     of the binding modifiers nonfatal, verbose, or
                     restricted can also be specified, each with a separate
                     option.  See the HP-UX Linker and Libraries User's
                     Guide manual for a description of binding modes.
                     (Available with the PA-RISC 64-bit FORMAT 2 command.)

      +b flag        Control whether the embedded path list stored when the
                     program (if any) was built can be used to locate shared
                     libraries needed by the program.  The two flag values,
                     enable and disable, respectively enable and disable use
                     of the embedded path list.  However, you cannot use
                     disable on an ELF (PA-RISC 64-bit) file and a warning
                     message is issued.  See the +s option.  You can use the
                     +b option to enable the embedded path for filter
                     libraries.

      +dbg flag      Controls the mapping of shared library text segments
                     privately.  The flag values, enable and disable, toggle
                     the request on and off.  When enabled, this allows for
                     mapping the text segments of shared libraries in a
                     private, writtable region.  When used with +mergeseg
                     enable, this allows for text segments of shared
                     libraries to be merged.

      +es flag       Control the ability of user code to execute from stack
                     with the flag values, enable and disable.  See the
                     Restricting Execute Permission on Stacks section below
                     for additional information related to security issues.





 Hewlett-Packard Company            - 2 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      +gst flag      Control whether the global symbol table hash mechanism
                     is used to look up values of symbol import/export
                     entries.  The two flag values, enable and disable,
                     respectively enable and disable use of the global
                     symbol table hash mechanism.  The default is disable.

      +gstsize size  Request a particular hash array size using the global
                     symbol table hash mechanism.  The value can vary
                     between 1 and MAXINT.  The default value is 1103.  Use
                     this option with +gst enable.

      +k flag        Request kernel assisted branch prediction.  The flags
                     enable and disable turn this request on and off,
                     respectively.  (Available with the PA-RISC 64-bit
                     FORMAT 2 command.)

      +l library     Indicate that the specified shared library is not
                     subject to run-time path lookup if directory path lists
                     are provided (see +s and +b).

      +mergeseg flag Controls the shared library segment merging feature.
                     The flag values, enable and disable, toggle this
                     request ON and OFF.  See the description of shared
                     library segment merging in the HP-UX Linker and
                     Libraries User's Guide.  When enabled, all the data
                     segments of the shared libraries loaded at program
                     startup are merged.  This increases run-time
                     performance by allowing the kernel to use larger size
                     page table entries.

      +pd size       Request a particular virtual memory page size that
                     should be used for data.  Sizes of 4K, 16K, 64K, 256K,
                     1M, 4M, 16M, 64M, 256M, and L are supported.  A size of
                     L will result in using the largest page size available.
                     The actual page size may vary if the requested size
                     cannot be fulfilled.

      +pi size       Request a particular virtual memory page size that
                     should be used for instructions.  See the +pd option
                     for additional information.

      +r flag        Request static branch prediction when executing this
                     program.  The flags enable and disable turn this
                     request on and off, respectively.  (Available with the
                     PA-RISC 64-bit FORMAT 2 command.)

      +s flag        Control whether the directory path list specified with
                     the SHLIB_PATH environment variable can be used to
                     locate shared libraries needed by the program.  The two
                     flag values, enable and disable, respectively enable
                     and disable use of the environment variable.  If both



 Hewlett-Packard Company            - 3 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



                     +s and +b are used, their relative order on the command
                     line indicates which path list will be searched first.
                     See the +b option.  (Available with the PA-RISC 64-bit
                     FORMAT 2 command.)

      +z             Enable lazy swap on all data segments (using PA-RISC
                     32-bit chatr or PA-RISC 64-bit chatr FORMAT 1) or on a
                     specific segment (using PA-RISC 64-bit ELF chatr FORMAT
                     2).  May not be used with non-data segments.

      -z,-Z          Enable run-time dereferencing of null pointers to
                     produce a SIGSEGV signal.  (This is the complement of
                     the -Z option.)

    OPTIONS FOR PA-RISC 32-bit SOM chatr ONLY    [Toc]    [Back]
      -M             Change file from EXEC_MAGIC to SHMEM_MAGIC.  (This
                     option is an interim solution until 64-bit
                     addressability is available with a true 64-bit kernel.
                     See "chatr and Magic Numbers" and "Using SHMEM_MAGIC"
                     below.)

      -N             Change file from SHMEM_MAGIC to EXEC_MAGIC.  (This
                     option is an interim solution until 64-bit
                     addressability is available with a true 64-bit kernel.
                     See "chatr and Magic Numbers" and Notes below.)

      +gstbuckets size
                     Request a particular number of buckets per entry using
                     the global symbol table hash mechanism.  The value can
                     vary between 1 and MAXINT.  The default value is 3.
                     Use this option with +gst enable.

      +plabel_cache flag
                     Control the use of the plabel caching mechanism.  The
                     flags enable and disable turn this request on and off,
                     respectively.  The default is disable.  Use this option
                     with +gst enable.

                     This option is effective with C++.  In C++
                     applications, the dynamic loader needs to repetitively
                     access PLABEL information (import stub).  In order to
                     make this access faster, the dynamic loader uses the
                     global symbol table structure to also contain PLABEL
                     entries.  This behavior is enabled when the
                     PLABEL_CACHE flag is set in the dl_header structure
                     (enabled ld +plabel_cache enable a.out or chatr
                     +plabel_cache enable a.out).

      +q3p flag      Control the flag bit setting to indicate how 32-bit
                     processes use the third quadrant as data space.




 Hewlett-Packard Company            - 4 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



                     The enable flag sets the flag bit to indicate that 32-
                     bit processes use the third quadrant as a private data
                     space.  By setting the bit, the private data space
                     increases from 1.9GB to 2.85GB for 32-bit processes.

                     The disable flag unsets the bit, which returns the
                     third quadrant to the default state, in which it is
                     used for shared memory.

                     This flag mechanism differs from how to set usage for
                     the first and second quadrants.  Set these values by
                     using the magic number of the executable.  (See the -M
                     and -N options.)

      +q4p flag      Control the flag bit setting to indicate how 32-bit
                     processes use the third and fourth quadrant as data
                     space.

                     The enable flag sets the flag bit to indicate that 32-
                     bit processes use the fourth quadrant as a private data
                     space.  By setting the +q4p flag bit, the private data
                     space increases from 1.9GB to 3.8GB for 32-bit
                     processes.  When you set the fourth quadrant for
                     private data space, the third quadrant is automatically
                     set for use as private data space, ignoring the current
                     +q3p value.

                     The disable flag unsets the flag bit, which returns the
                     fourth quadrant to the default state, in which it is
                     used for shared memory.  With +q4p disable, the value
                     of the +q3p flag controls whether the third quadrant is
                     used as a private data space or for shared memory.

                     This flag mechanism differs from how to set usage for
                     the first and second quadrants.  Set these values by
                     using the magic number of the executable.  (See the -M
                     and -N options.)

    OPTIONS FOR PA-RISC 64-bit ELF chatr    [Toc]    [Back]
      PA-RISC 64-bit ELF chatr is similar to SOM chatr but supports new
      options (and obsoletes others).

      New options:

      OPTIONS FOR PA-RISC 64-bit ELF chatr (FORMAT 1)    [Toc]    [Back]

      +cd            Set the code bit for the file's data segment(s).

      +ci            Set the code bit for the file's text segments(s).





 Hewlett-Packard Company            - 5 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      +md            Set the modification bit for the file's data
                     segment(s).

      +mi            Set the modification bit for the file's text
                     segment(s).

      OPTIONS FOR PA-RISC 64-bit ELF chatr (FORMAT 2)    [Toc]    [Back]

      With common options: -s, -B mode, +k flag, +r flag, +s flag, +z flag.

      +c             Set the code bit for a specified segment.

      +dz            Enable or disable lazy swap allocation for dynamically
                     allocated segments (such as the stack or heap).

      +m             Set the modification bit for a specified segment.

      +p             Set the page size for a specified segment.

      +sa            Specify a segment using an address for a set of
                     attribute modifications.

      +sall          Use all segments in the file for a set of attribute
                     modifications.

      +si            Specify a segment using a segment index number for a
                     set of attribute modifications.

    chatr and MAGIC Numbers
      The term shared applies to the magic number SHARE_MAGIC while the term
      demand-loaded applies to the magic number DEMAND_MAGIC.  See magic(4)
      and the HP-UX Linker and Libraries Online User Guide for more
      information.

      chatr labels the following type of executables in output.

           SHARE_MAGIC:        shared executable

           DEMAND_MAGIC:       demand load executable

           EXEC_MAGIC:         normal executable

           SHMEM_MAGIC:        normal SHMEM_MAGIC executable

      The linker produces SHARE_MAGIC executables by default.

    Using SHMEM_MAGIC    [Toc]    [Back]
      SHMEM_MAGIC is an interim solution until 64-bit addressability is
      available with a true 64-bit kernel.





 Hewlett-Packard Company            - 6 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      SHMEM_MAGIC will not be supported on future HP implementations of 64-
      bit architectures (beyond PA-RISC 2.0).  Programs that need larger
      than 1.75 GB of shared memory on those architectures will have to be
      recompiled (as 64-bit executables) for those architectures.

      Programs that are compiled as 64-bit executables on any 64-bit HP
      implementation (including PA-RISC 2.0) cannot be marked as SHMEM_MAGIC
      nor do they need to be as they will already have access to more than
      1.75 GB of shared memory.

      The additional 1 GB of shared memory that is available over other
      types of executables can be availed of only for system V shared memory
      and not other forms of shared memory (like memory mapped files).

    Restricting Execute Permission on Stacks    [Toc]    [Back]
      A frequent or common method of breaking into systems is by maliciously
      overflowing buffers on a program's stack, such as passing unusually
      long, carefully chosen command line arguments to a privileged program
      that does not expect them.  Malicious unprivileged users can use this
      technique to trick a privileged program into starting a superuser
      shell for them, or to perform similar unauthorized actions.

      One simple yet highly effective way to reduce the risk from this type
      of attack is to remove the execute permission from a program's stack
      pages.  This improves system security without sacrificing performance
      and has no negative effects on the vast majority of legitimate
      applications.  The changes described in this section only affect the
      very small number of programs that try to execute (or are tricked into
      executing) instructions located on the program's stack(s).

      If the stack protection feature described in this section is enabled
      for a program and that program attempts to execute code from its
      stack(s), the HP-UX kernel will terminate the program with a SIGKILL
      signal, display a message referring to this manual page section, and
      log an error message to the system message log (use dmesg to view the
      error message).  The message logged by the kernel is:

           WARNING: UID # may have attempted a buffer overflow attack.  PID
           # (program_name) has been terminated.  See the '+es enable'
           option of chatr(1).

      If you see one of these messages, check with the program's owner to
      determine whether this program is legitimately executing code from its
      stack.  If it is, you can use one or both of the methods described
      below to make the program functional again.  If the program is not
      legitimately executing code from its stack, you should suspect
      malicious activity and take appropriate action.

      HP-UX provides two options to permit legitimate execution from a
      program's stack(s).  Combinations of these two options help make
      site-specific tradeoffs between security and compatibility.



 Hewlett-Packard Company            - 7 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      The first method is the use of the +es option of chatr and affects
      individual programs.  It is typically used to specify that a
      particular binary must be able to execute from its stack, regardless
      of the system default setting.  This allows a restrictive system
      default while not preventing legitimate programs from executing code
      on their stack(s).  Ideally this option should be set (if needed) by
      the program's provider, to minimize the need for manual intervention
      by whomever installs the program.

      An alternate method is setting the kernel tunable parameter,
      executable_stack, to set a system-wide default for whether stacks are
      executable.  Setting the executable_stack parameter to 1 (one) with
      sam (see sam(1M)) tells the HP-UX kernel not to execute protect
      program stack(s).  This is the preferred setting if compatibility with
      older releases is more important than security.  Setting it to a 0
      (zero) is appropriate if security is more important than
      compatibility.  This is the recommended setting, because it
      significantly improves system security with minimal, if any, negative
      effects on legitimate applications.

      Combinations of these settings may be appropriate for many
      applications.  For example, after setting executable_stack to 0, you
      may find that one or two critical applications no longer work because
      they have a legitimate need to execute from their stack(s).  Programs
      such as simulators or interpreters that use self-modifying code are
      examples you might encounter.  To obtain the security benefits of a
      restrictive system default while still letting these specific
      applications run correctly, set executable_stack to 0, and run chatr
      +es enable on the specific binaries that need to execute code from
      their stack(s).  These binaries can be easily identified when they are
      executed, because they will print error messages referring to this
      manual page.

      The possible settings for executable_stack are as follows:

           executable_stack = 0 (default)
                A setting of 0 (the default value) causes stacks to be nonexecutable
 and is strongly preferred from a security
                perspective.

           executable_stack = 1
                A setting of 1 causes all program stacks to be executable,
                and is safest from a compatibility perspective but is the
                least secure setting for this parameter.

           executable_stack = 2
                A setting of 2 is equivalent to a setting of 0, except that
                it gives non-fatal warnings instead of terminating a process
                that is trying to execute from its stack.  Using this
                setting is helpful for users to gain confidence that using a
                value of 0 will not hurt their legitimate applications.



 Hewlett-Packard Company            - 8 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



                Again, there is less security protection.

      The table below summarizes the results from using the possible
      combinations of chatr +es and executable_stack when executing from the
      program's stack.  Running chatr +es disable relies solely on the
      setting of the executable_stack kernel tunable parameter when deciding
      whether or not to grant execute permission for stacks and is
      equivalent to not having run chatr +es on the binary.

      _________________________________________________________________________
      |chatr +es                   | executable_stack | ACTION                 |
      |____________________________|__________________|________________________|
      |enable                      | 1                | program runs normally  |
      |disable or chatr is not run | 1                | program runs normally  |
      |____________________________|__________________|________________________|
      |enable                      | 0                | program runs normally  |
      |disable or chatr is not run | 0                | program is killed      |
      |____________________________|__________________|________________________|
      |enable                      | 2                | program runs normally  |
      |disable or chatr is not run | 2                | program runs normally  |
      |                            |                  | with warning displayed |
      |____________________________|__________________|________________________|

 RETURN VALUE    [Toc]    [Back]
      chatr returns zero on success.  If the command line contents is
      syntactically incorrect, or one or more of the specified files cannot
      be acted upon, chatr returns information about the files whose
      attributes could not be modified.  If no files are specified, chatr
      returns decimal 255.

    Illegal options    [Toc]    [Back]
      For PA-RISC 32-bit chatr, if you use an illegal option, chatr returns
      the number of words in the command line.  For example,

           chatr +b enable +xyz enable returns  5 (because of illegal option
           +xyz).

           chatr +b enable +xyz enable +mno file1  file2 returns 8.

      For PA-RISC 64-bit chatr, if you use an illegal option, chatr returns
      the number of non-option words present after the first illegal option.

           chatr +b enable +xyz enable +mno enable +pqr enable file returns
           4.

    Invalid arguments    [Toc]    [Back]
      If you use an invalid argument with a valid option and you do not
      specify a file name, both PA-RISC 32-bit and 64-bit chatr return 0.

           chatr +b <no argument> returns 0.




 Hewlett-Packard Company            - 9 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      For PA-RISC 32-bit chatr, if you specify a file name (regardless of
      whether or not the file exists), chatr returns number of words in the
      command line.

           chatr +b  <no argument> file returns 4.

      For PA-RISC 64-bit chatr, if you specify a file name (regardless of
      whether or not the file exists), chatr returns the number of files
      specified.

           chatr +b <no argument> file1 file2 file3 returns 3.

    Invalid files    [Toc]    [Back]
      For both PA-RISC 32-bit and 64-bit chatr, if the command cannot act on
      any of the files given, it returns the total number of files specified
      (if some option is specified).  Otherwise it returns the number of
      files upon which it could not act.

           chatr +b enable a1 a2 a3 a4 (where a2 does not have read/write
           permission) returns 4.

           chatr a1 a2 a3 a4 returns 1.

 EXTERNAL INFLUENCES    [Toc]    [Back]
    Environment Variables
      The following internationalization variables affect the execution of
      chatr:

      LANG              Determines the locale category for native language,
                        local customs and coded character set in the absence
                        of LC_ALL and other LC_* environment variables.  If
                        LANG is not specified or is set to the empty string,
                        a default of C (see lang(5)) is used instead of
                        LANG.

      LC_ALL            Determines the values for all locale categories and
                        has precedence over LANG and other LC_* environment
                        variables.

      LC_CTYPE          Determines the locale category for character
                        handling functions.

      LC_MESSAGES       Determines the locale that should be used to affect
                        the format and contents of diagnostic messages
                        written to standard error.

      LC_NUMERIC        Determines the locale category for numeric
                        formatting.

      NLSPATH           Determines the location of message catalogues for
                        the processing of LC_MESSAGES.



 Hewlett-Packard Company           - 10 -      HP-UX 11i Version 2: Sep 2004






 chatr_pa(1)                                                     chatr_pa(1)
                             For PA-RISC Systems



      If any internationalization variable contains an invalid setting,
      chatr behaves as if all internationalization variables are set to C.
      See environ(5).

      In addition, the following environment variable affects chatr:

      TMPDIR            Specifies a directory for temporary files (see
                        tmpnam(3S)).

 EXAMPLES    [Toc]    [Back]
      Change a.out to demand-loaded

           chatr -q a.out

      Change binding mode of program file that uses shared libraries to
      immediate and nonfatal.  Also enable usage of SHLIB_PATH environment
      variable:

           chatr -B immediate -B nonfatal +s enable a.out

      Disallow run-time path lookup for the shared library /usr/lib/libc.sl
      that the shared library libfoo.sl depends on:

           chatr +l /usr/lib/libc.sl libfoo.sl

      Given segment index number 5 from a previous run of chatr, change the
      page size to 4 kilobytes:

           chatr +si 5 +p 4K average64

 AUTHOR    [Toc]    [Back]
      chatr was developed by HP.

 SEE ALSO    [Toc]    [Back]
    System Tools:
      ld(1)             invoke the link editor

    Miscellaneous:
      a.out(4)            assembler, compiler, and linker output
      magic(4)            magic number for HP-UX implementations
      sam(1M)             system administration manager
      executable_stack(5) controls whether program stacks are executable by
                          default

    Texts and Tutorials:
      HP-UX Linker and Libraries Online User Guide
                        (See the +help option)
      HP-UX Linker and Libraries User's Guide
                        (See manuals(5) for ordering information)


 Hewlett-Packard Company           - 11 -      HP-UX 11i Version 2: Sep 2004
[ Back ]
      
      
 Similar pages
Name OS Title
rcs IRIX change RCS file attributes
rcs OpenBSD change RCS file attributes
rcs Tru64 change RCS file attributes
doschmod HP-UX change attributes of a DOS file
rcs HP-UX change RCS file attributes
rcs FreeBSD change RCS file attributes
passwd HP-UX change login password and associated attributes
configwind IRIX change window configuration or attributes
dxchpwd Tru64 Create or change password program
pthread_condattr_setpshared Tru64 Change the process-shared attribute of a condition variable attributes object
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service