bpx1pg00
bpx1pg00
bpx1pg00
GA32-0884-00
Note
Before using this information and the product it supports, read the information in “Notices” on page 449.
This edition applies to Version 2 Release 1 of z/OS (5650-ZOS) and to all subsequent releases and modifications
until otherwise indicated in new editions.
© Copyright IBM Corporation 1996, 2013.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract
with IBM Corp.
Contents
Figures . . . . . . . . . . . . . . . xi Checking the mode of the kernel in a running
system . . . . . . . . . . . . . . . . 16
Tables . . . . . . . . . . . . . . . xiii Evaluating virtual memory needs . . . . . . . 17
Using extended common service area (ECSA) . . 17
Using extended system queue area (ESQA) . . . 17
About this document . . . . . . . . xv Prioritizing kernel work on your system. . . . . 19
Using this document . . . . . . . . . . . xv Defining service classes for kernel work . . . . 20
z/OS information . . . . . . . . . . . . xv Defining classification rules as needed . . . . 21
IBM Systems Center publications . . . . . . xvi Defining the BPXPRMxx members in IEASYSxx . . 22
Porting information for z/OS UNIX . . . . . xvi Customizing the BPXPRMxx member of
z/OS UNIX courses . . . . . . . . . . xvi SYS1.PARMLIB . . . . . . . . . . . . . 23
z/OS UNIX home page . . . . . . . . . xvi Checking the BPXPRMxx syntax . . . . . . 23
Discussion list . . . . . . . . . . . . xvi Defining file systems . . . . . . . . . . 26
Defining system limits . . . . . . . . . . 29
How to send your comments to IBM xix Defining system features . . . . . . . . . 36
If you have a technical problem . . . . . . . xix Customizing other members of SYS1.PARMLIB . . 41
ALLOCxx . . . . . . . . . . . . . . 41
z/OS Version 2 Release 1 summary of COFVLFxx . . . . . . . . . . . . . 41
changes . . . . . . . . . . . . . . xxi CTnBPXxx. . . . . . . . . . . . . . 42
IEADMR00 . . . . . . . . . . . . . 43
IKJTSOxx . . . . . . . . . . . . . . 43
Chapter 1. Introduction to z/OS UNIX . . 1 SMFPRMxx . . . . . . . . . . . . . 43
The API interface . . . . . . . . . . . . . 1 Customizing /etc . . . . . . . . . . . . 44
The interactive shell interface . . . . . . . . . 2 Initializing the kernel using a cataloged procedure 45
Interacting with elements and features of z/OS . . . 2 Running a physical file system in a colony address
Workload Manager (WLM) . . . . . . . . 3 space . . . . . . . . . . . . . . . . 45
System Management Facilities (SMF) . . . . . 4 Starting colony address spaces . . . . . . . 45
XL C/C++ compiler . . . . . . . . . . . 4 Starting colony address spaces outside of JES . . 46
Language Environment . . . . . . . . . . 4 Running a temporary file system in a colony
DFSMS . . . . . . . . . . . . . . . 5 address space. . . . . . . . . . . . . . 47
Security Server (RACF) . . . . . . . . . . 5 Steps for creating a cataloged procedure for a
Resource Measurement Facility (RMF) . . . . . 5 temporary file system . . . . . . . . . . 47
System Display and Search Facility (SDSF) . . . 5 Enabling certain TSO/E commands to z/OS UNIX
Time Sharing Options Extensions (TSO/E) . . . 5 users . . . . . . . . . . . . . . . . 48
Communications Server . . . . . . . . . 6 Globalization on z/OS systems . . . . . . . . 50
Interactive System Productivity Facility (ISPF) . . 6 Checking for setup errors. . . . . . . . . . 51
Network File System (NFS) . . . . . . . . 6
z/OS File System (zFS) . . . . . . . . . . 6
Chapter 4. Establishing UNIX security 53
Hardware considerations for z/OS UNIX . . . . . 6
List of subtasks . . . . . . . . . . . . . 53
Requirements for accessing kernel services using
Preparing RACF . . . . . . . . . . . . . 54
TSO/E . . . . . . . . . . . . . . . . 6
Steps for preparing RACF . . . . . . . . 54
Tasks that z/OS UNIX application programmers do 9
Using RACF with z/OS UNIX . . . . . . . . 58
Administrative tasks using the ISPF shell . . . . 10
RACF performance considerations . . . . . . 58
Setting up users and groups . . . . . . . . 58
Chapter 2. Installing z/OS UNIX . . . . 11 Activating supplemental groups . . . . . . 59
Methods of installing z/OS UNIX . . . . . . . 11 Defining z/OS UNIX users to RACF . . . . . . 59
Installing z/OS UNIX for ServerPac customers . 11 Steps for defining z/OS UNIX users to RACF . . 60
Installing z/OS UNIX for CBPDO customers . . 11 Storing user-specific information in OMVS segments 62
Establishing an /etc file system for a new release. . 12 Automatically generating UIDs and GIDs . . . 62
Security implications . . . . . . . . . . . 63
Chapter 3. Customizing z/OS UNIX . . . 15 Checking user and group authority . . . . . . 64
Setting up kernel services in minimum mode . . . 15 Obtaining security information about groups . . . 65
Setting up kernel services in full function mode . . 15 Steps for obtaining security information about a
Setting up for full function mode . . . . . . 15 group . . . . . . . . . . . . . . . 65
Obtaining security information about users . . . . 65
Contents v
Customizing $HOME/.profile . . . . . . . 225 Contacting the remote site . . . . . . . . 276
Customizing /etc/init.options . . . . . . . 227 Calling system login . . . . . . . . . . 276
Customizing /etc/rc . . . . . . . . . . 229 Maintaining UUCP . . . . . . . . . . . 276
Customizing /etc/inittab . . . . . . . . 232 Cleaning up UUCP files . . . . . . . . . 276
Customizing files for the tcsh shell . . . . . . 235 Displaying information about recorded UUCP
Customizing /etc/csh.login . . . . . . . 235 events . . . . . . . . . . . . . . . 278
Customizing $HOME/.login . . . . . . . 236 Notifying remote systems about password
Customizing /etc/csh.cshrc . . . . . . . 236 changes . . . . . . . . . . . . . . 278
Customizing /etc/complete.tcsh . . . . . . 237
Copying configuration files . . . . . . . . . 237 Chapter 11. Converting files between
Enabling the man pages . . . . . . . . . . 238 code pages . . . . . . . . . . . . 279
Setting up for mesg, talk, write, and UUCP . . . 239
List of subtasks. . . . . . . . . . . . . 279
Customizing c89, cc, and c++ (cxx) compilers. . . 239
Using Enhanced ASCII . . . . . . . . . . 279
Using non-default high-level qualifiers . . . . 240
Setting up Enhanced ASCII. . . . . . . . 280
Using a system that does not have
Using Unicode Services in a z/OS UNIX
UNIT=SYSDA . . . . . . . . . . . . 240
environment. . . . . . . . . . . . . . 282
Selecting z/OS XL C/C++ compilers . . . . 240
Considerations beyond that of Enhanced ASCII 282
Targeting a z/OS release earlier than the current
Steps for setting up Unicode Services . . . . 282
one . . . . . . . . . . . . . . . . 242
Customizing the terminfo database . . . . . . 243
Steps for defining terminals or workstations for Chapter 12. Managing operations . . . 285
a terminfo database . . . . . . . . . . 243 List of subtasks. . . . . . . . . . . . . 285
Re-creating the terminfo database . . . . . 244 Steps for ending a specified process . . . . . . 285
Customizing electronic mail . . . . . . . . 244 Ending threads . . . . . . . . . . . . . 287
For the z/OS shell. . . . . . . . . . . 244 Planned shutdowns using F
For the tcsh shell . . . . . . . . . . . 244 BPXOINIT,SHUTDOWN=... . . . . . . . . 287
Steps for shutting down z/OS UNIX using F
BPXOINIT,SHUTDOWN=... . . . . . . . 288
Chapter 9. Customizing for your
Partial shutdowns for JES2 maintenance . . . 290
national code page in the shell . . . . 247 Planned shutdowns using F OMVS,SHUTDOWN 291
Lists of subtasks . . . . . . . . . . . . 247 What F OMVS,SHUTDOWN does . . . . . 292
Steps for setting up your national code page . . . 247 Successful shutdowns . . . . . . . . . 292
Customizing for Japanese and Simplified Chinese 250 Steps for shutting down z/OS UNIX using F
Steps for customizing the login file for the z/OS OMVS,SHUTDOWN . . . . . . . . . . 293
shell . . . . . . . . . . . . . . . 250 Dynamically activating the z/OS UNIX component
Steps for customizing the login file for the tcsh service items . . . . . . . . . . . . . 294
shell . . . . . . . . . . . . . . . 250 Identifying service items to be activated . . . 295
Steps for displaying messages in Japanese . . . 251 Activating service items . . . . . . . . . 295
Steps for activating MVS Message Service Deactivating service items . . . . . . . . 296
(MMS). . . . . . . . . . . . . . . 251 Displaying activated service items . . . . . 296
Concatenating target libraries to ISPF . . . . 252 Dynamically changing the BPXPRMxx parameter
PROFILE PLANGUAGE and the OMVS command 252 values . . . . . . . . . . . . . . . . 297
Dynamically changing certain BPXPRMxx
Chapter 10. Configuring the parameter values . . . . . . . . . . . 298
UNIX-to-UNIX copy program (UUCP) . 255 Dynamically switching to different BPXPRMxx
Transferring files . . . . . . . . . . . . 255 members . . . . . . . . . . . . . . . 300
Executing commands from a remote location . . . 255 Dynamically adding FILESYSTYPE statements in
Tailoring UUCP for custom applications . . . . 256 BPXPRMxx . . . . . . . . . . . . . . 300
UUCP commands and daemons . . . . . . . 256 Steps for activating the HFS file system for the
UUCP directories and files . . . . . . . . . 256 first time . . . . . . . . . . . . . . 300
The UUCP communications network . . . . 257 Activating a single sockets file system for the
Configuring your local system. . . . . . . . 260 first time . . . . . . . . . . . . . . 301
Configuring communication with remote systems 262 Activating a multiple sockets file system for the
Obtain information about remote systems . . . 262 first time with Common INET (CINET). . . . 302
Create or edit UUCP configuration files . . . 263 Specifying the maximum number of sockets . . 302
Compile the configuration files . . . . . . 272 Adding another sockets file system to an
Create working directories for the local and existing Common INET (CINET) configuration . 303
remote systems . . . . . . . . . . . . 273 Tracing events . . . . . . . . . . . . . 304
Schedule periodic UUCP transfers with cron 273 Tracing events in z/OS UNIX . . . . . . . 304
Testing the connection . . . . . . . . . . 275 Tracing DFSMS events . . . . . . . . . 305
Checking the configuration for connections . . . 276 Re-creating problems for IBM service . . . . 305
Contents vii
Chapter 16. Preparing security for What happens if an identity change does not
servers . . . . . . . . . . . . . . 365 take place when a child is created? . . . . . 395
List of subtasks. . . . . . . . . . . . . 365 What happens if an identity change does not
Designing security for servers . . . . . . . . 365 take place when a new process image is created
Setting up threads and security . . . . . . 366 by exec()? . . . . . . . . . . . . . 395
Checking authority to use protected resources 367 Specifying a new identity . . . . . . . . 395
Limitations of RACF client ACEE support . . . 367 Setting process limits in z/OS UNIX . . . . 395
Documenting the security requirements . . . 368 Steps for setting process limits in z/OS UNIX 397
Establishing the correct level of security for servers 368 Using the IEFUSI installation exit to set process
UNIX level: BPX.SERVER is not defined . . . 368 limits . . . . . . . . . . . . . . . 398
z/OS UNIX level: BPX.SERVER is defined. . . 368 Displaying process limits . . . . . . . . 399
RACF with enhanced program security, Changing process limits . . . . . . . . . 400
BPX.SERVER, and BPX.MAINCHECK . . . . 369 Steps for changing the process limits for an
BPX.SERVER . . . . . . . . . . . . 369 active process . . . . . . . . . . . . 400
Defining servers to use thread-level security . . . 369 Reference information . . . . . . . . . 401
Steps for setting up servers . . . . . . . . 370 Improving performance of the z/OS shell . . . . 402
Defining servers to process users without Setting _BPX_SHAREAS and
passwords or password phrases . . . . . . . 372 _BPX_SPAWN_SCRIPT . . . . . . . . . 402
Steps for defining servers to process users Controlling use of STEPLIBs . . . . . . . 403
without passwords or password phrases . . . 372 Checking that the sticky bit is set. . . . . . 403
Organizing file systems to improve performance 404
Improving performance of security checking . . . 404
Chapter 17. Monitoring the OMVS command and TSO/E response time . . . 404
environment . . . . . . . . . . . . 375
Reporting on activities using SMF records . . . . 375 Chapter 19. Setting up for sockets 405
SMF record type 30 . . . . . . . . . . 375
List of subtasks. . . . . . . . . . . . . 405
SMF record types 34 and 35 . . . . . . . 376
Using single stacks . . . . . . . . . . . 405
SMF record type 74 . . . . . . . . . . 376
Using multiple stacks. . . . . . . . . . . 406
SMF record type 80 . . . . . . . . . . 376
Choosing between INET or CINET . . . . . . 407
SMF record type 92 . . . . . . . . . . 376
Setting up for INET . . . . . . . . . . . 408
Monitoring process activity . . . . . . . . . 380
Setting up for CINET. . . . . . . . . . . 408
Using installation exits . . . . . . . . . 380
The internal routing table . . . . . . . . 409
Transport providers . . . . . . . . . . 410
Chapter 18. Tuning performance . . . 383 Limitations of IP configurations using CINET 410
List of subtasks. . . . . . . . . . . . . 383 Customizing BPXPRMxx for CINET . . . . . 411
Improving performance of runtime routines . . . 383 Using specific transports under CINET . . . . 413
Tuning tips for the compiler utilities. . . . . . 384 Resolver configuration files. . . . . . . . . 416
Improving performance by updating the Host information . . . . . . . . . . . 416
PROGxx member . . . . . . . . . . . 384 Service information . . . . . . . . . . 416
Caching RACF user and group information in VLF 384 Protocol information . . . . . . . . . . 416
Steps for caching UID and GID information in Resolver information . . . . . . . . . . 417
VLF . . . . . . . . . . . . . . . 385 Displaying information about sockets . . . . . 417
Moving z/OS UNIX executables into the LPA . . 385
Steps for moving an executable in the file Chapter 20. Managing accounting
system into the LPA . . . . . . . . . . 385
Binding the executable or DLL into a PDSE . . 386
work . . . . . . . . . . . . . . . 419
Using the shared library extended attribute . . . 387 List of subtasks. . . . . . . . . . . . . 419
Tuning tips for the file system . . . . . . . . 388 Using system management facilities (SMF) . . . 419
Tuning limits in BPXPRMxx . . . . . . . . 388 Assigning account numbers for forked address
Monitoring system and process limits . . . . 388 spaces . . . . . . . . . . . . . . . . 420
Monitoring use of system resources . . . . . 389 Modifying the accounting information for the
Controlling use of ESQA . . . . . . . . 390 OMVS and BPXOINIT address spaces . . . . . 420
Controlling dispatching priorities. . . . . . 391 Steps for modifying accounting information . . 420
System limits and process limits . . . . . . 392 Validating user accounts using the IEFUAV exit 421
What are hard limits? . . . . . . . . . 393 Checking job names and accounting information
What are soft limits? . . . . . . . . . . 393 using the IEFUJI exit . . . . . . . . . . . 422
How are limits handled after an identity Steps for activating the IEFUJI exit for OMVS
change? . . . . . . . . . . . . . . 393 work . . . . . . . . . . . . . . . 422
Inheriting soft limits . . . . . . . . . . 394 Using the IEFUJV job validation exit . . . . . 424
What happens when an identity change occurs? 394 Using the IEFUSI step initiation exit . . . . . . 424
Generating job names for OMVS address spaces 425
Contents ix
x z/OS V2R1.0 UNIX System Services Planning
Figures
1. z/OS operating system with z/OS UNIX 3 28. What a version file system looks like 181
2. How fork() creates a new process . . . . . 3 29. COUPLExx parmlib member . . . . . . 185
3. Example of workstation and network 30. BPXPRMxx setup — sharing file systems 193
connections . . . . . . . . . . . . . 8 31. Shared file systems in a sysplex . . . . . 194
4. BPXPRMXX member of SYS1.PARMLIB (Part 32. Sharing file systems: one version file system
1) . . . . . . . . . . . . . . . . 24 and one BPXPRMxx for the entire sysplex . . 196
5. BPXPRMXX member of SYS1.PARMLIB (Part 33. Sharing file systems: one version file system
2) . . . . . . . . . . . . . . . . 25 and separate BPXPRMxx members for each
6. A sample sanctioned list file . . . . . . . 38 system in the sysplex . . . . . . . . . 197
7. CTIBPX00 member of SYS1.PARMLIB . . . . 42 34. Sharing file systems in a sysplex: multiple
8. Customized CTCBPX08 parmlib member 43 systems in a sysplex using the same release
9. How unique UIDs and GIDs are assigned 63 level . . . . . . . . . . . . . . 198
10. Logical view of the hierarchical file system for 35. BPXPRMxx setup for multiple systems
the user . . . . . . . . . . . . . 114 sharing file systems and using different
11. Mounting a file system . . . . . . . . 122 release levels. . . . . . . . . . . . 199
12. Direct mount. . . . . . . . . . . . 147 36. Sharing file systems between multiple
13. Automount facility. . . . . . . . . . 148 systems using different release levels . . . 200
14. Mounting the new intermediate file system 149 37. One BPXPRMxx parmlib member for multiple
15. Creating a mount point directory for a user 150 systems sharing file systems and using
16. Mounting the new file system . . . . . . 151 different release levels . . . . . . . . 201
17. How a pipe works . . . . . . . . . . 152 38. Contents of /samples/.profile . . . . . . 225
18. Preparation for installing service . . . . . 159 39. Partial contents of the /samples/inittab file 234
19. Example of an /etc/auto.master file. It is 40. Partial contents of the /samples/csh.login file 236
named /etc/u.map. . . . . . . . . . 165 41. Partial contents of the /samples/csh.cshrc file 237
20. Example of a generic entry in a MapName 42. A simple UUCP network. . . . . . . . 257
file, /etc/u/map . . . . . . . . . . 166 43. Sample D OMVS,ACTIVATE=SERVICE
21. Follow-up steps when using the automount output . . . . . . . . . . . . . . 297
facility . . . . . . . . . . . . . . 168 44. Second example of D
22. Specific entry in a MapName file . . . . . 170 OMVS,ACTIVATE=SERVICE . . . . . . 297
23. Logical view of a shared file system for the 45. Job for placing a program in the LPA 387
end user . . . . . . . . . . . . . 174 46. A z/OS UNIX system using a single stack 406
24. BPXPRMxx parmlib member for a single 47. A z/OS UNIX system using multiple stacks. 407
system . . . . . . . . . . . . . . 176 48. Multiple transport provider support with two
25. Illustration of a single system . . . . . . 177 z/OS UNIX systems . . . . . . . . . 409
26. What the file system structure of a sysplex 49. Partial extract of the services information 416
root looks like . . . . . . . . . . . 178
27. What the structure of a system-specific file
system looks like . . . . . . . . . . 180
The z/OS Network File System and the z/OS Distributed File Service provide
additional capability.
Using this document, the people who run the installation will be able to do the
following tasks for z/OS UNIX:
v Customize it
v Manage operations
v Manage processing by shell users and application programs
v Manage file systems
v Control security
v Monitor and tune performance
v Collect data for accounting
It assumes the readers are familiar with z/OS systems and its accompanying
products.
This document also assumes that you are using Security Server for z/OS. RACF® is
a component of the Security Server for z/OS. Instead of RACF, you can use an
equivalent security product if it supports the system authorization facility (SAF)
interfaces required by z/OS UNIX, which are documented in z/OS Security Server
RACF Callable Services.
z/OS information
This information explains how z/OS references information in other documents
and on the web.
When possible, this information uses cross document links that go directly to the
topic in reference using shortened versions of the document title. For complete
titles and order numbers of the documents for all products that are part of z/OS,
see z/OS Information Roadmap.
These documents have not been subjected to any formal review nor have they been
checked for technical accuracy, but they represent current product understanding at
the time of their publication and provide information on a wide range of topics.
You must order them separately. A selected list of these documents is on the z/OS
UNIX website at http://www.ibm.com/systems/z/os/zos/features/unix/library/.
The porting page also features a variety of porting tips and lists porting resources
that will help you in your port.
Some of the tools available from the website are ported tools, and some are
unsupported tools designed for z/OS UNIX. The code works in our environment
at the time we make it available, but is not officially supported. Each tool has a
readme file that describes the tool and lists any restrictions.
The simplest way to reach these tools is through the z/OS UNIX home page. From
the home page, click on Tools and Toys.
Because the tools are not officially supported, APARs cannot be accepted.
Discussion list
Customers and IBM participants also discuss z/OS UNIX on the mvs-oe
discussion list. This list is not operated or sponsored by IBM.
Include the following line in the body of the note, substituting your given name
and family name as indicated:
After you have been subscribed, you will receive further instructions on how to
use the mailing list.
IBM or any other organizations use the personal information that you supply to
contact you only about the issues that you submit.
Many users use similar interfaces on other systems and use terminology different
from z/OS terminology. For example, they call virtual storage memory. The work
done by their system administrators is handled by system programmers in z/OS
systems. Where possible, individual terms and phrases are indicated.
z/OS UNIX also interacts with the following elements and features of z/OS:
v BCP (WLM and SMF components)
v z/OS XL C/C++ compiler, to compile programs. In V1R6 and earlier, the
compiler was known as the z/OS C/C++ compiler.
v Language Environment, to execute the shell and utilities or any other
XPG4-compliant shell application
v Data Facility Storage Management Subsystem (DFSMS). HFS is a component of
DFSMS.
v Security Server for z/OS. (RACF is a component of the Security Server.)
v Resource Measurement Facility™ (RMF™)
v System Display and Search Facility (SDSF)
v Time Sharing Option Extensions (TSO/E)
v Communications Server (TCP/IP)
v ISPF, to use the dialogs for OEDIT, OBROWSE, OPUTX, OGETX, or ISPF/PDF
for the ISPF shell
v Network File System (NFS)
v z/OS File System (zFS)
Figure 1 on page 3 shows how z/OS UNIX, the shell interface, and the API relate
to the rest of the z/OS operating system.
zFS
Language NFS
Environment Kernel
Callable
Services WLM
Shell
Interface
(commands) SMF
When programs issue fork() or spawn(), the BPXAS PROC found in SYS1.PROCLIB
is used to provide a new address space. For a fork(), the system copies one
process, called the parent process, into a new process, called the child process. The
forked address space is provided by WLM. Figure 2 shows how a fork() creates a
new process.
Program A Program A’
fork()
Existing MVS address space types such as TSO, STC, Batch, and APPC can request
z/OS UNIX services. When one of those address spaces makes its first request to
the z/OS kernel, the kernel dubs the task; that is, it identifies the task as a z/OS
UNIX process. There are two types of processes: user processes, which are associated
Daemons are programs that are typically started when the operating system is
initialized and remain active to perform standard services. Some programs are
considered daemons that initialize processes for users even though these daemons
are not long-running processes. Examples of daemons are:
v cron, which starts applications at specific times
v inetd, which provides service management for a network
v rlogind, which starts a user shell session when one is requested, using a remote
rlogin command
In similar systems, initialization typically starts a telnet daemon to perform
terminal services.Daemons are not restarted if they stop. You can restart them in
any of several ways:
v The z/OS operator can restart daemons using a cataloged procedure. For more
information, see “Starting daemons” on page 351.
v A system programmer can restart the daemon from a shell.
v You can use automation products such as Tivoli® NetView® for z/OS to notice
daemons terminating and then restart them using cataloged procedures.
A process can have one or more threads; a thread is a single flow of control within
a process. Application programmers create multiple threads to structure an
application in independent sections that can run in parallel for more efficient use
of system resources.
Use the JWT, SWT, or TWT value in the SMF parmlib member SMFPRMxx in
conjunction with the BPXPRMxx PWT value to specify when to time out an idle
address space that is waiting for terminal activity. For more information, see
“SMFPRMxx” on page 43.
XL C/C++ compiler
C is a programming language designed for a wide variety of programming
purposes including system-level code. To compile C code using the c89 command,
or to compile C/C++ code using cxx, you need the z/OS XL C/C++ compiler that
is available with z/OS.
Language Environment
Language Environment establishes a common language development and
execution environment for application programmers on z/OS. To run a shell
DFSMS
Data Facility System-Managed Storage (DFSMS) manages the data sets used for
processing the hierarchical file system which is z/OS. These data sets make up a
file hierarchy which consists of files and directories.
v Files contain data or programs. A file containing a load module or shell script or
REXX program is called an executable file. Files are kept in directories.
v Directories contain files, other directories, or both.
Additional local or remote file systems can be mounted within the file hierarchy.
A user is identified by a UID, which is kept in the OMVS segment of the RACF
user profile, and a GID, which is kept in the OMVS segment of the RACF group
profile. z/OS Security Server RACF Security Administrator's Guide contains
information about OMVS segments.
For information about multiple transport providers, see Chapter 19, “Setting up for
sockets,” on page 405.
Kernel
VTAM
TN3270-S TCP/IP
SNA IP
Network Network
In a z/OS system with kernel services, the workstation and network connections are interrelated.
Table 1 on page 9 shows several ways that you can access the z/OS UNIX shells:
v The TSO/E OMVS command, which provides a 3270 interface
v The rlogin command, which provides an ASCII interface
The telnet command, which provides an ASCII interface
When you first log in to one of the z/OS UNIX shells, you are in line mode.
Depending on how you access the shell, you might be able to use utilities that
require raw mode (such as vi) or run an X-Windows application.
Line mode
Input is processed after you press <Enter>. Line mode is also called
canonical mode.
Noncanonical mode cannot be used with a 3270 because a 3270 does not send data
until ENTER, PA, CLEAR, or PF keys are pressed.
A z/OS UNIX program can be run interactively from a shell in the foreground or
background, run as an MVS batch job, or called from another program.
A z/OS program submitted through the job stream or as a job from a TSO/E
session can request kernel services through the following:
v C/C++ functions
v Shell commands, after invoking the shell
At the first request for a kernel service, the system dubs the program as a z/OS
UNIX process. C/C++ applications that use RUNOPT 'POSIX(ON)' are always
dubbed implicitly. POSIX(OFF) or non-C/C++ applications are not dubbed until an
explicit kernel service request is issued.
You can also use the ISPF shell to perform the following tasks, which require
superuser authority or the RACF SPECIAL attribute or both.
v Create character special files
v Mount a file system
v Unmount a file system
v Reset a pending unmount
v Reset a quiesce status
v Change attributes for z/OS UNIX users
v Display a list of users and sort by name, UID, GID
v Print a list of users
v Set up z/OS UNIX users
v Set up z/OS UNIX groups
v Permit users to alter their own home directory and initial program
See z/OS UNIX System Services User's Guide for more information about using the
ISPF shell.
It is important that you are familiar with the information that comes with those
two installation methods. The information is needed when you install z/OS UNIX,
along with the other elements and features. The custom-built z/OS ServerPac:
Installing Your Order describes the installation jobs that you run to replace an
existing system or install a new one. For CBPDO users, the Program Directory
describes how to use the SMP/E RECEIVE, APPLY, and ACCEPT commands to
install your order. Both describe the installation verification procedures (IVPs) that
you perform to ensure that your installation is proceeding successfully. They also
contain some customization information.
The information that IBM products keep within /var is not intended for you to
directly edit or modify. It is for IBM use only. Like /etc, IBM products create
directories under /var during installation. Unlike /etc, IBM products (during
execution or customization) also create files in /var. However, IBM products do not
install files into /var during the SMP/E installation.
IBM also delivers a separate file system for /etc. See “Establishing an /etc file
system for a new release” on page 12.
The sample job accepts a mount point directory (commonly referred to as a service
directory) to allow you to install new releases of z/OS without affecting your
production root file system.
Rule: You must be a superuser with UID(0) or have access to the BPX.SUPERUSER
resource in the FACILITY class. See “Security requirements for ServerPac and
CBPDO installation” on page 87 for a complete description of the security
requirements necessary to perform your install.
Elements and features that install into the file system are installed in both WAVE 1
and WAVE 2 of the CBPDO process and are listed in the z/OS Program Directory.
BPXOINIT is also the job name of the initialization process and is shipped in
SYS1.PROCLIB.
Guideline: Establish the /etc file system before you perform the first IPL of the
new system. How you establish the directory differs, depending on whether you
already have an /etc file system.
v If you do not have one, create it using instructions in “Customizing the z/OS
UNIX shells” on page 217. For information about handling files in the /etc
directory of other z/OS elements and features that install into the z/OS UNIX
file system, see z/OS Migration. You might also have /etc file system impacts for
non-z/OS products that you are installing. For that information, see migration
and customization information for those products.
v If you already have an /etc file system, the /etc directory for the new z/OS
system is based on a copy of the /etc file system for your existing system. You
make this copy and migrate your existing /etc file system, following instructions
in ServerPac: Installing Your Order (for those choosing ServerPac) and the
Program Directory (for those choosing the CBPDO method of installation).
Requirement: In order to apply service to the file system, you need at least one
system that can run in full function mode.
SMS (System Managed Storage, which is part of the DFSMSdfp element of z/OS)
must be configured, whether you define the kernel in minimum mode or full
function mode.
In minimum mode, a temporary file system named SYSROOT is used as the root
file system. It is initialized and primed with a minimum set of files and directories.
Any data written to this file system is not written to DASD. (See Chapter 14,
“Managing the temporary file system (TFS),” on page 327 for a description of a
temporary file system.) The temporary file system does not have any executables;
that is, the shell will not be available. Do not install z/OS UNIX System Services
Application Services in the TFS, because data will not be written to DASD.
To switch to using kernel services in full function mode, complete the tasks that
are described in “Setting up for full function mode.” The task list in Table 2 on
page 16 applies to those who want to use full function mode.
Before installing the remainder of z/OS, you need to customize SMS, RACF, and
the z/OS UNIX file system.
If the kernel is running in minimum mode, you will see output similar to the
following:
OMVS 000E ACTIVE DEFAULT
where DEFAULT indicates that an OMVS setting was not specified in IEASYSxx.
For example, if your system supports 200 dubbed address spaces, 500 processes,
and 2000 threads, the kernel service consumes an additional 650KB of ECSA.
You will find that 203125 bytes of ESQA, or approximately 200K, is needed.
The 49 plus 3 comes from 49 clients, 1 server, 1 anchor block, and 1 connection
to a kernel data space that is used to manage the storage. Some servers use
large amounts of shared memory that is shared by hundreds or thousands of
clients. This can require large amounts of ESQA (up to one gigabyte).
2. mmap() is typically used by a single process to map a file into virtual memory
using the same sort of logic used by DIV (Data In Virtual). Used in this
manner, each page of the file requires 3 RSM control blocks (anchor block, user
page, and kernel data space page). Each additional user sharing an mmap page
of a file will consume an additional control block.
The __MAP_MEGA option of mmap() enables applications to map very large
files without the system overhead in ESQA. If you have applications using the
__MAP_MEGA option, you do not need to be concerned with the above
calculations. If you are not using _MAP_MEGA and issue mmap(), you can
estimate the ESQA usage just as you would for shared memory.
3. fork() uses IARVSERV to capture the parent's pages for the child's use. Each
page captured represents a requirement for three 32-byte RSM control blocks
(parent, child, and an anchor block per page). Since the child typically issues
the exec call soon after the fork, the ESQA used is short term. This is countered
by the probability that there are multiple forks going on concurrently. Again,
the amount of required ESQA can be calculated by multiplying the size of the
data area (in pages) to be copied by the number of concurrent forks + 3 by 32.
Example: Assuming the Language Environment runtime library is not in LPA, a
typical shell will have 5 MB of private to copy on fork. If there are, on average,
10 forks running concurrently, then the following ESQA is needed:
5MB * 256 pages/MB * (10 forks + 3) * 32 bytes/page
In BPXPRMxx, specify the maximum number of shared storage pages that can be
used on the MAXSHAREPAGES statement. By limiting the amount of shared
storage pages used, MAXSHAREPAGES lets an installation control the amount of
ESQA storage that is consumed by users.
This limit applies to the mmap(), shmat(), ptrace(), and fork() callable services.
The fork() and ptrace() callable services use shared storage pages to improve
performance. Because use of shared storage pages is not critical to completion of
these functions, when the amount of shared storage pages in use reaches about
60% of the specified limit, these functions no longer use shared storage pages. The
mmap() service continues to use the shared storage pages until the total resource
consumption reaches about 80% of the limit. The shmat() callable service continues
to use shared storage pages until the total resource consumption reaches the
specified limit.
The mmap() and shmat() callable services return an out-of-memory condition when
they can no longer obtain shared storage without exceeding their respective shared
storage limits.
There is also a FORKCOPY parameter in BPXPRMxx that prevents fork from using
the IARVSERV function.
Installations that run in goal mode can take the following steps to customize
service policies in their WLM definition:
v Define a workload for kernel work.
v Define service classes for kernel work:
– Define a service class for forked child processes. You should specify a number
of performance periods. Performance periods for short-running work can be
given response-time goals or percentage response-time goals. Performance
periods for long-running work should be given velocity goals.
– Define a service class for startup processes, which are forked by the
initialization process, BPXOINIT. This service class should be given a velocity
goal that is higher than that of other forked child processes.
v Define classification rules:
– By default, put forked child processes (subsystem type OMVS) into the
service class defined for forked child processes.
– Put the kernel (with TRXNAME=OMVS) into a high-priority Started Task
(subsystem type STC) service class. Another option is to keep the OMVS
started procedure in the default started class category, which generally has
high priority.
– Put the initialization process BPXOINIT (with TRXNAME=BPXOINIT) into a
high-priority Started Task (subsystem type STC) service class. Another option
is to keep the BPXOINIT started procedure in the default started class
category, which generally has high priority.
– Startup processes that are forked by the initialization process, BPXOINIT, fall
under SUBSYS=OMVS. These processes are identified by
USERID=OMVSKERN. Put them in a separate service class.
– Other forked child processes (under subsystem type OMVS) can be assigned
to different service classes based on USERID, ACCTINFO, or TRXNAME.
– Put the DFSMS buffer manager SYSBMAS (with TRXNAME=SYSBMAS) into
a high-priority Started Task (subsystem type STC) service class. Another
option is to allow the SYSBMAS started procedure to remain in the default
started class category which generally has high priority.
When you define a service class for forked child address spaces, it should normally
have three performance periods because it must support all types of kernel work,
The next example is a sample service class for forked child processes. Change these
values as appropriate for your installation.
* Service Class OMVS - OMVS forked child processes
Base goal:
Also, define a service class for daemons. This service class should normally have
only one period with a velocity goal higher than the velocity goals of other forked
child processes.
Your installation might have other special classes of users. If so, you might want to
define other service classes for kernel work.
Classification:
If you do not define any classification rules, OMVS and BPXOINIT will run under
the rules for subsystem type STC, which typically is defined to have high priority.
Example: In this example, STC1 is a service class for high-priority started tasks:
* Subsystem Type STC
Classification:
You should have two BPXPRMxx members, one defining the values to be used for
system setup and the other defining the file systems. Using these two members
makes it easier to migrate from one release to another, especially when using the
ServerPac method of installation.
When you complete your installation activities, you have one or two BPXPRMxx
members, depending on whether you used ServerPac or CBPDO:
v With ServerPac, you receive two members, as IBM recommends.
v With CBPDO, after you complete all the instructions in the z/OS Program
Directory, you have the one member that you copied from SYS1.SAMPLIB.
In this case, you should define a second BPXPRMxx member so that the system
setup parameters are in one member and the parameters that define the file
systems are in the other.
When you customize the BPXPRMxx members, use columns 1 through 71 for data;
columns 72 through 80 are ignored.
Also, the USS_PARMLIB check provided by IBM Health Checker for z/OS can be
used to determine whether there are differences between current system settings
and the settings defined in the BPXPRMxx member of SYS1.PARMLIB. If a
difference is found, an exception message is issued. You receive a report that lists
the differences.
Be aware that when system and parmlib settings are compared, values with
regards to the PARM setting on the MOUNT statement are considered to be
case-sensitive. Thus, the same setting value expressed in uppercase or lowercase in
a system setting are flagged as a difference if that same setting is expressed in the
opposite case in the relevant BPXPRMxx member.
For more details about IBM Health Checker for z/OS, see Chapter 21, “IBM Health
Checker for z/OS,” on page 427 or IBM Health Checker for z/OS: User's Guide.
FILESYSTYPE TYPE(HFS)
ENTRYPOINT(GFUAINIT)
PARM(’ ’)
/* FILESYSTYPE TYPE(AUTOMNT) */
/* ENTRYPOINT(BPXTAMD) */
FILESYSTYPE TYPE(TFS)
ENTRYPOINT(BPXTFS)
/* FILESYSTYPE TYPE(NFS) */
/* ENTRYPOINT(GFSCINIT) */
/* ASNAME(MVSNFSC) */
/* PARM(’biod(6)’) */
FILESYSTYPE TYPE(ZFS) */
ENTRYPOINT(IOEFSCM) */
ASNAME(ZFS) */
TYPE(UDS)
/* SUBFILESYSTYPE NAME(TCPIP2) */
/* TYPE(CINET) */
/* ENTRYPOINT(EZBPFINI) */
/* ROOT FILESYSTEM(’OMVS.ROOT’)
/* TYPE(HFS)
/* MODE(RDWR)
/* MKDIR(’...’)
/* MOUNT FILESYSTEM(’OMVS.USER.JOE’ ) */
/* TYPE(HFS) */
/* MODE(RDWR) */
/* MOUNTPOINT(’/u/joe’) */
/* NOSETUID */
/* SECURITY */
/* TAG(NOTEXT,0) */
/* MKDIR(’...’ */
/* ALTROOT FILESYSTEM(’OMVS.ALTROOT’) */
/* MOUNTPOINT(’/sysalt’) */
/* PARM(’ ’) */
MAXTHREADTASKS(1000)
MAXTHREADS(200)
/*PRIORITYGOAL (n,...,n) */
/*PRIORITYPG (n,...,n) */
IPCMSGNIDS (500)
IPCMSGQBYTES (2147483647)
IPCMSGQMNUM (10000)
IPCSHMNIDS (500)
IPCSHMSPAGES (262144)
IPCSHMMPAGES (25600)
IPCSHMNSEGS (500)
IPCSEMNIDS (500)
IPCSEMNSEMS (1000)
IPCSEMNOPS (25)
MAXMMAPAREA(40960)
MAXFILESIZE(NOLIMIT)
MAXCORESIZE(4194304)
MAXASSIZE(209715200)
MAXCPUTIME(1000)
MAXSHAREPAGES(131072)
FORKCOPY(COW)
SYSPLEX(NO)
SUPERUSER(BPXROOT)
TTYGROUP(TTY)
STARTUP_PROC(OMVS)
/* STARTUP_EXEC(’Dsname(Memname)’,SysoutClass) */
/* RUNOPTS(’runtime options’) */
SYSCALL_COUNTS(NO)
MAXQUEUEDSIGS(1000)
SHRLIBRGNSIZE(67108864)
LIMMSG(NONE)
LOSTMSG(ON)
PWT(SMF|ENV|SMFENV)
AUTOCVT(OFF)
RESOLVER_PROC(DEFAULT)
SWA(BELOW)
/*SERV_LPALIB(’LibraryName’,Volser’) */
/*SERV_LINKLIB(’LibraryName’,Volser’) */
NONEMPTYMOUNTPT(NOWARN) */
MAXUSERMOUNTSYS(0) */
MAXUSERMOUNTUSER(0) */
You can use the SETOMVS SYNTAXCHECK operator command to check the
syntax of BPXPRMxx before doing an IPL.
For sharing files across a sysplex, the SYSPLEX(YES) parameter is required, and
you must also specify a value for the VERSION statement. See Chapter 7, “Sharing
file systems in a sysplex,” on page 173 for more information.
FILESYSTYPE
The FILESYSTYPE statement defines the type of physical file system to be used.
When you specify SYSPLEX(YES), you must define the file system type for all
systems participating in a shared file system. The easiest way to define it is to have
a single BPXPRMxx member that contains file system information for each system
participating in a shared file system. If, however, you decide to define a
BPXPRMxx for each system, the FILESYSTYPE statement must be identical on each
system. See “Customizing BPXPRMxx for a shared file system” on page 185 for
more information about configuring BPXPRMxx in a sysplex.
Tip: To facilitate migrating file systems from HFS to zFS, some steps are taken to
support existing mount commands that were not changed after the HFS data set
that was mounted was converted to zFS file system. When you specify either ZFS
or HFS, the selection that is made depends on the type of the file system that is
found.
v If you specify TYPE(HFS), a search is done for a data set that matches the file
system name.
– If the data set is found and it is not an HFS data set, the type is changed to
ZFS.
– If a data set is not found, the type is changed to ZFS in case the file system is
a zFS file system such as a cloned file system.
In both cases, the mount proceeds as though TYPE(ZFS) had been specified.
However, any PARM string that was specified is ignored.
v If you specify TYPE(ZFS) and it is an HFS data set, then the type is changed to
HFS. The mount proceeds as though TYPE(HFS) had been specified. However,
any PARM string that was specified is ignored.
You should monitor the paging of your system. If paging is increasing, you might
need to set a lower value on the VIRTUAL parameter to relieve the situation.
If you specify the NOSETUID option, the setuid and setgid mode bits are not
respected when a program in this file system is run. The program runs as though
the setuid and setgid mode bits were not set. Also, the APF extended attribute (+a)
and the program control extended attribute (+p) are not honored
Systems using shared file systems will have I/O to a z/OS UNIX couple data set
(CDS). Because of these I/O operations to the CDS, each mount request requires
additional system overhead. You will need to consider the effect that this change
will have on your recovery time if a large number of mounts are required on any
system that has shared file systems. For more information about shared file
systems, see Chapter 7, “Sharing file systems in a sysplex,” on page 173.
You can use multiple MKDIR keywords on the MOUNT statement to define mount
points in BPXPRMxx so that one or more directories is created in the mounted file
system during z/OS UNIX initialization.
Tip: To ensure that the mounts will succeed, use SETOMVS SYNTAXCHECK to
check the MVS catalog for the existence of the HFS or zFS file system name that is
listed on each MOUNT statement.
NETWORK
The NETWORK statement defines address families for sockets. It is necessary if the
facility needs the socket domains.
Rule: You must configure just AF_INET or both AF_INET and AF_INET6. You
cannot configure AF_INET6 alone.
Some tips:
1. You can specify separate MAXSOCKETS values. The default MAXSOCKET
value for AF_INET6 is the value that was specified or defaulted to for
AF_INET.
ROOT
The ROOT statement defines and mounts the root file system. The root file system
can be either HFS and zFS. The zFS file system is the preferred file system, and
continued use of HFS is not encouraged.
You can use multiple MKDIR keywords on the ROOT statement to define mount
points in BPXPRMxx so that one or more directories is created in the mounted file
system during z/OS UNIX initialization.
Tip: To ensure that mounts succeed, use SETOMVS SYNTAXCHECK to check the
MVS catalog for the existence of the HFS or zFS file system names listed on each
MOUNT statement.
SUBFILESYSTYPE
The SUBFILESYSTYPE statement identifies each of the AF_INET or dual
AF_INET/AF_INET6 socket physical file systems that are to run underneath the
Common INET socket file system. SUBFILESYSTYPE is an optional statement.
Changes to BPXPRMxx for sockets might also require changes in the user's TCP/IP
security system. For more information, see “Setting up TCP/IP security” on page
111.
Table 4 lists the system-wide and process-level limits that can be set in BPXPRMxx.
Not all of the statements are explained in this table; see the BPXPRMxx topic in
z/OS MVS Initialization and Tuning Reference for a complete description of each
statement. If you specify the SHRLIBMAXPAGES parameter, it will be accepted but
will not have any impact on the system. The value that you specify will never be
reached, because user-shared library objects are no longer supported.
Table 4. System-wide and process-level limits
System-wide limits Process-level limits
IPCMSGNIDS MAXASSIZE
IPCMSGQBYTES MAXCORESIZE
Note 1: The limit is sysplex-wide when it is in the shared file system configuration.
CTRACE
Use the CTRACE statement to provide tracing while the kernel is starting and to
avoid having to issue a TRACE operator command to set tracing options.
The only way to change any CTRACE value is with the TRACE command. You
cannot use the SETOMVS or SET OMVS command to change the value.
LIMMSG
Use the LIMMSG statement to control the display of console messages that indicate
when parmlib limits are reaching critical levels. For more information, see
“Displaying the status of system-wide limits specified in BPXPRMxx” on page 307.
MAXASSIZE
MAXASSIZE is the maximum region size (in bytes) for an address space that was
created by rlogind, telnetd, and other daemons. You can set a system-wide limit in
BPXPRMxx and then set higher limits for individual processes. Use the RACF
ADDUSER or ALTUSER command to specify the ASSIZEMAX limit on a
per-process basis as follows:
ALTUSER userid OMVS(ASSIZEMAX(nnnn)
MAXCPUTIME
MAXCPUTIME is the time limit (in seconds) for processes that were created by
rlogind, telnetd, and other daemons. You can set a system-wide limit in
BPXPRMxx and then set higher limits for individual users. Use the RACF
ADDUSER or ALTUSER command to specify the CPUTIMEMAX limit on a
per-process basis as follows:
MAXFILEPROC
Use MAXFILEPROC to set the maximum number of file descriptors that a single
process can have open concurrently, such as all open files, directories, sockets, and
pipes. By limiting the number of open files that a process can have, you limit the
amount of system resources a single process can use at one time.
A process can change the MAXFILEPROC value using the setrlimit() function.
Only users with appropriate privileges can increase their limits.
You can set a system-wide limit in BPXPRMxx and then set higher limits for
individual processes. Use the RACF ADDUSER or ALTUSER command to specify
the FILEPROCMAX limit on a per-process basis as follows:
ALTUSER userid OMVS(FILEPROCMAX(nnnn))
MAXIOBUFUSER
MAXIOBUFUSER limits each user’s (for example, a single UID) use of persistent
kernel storage for I/O buffers when used in a Unicode Services conversion
environment. (See “AUTOCVT” on page 36 or the description of the
_BPXK_AUTOCVT environment variable in “_BPXK environment variables” on
page 431.) This storage remains allocated for the life of an open file. The amount
allocated for each open depends on the CCSID of the file and the size of a read or
write requests used by the process. The limit does not apply to UID 0 processes.
z/OS UNIX only tracks such storage for the user that opens the file. If the file is
inherited by a different user ID, the amount is not propagated. This can occur, for
example, when the user identity changes during spawn or exec. A user identity
change is an authorized operation, so the extra tracking is not needed.
MAXMMAPAREA
MAXPMMAPAREA specifies the maximum number of data space pages that can
be allocated for memory mapping of z/OS UNIX files. Storage is not allocated
until memory mappings are active.
The total amount of allocated mmap pages includes those pages in use by
processes limited by the system limit MAXMMAPAREA and also those processes
limited by the MMAPAREAMAX process limit for their OMVS segment.
Because processes with process limits contribute to the total amount of allocated
mmap pages, processes limited by the MAXMMAPAREA value might fail an
mmap request before a BPXI039I message is issued. Also, processes with
MMAPAREAMAX values for the OMVS segment might be successfully allocating
mmap storage even though the BPXI039I message might be displayed with 100%
usage.
MAXPIPES
The MAXPIPES limit refers to the maximum number of named or unnamed pipes
that can be open in the system at any one time. MAXPIPES is a hard system limit
and is not configurable. The limit is monitored, and you can view the current
usage with the DISPLAY OMVS,LIMITS system command.
For more information about monitoring MAXPIPES, see “Monitoring system and
process limits” on page 388.
MAXPIPEUSER
Use MAXPIPEUSER to set the maximum number of named or unnamed pipes that
a user (that is, a UID) can open and use concurrently. By limiting the number of
pipes that a user can open, you limit the amount of the pipe system resources that
a user can use at one time.
The MAXPIPEUSER limit is a hard limit and applies to all non UID=0 users. The
MAXPIPEUSER value cannot be changed on a user basis, and there is no resource
limit (setrlimit) support to alter a soft or hard limit. For UID=0 users, the
MAXPIPEUSER limit of 8,730 (the maximum allowable value) is always enforced.
MAXPROCSYS
MAXPROCSYS specifies the maximum number of processes that can be active at
the same time.
You can manage system resources by limiting the number of processes that the
system is to support. The values that you specify for MAXPROCSYS,
MAXPROCUSER, and MAXUIDS are interrelated. When selecting a value for
MAXPROCSYS, remember that these processes are needed:
Do not specify a higher value for MAXPROCSYS than your system can support
because most processes use an entire MVS address space. This value will vary,
depending on your environment. If you set the value too high, failures (EAGAIN)
for fork or spawn might occur because WLM could not provide enough fork
initiators.
MAXPROCUSER
MAXPROCUSER specifies the maximum number of processes that a single user
(that is, with the same UID) can have concurrently active.
Though not suggested, the security administrator can give the same z/OS UNIX
UID to more than one TSO/E user ID. Therefore, the number of users can be
greater than the number of UIDs that are defined. Check with the security
administrator; if users share UIDs, you will need to define a greater number of
processes for each user.
You can set a system-wide limit in BPXPRMxx and then set higher limits for
individual processes. Use the RACF ADDUSER or ALTUSER command to specify
the PROCUSERMAX limit on a per-process basis. For example:
ALTUSER userid OMVS(PROCUSERMAX(nnnn))
Guideline: Because each user might have more than one session, you should allow
four pseudo-TTY pairs for each user (MAXUIDS * 4). Specify a MAXPTYS value
that is at least twice the MAXUIDS value.
MAXSOCKETS
MAXSOCKETS specifies the maximum number of sockets that can be obtained for
a given file system type.
If you are using AF_UNIX, MAXSOCKETS is ignored and the system uses a value
of 10000.
MAXTHREADS
MAXTHREADS is the maximum number of threads that a single process can have
active concurrently. If an application needs to create more than the recommended
maximum in SAMPLIB, it must minimize storage allocated below the 16 M line by
specifying C run-time options. For information about BPX1STL (the
set_thread_limit service), see z/OS UNIX System Services Programming: Assembler
Callable Services Reference.
You can set a system-wide limit in BPXPRMxx and then set higher limits for
individual users by using the RACF ADDUSER or ALTUSER command to specify
the THREADSMAX limit on a per user basis as follows:
ALTUSER userid OMVS(THREADSMAX(nnnn))
MAXTHREADTASKS
MAXTHREADTASKS is the maximum number of MVS tasks that a single process
can have concurrently active.
You can set a system-wide limit in BPXPRMxx, and then set higher limits for
individual users by using the RACF ADDUSER or ALTUSER command to specify
the THREADSMAX limits on a per-user basis, as follows:
MAXUIDS
MAXUIDS specifies the maximum number of unique UIDs that can use kernel
services at the same time. The UIDs can be for interactive users or for programs
hat requested kernel services.
MAXUIDS limits the number of active UIDs. When you select a value for
MAXUIDS, consider these factors:
v Because users are likely to run with three or more concurrent processes each,
they require more system resources than typical TSO/E users.
v If the MAXUIDS value is too high relative to the MAXPROCSYS value, too
many users can invoke the shell. All users might be affected, because forks
might begin to fail.
For example, if your installation can support 400 concurrent processes—
MAXPROCSYS(400)—and each UID needs an average of 4 processes, then the
system can support 100 users. For this operating system, specify MAXUIDS(100).
MAXUSERMOUNTSYS
Use the MAXUSERMOUNTSYS statement to specify the maximum number of
nonprivileged user mounts in the system. For more information about
nonprivileged authority, see “Nonprivileged mount and unmount authority” on
page 124.
MAXUSERMOUNTUSER
Use the MAXUSERMOUNTUSER statement to specify the maximum number of
nonprivileged user mounts allowed for each nonprivileged user. For more
information about nonprivileged authority, see “Nonprivileged mount and
unmount authority” on page 124.
PRIORITYGOAL
PRIORITYGOAL specifies a list of service class names of 8 characters or less that
are used with the nice(), setpriority(), and chpriority() callable services when the
system is running in goal mode.
If you are using your system to run a critical real-time application program, specify
a list of service class names. It is difficult to run both real-time application
programs and general users on the same z/OS UNIX system because you cannot
restrict any set of users from access to the nice() and setpriority() functions. For
more information, see “Controlling dispatching priorities” on page 391.
PRIORITYPG
PRIORITYPG specifies a list of performance group numbers that are used with the
nice(), setpriority(), and chpriority() callable services when the system is running in
goal mode.
If you are using your system to run a critical real-time application program, specify
a list of performance group numbers. It is difficult to run both real-time application
programs and general users on the same z/OS UNIX system because you cannot
restrict any set of users from access to the nice() and setpriority() functions. For
more information, see “Controlling dispatching priorities” on page 391.
Tip: Use AUTOCVT(OFF). If you want to use another method to enable Enhanced
ASCII, see Chapter 11, “Converting files between code pages,” on page 279.
You can also use AUTOCVT(ALL) to enable Unicode Services support. When
AUTOCVT(ALL) is set, every read and write operation for a file is checked to see
if conversion is necessary.
NONEMPTYMOUNTPT
Use the NONEMPTYMOUNTPT statement to control the mounting of file systems
on non-empty mount point directories. For more information, see “Restrictions on
mounting file systems” on page 127.
LOSTMSG
LOSTMSG(ON) detects lost and duplicate XCF messages in a shared file system
configuration. It is ignored if the file system does not have a shared file system
configuration; for example, when SYSPLEX(NO) is specified. While LOSTMSG can
be specified differently for each member in the sysplex, the same LOSTMSG setting
should be specified throughout the sysplex. To disable the detecting of lost and
duplicate messages, specify LOSTMSG(OFF).
Tip: Do not use LOSTMSG(ON) when z/OS UNIX sysplex traffic is high, such as
when many file systems that are not sysplex-aware are being accessed remotely,
because performance might be affected.
PWT
The PWT (process wait time) statement indicates whether processes waiting on
terminal input should be timed out. To force a timeout for all processes, set PWT
to SMF.
STEPLIBLIST
STEPLIBLIST specifies the path name of the file in the file system that contains the
list of MVS data sets to be used as step libraries for programs that have the
set-user-id and set–group-id bit set on.
Step libraries have many uses; one is so that selected users can test new versions
of run-time libraries before the new versions are made available to everyone on the
system. Customers who do not put the Language Environment library SCEERUN
into the linklist should put the SCEERUN data set name in this file.
If your installation runs programs that have the setuid or setgid bit turned on, only
those load libraries that are found in the STEPLIBLIST sanction list are set up as
step libraries in the environment that those programs will run in. Because
programs with the setuid or setgid bit turned on are considered privileged
programs, they must run in a controlled environment. The STEPLIBLIST sanction
list provides this control by allowing those programs to use only the step libraries
that are considered trusted by the installation.
If you do not specify a value for STEPLIBLIST, step libraries will not be set up for
set-user-ID and set-group-ID executable files.
These step libraries are set up as a result of the invocation of an executable file
using the exec service (BPX1EXC), the attach_exec service (BPX1ATX) or spawn
(BPX1SPN) service. After one of those services has been invoked, the step libraries
can be propagated from the calling task's environment. They can also be specified
by using the STEPLIB environment variable that is passed to the exec service.
When the exec service invokes a set-user-ID or set-group-ID executable file, only
those libraries that are found in the sanctioned list are set up as step libraries in
the environment that the executable file will run in.
If the file does not follow these formatting rules, the sanctioned list is not built
using the file.
v You can include comment lines in the list. Each comment line must start with /*
and end with */.
v You must follow standard MVS data set naming conventions in naming the files
in the list.
v Each data set name must be fully qualified and cannot be enclosed in quotation
marks.
v Each data set name must be on a line by itself, with no comments.
v You must use uppercase letters for data set names.
v You can put blanks before and after each data set name. Entirely blank lines in
the list are ignored.
v You can use the * character to specify multiple files that begin with the same
characters. For example, if you list SYS1.*, you are sanctioning any file that
begins with SYS1. as a step library.
You should catalog each data set listed in the file to prevent user versions of the
data set from being used.
/********************************************************************/
/* Sanction all data set names beginning with CEE.SCEERUN */
/********************************************************************/
CEE.SCEERUN*
To create or update the sanctioned list file, use the OSTEPLIB command, which
specifies read and execute permissions for all users (permissions 555). Because the
sanctioned list file must be protected from update by nonprivileged users, only
users with superuser authority should be given update access to it.
Updates to the file take effect only when the next setuid(0) program is run from a
process with read access to the STEPLIBLIST file because a working copy of the
sanctioned list is maintained in storage.
Use the SETOMVS or SET OMVS command to dynamically change the value of
STEPLIBLIST. However, this action only changes the current settings of the system.
To make a permanent change, edit the BPXPRMxx member that will be used for
IPLs.
USERIDALIASTABLE
On most UNIX systems, you use lowercase IDs. With z/OS UNIX, typically you
will use the uppercase user IDs and group names specified in your security
database. In some cases, however, you might want to use lowercase or mixed case
names in z/OS UNIX processing. Or perhaps certain names do not conform to
your installation's naming conventions. You then need to create an alias table to
associate lowercase or mixed case alias names with uppercase z/OS user ID and
group names. Note that when lowercase or mixed case alias names are not found
in the alias table, they are folded to uppercase.
Tip: The path name of the file should be /etc/tablename. This naming structure
fits in with the IBM strategy to place all customized data in the /etc directory. If a
value for USERIDALIASTABLE is not specified, alias names are not used.
If the file does not follow these formatting rules, the alias name might not be
recognized and various functions relating to the attempted use of the alias might
fail.
The next example is a sample alias table for user IDs and group names.
/*****************************************************************/
/* Mixed case group names */
/*****************************************************************/
:Groups
DEPTD10 DeptD10
DEPTD20 DeptD20
/*****************************************************************/
/* Non-alphanumeric alias user IDs and group names */
/*****************************************************************/
:UserIDs
/*****************************************************************/
/* Mixed case alias names */
/*****************************************************************/
MYUSERID MyUserid
/*****************************************************************/
/* Easier to remember alias names */
/*****************************************************************/
K61XDLBC Daniel
JOEDOE Joe_Doe
MRDOE Mr.Doe
ABCD A-B-C-D
:groups
DEVEL OE-Dev
TEST OE_Test
For installation security reasons, you might have to use an alias table for user IDs.
See “Security requirements for ServerPac and CBPDO installation” on page 87 for
more information.
Rule: You must protect the alias table for user IDs and group names. Only users
with superuser authority should be given update access to it. All users should be
given read access to the file.
Once a user is logged into the system, changing the alias table does not change the
alias name immediately. Database queries, however, will yield the new alias if the
user ID performing the query has read or execute access to the alias table. The
table is checked every 15 minutes and refreshed if it has been changed. If a change
needs to be activated sooner, you can use the following command:
SETOMVS USERIDALIASTABLE=’/etc/tablename’
where /etc/tablename is the name of the alias table used for the user IDs.
To dynamically change the value of AUTHPGMLIST, you can use the SETOMVS or
SET OMVS =(xx) operator command, where xx specifies which BPXPRMxx file is
to be used to reset the various z/OS UNIX parameters.
If the AUTHGPGMLIST statement contains a nonexistent value, you will not get
an error message.
Tip: Using the AUTHPGMLIST statement degrades performance slightly. The more
path names or program names that you specify, the greater the performance
degradation. However, the tradeoff is increased security.
ALLOCxx
The ALLOCxx member of SYS1.PARMLIB is used to control allocation requests.
Use this policy so that forked addresses do not go into allocation waits. Be aware
that using this policy can disrupt your system, because it will cause a failure rather
than a wait.
For complete details on using the ALLOCxx parmlib member to prevent waits,
refer to z/OS MVS Initialization and Tuning Reference.
COFVLFxx
The virtual lookaside facility (VLF) enables an authorized program to store named
objects in virtual storage that is managed by VLF and to retrieve these objects by
name on behalf of users in multiple address spaces. VLF is designed primarily to
improve performance by retrieving frequently used objects from virtual storage
rather than performing repetitive I/O operations from DASD. Certain IBM
products or components such RACF use VLF as an alternate way to access data.
If you are using the virtual lookaside facility (VLF), update the VLF parmlib
member, COFVLFxx. Add CLASS and EMAJ statements to activate a RACF
performance option for z/OS UNIX. The following example shows the added
statements in an example of a COFVLF33 member.
Start VLF, specifying the updated member, with the following operator command:
START VLF,SUB=MSTR,NN=33
For information about caching UIDs and GIDs, see “Caching RACF user and group
information in VLF” on page 384.
CTnBPXxx
The CTnBPXxx member of SYS1.PARMLIB is used to control tracing. It specifies
the tracing options for a component trace of z/OS UNIX events.
v One member should control initial tracing, which automatically starts when the
OMVS address space is started. It should store trace records in a buffer, which
could be read if a dump is written. This member should be considered the
operating system's default member.
The CTRACE parameter in the BPXPRMxx member specifies the member; see
Figure 4 on page 24, where CTIBPX00 is specified.
v One member can be set up to trace all z/OS UNIX events. This member is
CTIBPX01. This method enables a site to change trace information on the fly to
obtain suitable component trace information for a dump. (CTIBPX00 traces
minimum information.)
v Create other members as needed or when requested by the IBM Support Center.
To change the tracing to collect data needed for a particular problem, ask the
operator to enter a TRACE CT command that specifies a different, customized
CTnBPXxx member that you have placed in parmlib. When you want to resume
normal tracing operations, enter another TRACE CT command specifying the
normal CTIBPXxx that your installation uses.
TRACEOPTS
ON
BUFSIZE(128K)
/* OPTIONS( */
/* ’ALL ’ */
/* ,’CHARS ’ */
/* ,’DEVPTY ’ */
/* ,’FILE ’ */
/* ,’LOCK ’ */
/* ,’PIPE ’ */
/* ,’PROCESS ’ */
/* ,’PTRACE ’ */
/* ,’SIGNAL ’ */
/* ,’STK ’ */
/* ,’STORAGE ’ */
/* ,’SYSCALL ’ */
/* ,’DEVRTY ’ */
/* ,’IPC ’ */
/* ,’XCF ’ */
/* ) */
You can specify a buffer size between 16KB and 64MB on the BUFSIZE statement.
Use the TRACE CT operator command to change the size of the trace buffer.
Use any of the listed options to specify which events can be traced. For
performance reasons, set component tracing off during normal operations. With
CTRACE set to OFF, minimal tracing is done.
TRACEOPTS
WTRSTART(CTWTR)
ON
BUFSIZE(4M)
OPTIONS(’FILE’,’PIPE’)
WTR(CTWTR)
When re-creating a problem for IBM service, you should increase the buffer size to
its maximum.
IEADMR00
The IEADMR00 member of SYS1.PARMLIB is used to gather dump data.
IKJTSOxx
One of the functions of the IKJTSOxx member of SYS1.PARMLIB is to specify the
commands and programs to run on the TSO/E command and program invocation
platform. These commands are included as entries in the PLATCMD and
PLATPGM statements of that member.
Restriction: Do not list any of the z/OS UNIX TSO/E commands, including OGET,
OPUT, OCOPY, BPXBATCH, MOUNT, UNMOUNT, MKDIR, MKNOD, and OMVS
as PLATCMD entries.
SMFPRMxx
To have z/OS shell users be timed out and logged off, you can use the PWT
parmlib option, the _BPXK_TIMEOUT environment variable, or the TMOUT
The PWT and _BPXK_TIMEOUT options will affect shell users waiting in the shell
and also processes (such as vi or oedit) executing in the shell. The TMOUT
environment variable will only affect shell users waiting in the shell. When both
PWT and TMOUT are specified, TMOUT is only honored when it is less than the
JWT, TWT, and SWT values of SMFPRMxx. For example, if SMFPRMxx
JWT=(0010) (10 minutes), PWT=SMF (honor the JWT value), and TMOUT=300 (5
minutes), the shell user will be timed out in 5 minutes.
The system administrator can set a TMOUT value in /etc/profile. The user can
override that value by specifying a TMOUT value in their .profile. The TMOUT
environment variable contains the number of seconds before user input times out
while the z/OS shell is waiting for input at the prompt. If user input is not
received, the z/OS shell ends.
To have z/OS shell users be timed out and logged off, you must specify the
TMOUT environment variable in /etc/profile. The TMOUT environment variable
contains the number of seconds before user input times out while the z/OS shell is
waiting for input at the prompt. If user input is not received, the z/OS shell ends.
Restriction: The time out value for a TSO user logging into the z/OS UNIX shell
with option NOSHAREAS will be more than the JWT value or TWT value when
TWT is specified greater than JWT. When z/OS UNIX is started with
NOSHAREAS, the sh session is in a different address space than the TSO user. If
JWT is set to 10 minutes and TWT is set to 20 minutes and there is no terminal
activity, the sh session will time out in 10 minutes and the TSO user will time out
20 minutes after that.
To have tcsh shell users be timed out and logged off, you must specify the
autologout variable in /etc/csh.cshrc or /etc/csh.login. The autologout variable
contains the number of minutes before user input times out while the tcsh shell is
waiting for input at the prompt. If user input is not received, the tcsh shell ends.
Customizing /etc
The /etc file system is the location for your own customization data for products.
You set up the /etc files and you maintain their content. You must copy the files
listed in Table 5 to the specified directory. These files are used during system
initialization.
Table 5. Copying /samples/rc and /samples/init.options to /etc/rc and /etc/init.options. This
table shows the corresponding file when copying /samples/rc and /samples/init.options
Copied from: To:
/samples/rc /etc/rc
/samples/init.options /etc/init.options
In the EXEC statement in the procedure, the PGM parameter identifies the name of
the initialization module. The REGION=0K parameter specifies that the kernel is to
use all of the available private area storage within the kernel address space. The
TIME=NOLIMIT parameter specifies that kernel is to have unlimited processor
time.
Though not recommended, you can replace the OMVS procedure with a procedure
that has a different name. If you use a started procedure other than OMVS,
v The replacement started procedure must also be a single job step procedure that
invokes the BPXINIT program (EXEC PGM=BPXINIT). If it invokes any other
program, OMVS initialization will fail.
v You must change the procedure name in the RACF started procedures table or
change the definition in the STARTED Class. See “Steps for preparing RACF” on
page 54.
Started subtasks such as OMVS, BPXOINIT, and colony address spaces fall under
SUBSYS STC. These address spaces might be subject to IEFUSI limitations if
IEFUSI exits are allowed for SUBSYS STC. IBM strongly recommends that you
always set REGION=0 and MEMLIMIT=NOLIMIT for OMVS, BPXOINIT, and
colony address spaces.
Some physical file systems cannot be initialized in colony address spaces; for
example, the INET or CINET sockets file systems and HFS.
For the complete sample NFS client cataloged procedure, see z/OS Network File
System Guide and Reference.
where:
v The first value is required and is a 1-to-8-character name in SYS1.PROCLIB.
v The second value is optional and is a quoted string that is appended to the
procname when the address space is started. The string can be up to 100
characters long.
The start_parms are not validated; they are just passed to the system when the
address space is started with an internal start command as in
procname,start_parms. For example:
ASNAME (NFSCLNT,’SUB=MSTR’)
The colony address space runs outside of JES control and does not have to be
stopped if JES has to be stopped, which facilitates planned shutdowns of
individual systems in a sysplex that has shared file systems. The NFS Client, TFS,
and zFS physical file systems support running outside of JES and the following
information might help you to decide whether to move these z/OS UNIX colonies
outside of JES. The DFS Client PFS does not support being started outside of JES.
z/OS UNIX colony address spaces are started procedures. If you do not want to
run them under JES, you will need to change any DD SYSOUT= data sets that are
specified in these procedures. These must be changed because SYSOUT data sets
are only supported under JES. There are three ways you can change these data
sets:
1. Direct the output to a named data set by changing to DD DSN=.
2. Direct the output to a named file by changing to DD PATH=.
3. Throw the output away by changing to DD DUMMY.
Restriction: If the NFS or zFS colony address space is started at IPL time, then
PATH= cannot be used because the MOUNT statements have not been processed
yet.
If any of these names are not currently used in the colony procedure, you must
add them with DD DUMMY.
If any of the existing DD SYSOUT= statements are not changed, or any of those
dynamically allocated by Language Environment are not added, and an attempt is
made to open that DD name, the result will be an ABENDS013. Exactly which DD
names are opened and when varies by name and product and the situation.
There are also other consequences of running outside of JES that you might need
to consider:
v SDSF displays will not list the colony address space.
v There will be no JOBLOG or system messages data set.
v System messages will go to SYSLOG.
v SMF recording is different between JES and the master subsystem.
For information about setting up security for the colony address space, see Step 6
on page 57.
Guideline: Because TFS uses virtual memory, your real and auxiliary storage
configurations must be large enough to accommodate the size of all of the
temporary file systems that you mount.
When you are done, you have created a cataloged procedure for a temporary file
system.
Some tips:
1. A temporary file system uses private storage for the file system in memory. If
you run it in the kernel, then you might run out of virtual memory. However,
by starting multiple temporary file systems in colonies, you can create many
temporary files or very large temporary files (about 1.5 gigabytes per
temporary file system colony).
2. Code REGION=0K, REGIONS=0M, or a specific MEMLIMIT value on the EXEC
statement in the TFS colony cataloged procedure. Doing so allows the TFS
address space to address storage above the bar for the TFS file system. For
more information about the MEMLIMIT parameter, see z/OS MVS Programming:
Extended Addressability Guide.
To use the Japanese translation of the panels, messages, and tables, you must
concatenate the following target libraries to the appropriate ISPF data definition
names (ddnames):
v SYS1.SBPXPJPN concatenated to ISPPLIB
v SYS1.SBPXMJPN concatenated to ISPMLIB
v SYS1.SBPXTJPN concatenated to ISPTLIB
v SYS1.KHELP concatenated to SYSHELP
For more information about translation into Japanese, see Chapter 9, “Customizing
for your national code page in the shell,” on page 247.
Although the user can invoke these TSO/E commands from a TSO/E command
line, most users invoke TSO/E commands or programs from an ISPF menu. For
% 1F - Browse files
% 2F - Edit files
% ISH - ISPF Shell
)INIT
HELP = ISR00003
)PROC
IF (&ZCMD ¬= ’ ’)
&ZQ = TRUNC(&ZCMD,’.’)
IF (&ZQ = ’ ’)
.MSG = ISRU000
&ZSEL = TRANS( TRUNC (&ZCMD,’.’)
0, ’PANEL(ISPOPTA)’
1F,’CMD(OBROWSE)’
2F,’CMD(OEDIT)’
ISH,’CMD(ISHELL)’
’ ’,’ ’
*,’?’ )
)END
Be sure that the symbol at the start of this statement (1F in this example))
matches the number specified in the list of options.
3. Add a statement to the list of options for edit files. Include a selection number
with the statement. In this example, the statement is:
% 2F - Edit files
4. Add a statement to the )PROC section of the panel to invoke OEDIT. In this
example, the statement is:
2F,’CMD(OEDIT)’
Be sure that the symbol at the start of this statement (2F in this example)
matches the number that is specified in the list of options.
5. Add a statement to the list of options for the ISPF shell. Include a selection
number with the statement. In this example, the statement is:
% ISH - ISPF shell
Tip: If you customize your ISPF TSO Command Table (ISPTCM) to make your
default flag differ from the ISPF default of 61, you might have to create new
entries in your ISPTCM for some of the TSO/E commands that specify FLAG=61.
The OEDIT and OBROWSE commands do not run with some flag values. You can
correct this by adding ISPTCM entries for BPXWBRWS and BPXWEDIT, restoring
the ISPF defaults. If you changed the defaults and do not experience problems
with those commands, you should not have to add ISPTCM entries to restore
defaults for those commands.
See z/OS ISPF Dialog Developer's Guide and Reference for information about
modifying ISPF selection panels.
For example, when using a PC emulator to interactively log into an ASCII UNIX
operating system, a user will:
v On the PC, change the emulator's coded character set to match the coded
character set of the remote session's locale.
v In the UNIX shell, assign the environment variable LC_ALL to a new locale,
where the ASCII coded character set of that locale matches the emulator's
setting.
When interactively logging into an EBCDIC z/OS UNIX operating system, the user
will:
v On the PC, change the emulator's coded character set to match the ASCII coded
character set of the remote session's locale. For example, the user might change
the translation settings in their emulator to use coded character set ISO/IEC
8859-2 (Latin-2).
v In the UNIX shell:
– Assign the environment variable LC_ALL to a new locale, whose EBCDIC
coded character set is compatible with the ASCII coded character set used in
the emulator. To determine if a coded character set is compatible with a
particular locale, refer to the information about locales that are supplied with
z/OS XL C/C++ in z/OS XL C/C++ Programming Guide .
For example, a user might issue:
export LC_ALL=Hu_HU.IBM-1165
– If a tty is allocated, issue the chcp command to assign the EBCDIC and ASCII
coded character sets, as appropriate. Note that the specified ASCII coded
character set should match that of the client emulator's setting.
For example, a user might issue:
Your installation might need to meet the United States Department of Defense
Class C2 criteria specified in Department of Defense Trusted Computer System
Evaluation Criteria, DoD 5200.28-STD. RACF provides the system integrity and user
isolation required to meet the requirements for C2-level security.
Additionally, multilevel security functions for z/OS systems build on the work
done on MVS to meet the B1 criteria. Using multilevel security, an installation can
provide a high level of security on a z/OS system. For more information about
multilevel security, refer to z/OS Planning for Multilevel Security and the Common
Criteria.
List of subtasks
Subtasks Associated procedure
Preparing RACF “Steps for preparing RACF” on page 54
Defining z/OS users to RACF “Steps for defining z/OS UNIX users to
RACF” on page 60
Managing group identifiers and user “Steps for obtaining security information
identifiers (GIDs and UIDs) about users” on page 65
If you require a high level of security in your z/OS system and do not want
superusers to have access to z/OS resources such as SYS1.PROCLIB, read the
following topics:
v “Comparing UNIX security and z/OS UNIX security” on page 333.
v “Establishing the correct level of security for daemons” on page 335.
Preparing RACF
The security administrator needs to prepare RACF to provide security and to
define users to RACF. To be a z/OS UNIX user, the user's default group must be a
z/OS UNIX group.
If you add any other entries after this, you issue SETROPTS
RACLIST(STARTED) REFRESH and they will be picked up on the next START.
This defines the BPXOINIT task to run under the user ID OMVSKERN,
which should be NOPASSWORD.
– Add the following entries to ICHRIN03.
DC CL8’OMVS’ PROCEDURE NAME
DC CL8’OMVSKERN’ USERID (ANY RACF-DEFINED USER ID)
DC CL8’OMVSGRP’ GROUP NAME OR BLANKS FOR USER’S DEFAULT GROUP
DC XL1’40’ TRUSTED ATTRIBUTE BIT
DC XL7’00’ RESERVED
v If OMVS is not a trusted procedure, add OMVS without making it trusted,
using one of the following methods. (See step 5 on page 57 for additional
measures needed if the kernel is not trusted.)
– Add it to the RACF STARTED class:
SETROPTS GENERIC(STARTED)
RDEFINE STARTED OMVS.* STDATA(USER(OMVSKERN) GROUP(OMVSGRP)
TRUSTED(NO))
SETROPTS CLASSACT(STARTED) RACLIST(STARTED)
When you are done, you have prepared RACF for z/OS UNIX.
For complete information about auditing in the RACF environment, see z/OS
Security Server RACF Auditor's Guide.
For more information about list-of-groups checking, see z/OS Security Server RACF
Security Administrator's Guide.
Restriction: The limit on the number of user IDs that can share a UID when the
RACF database is using AIM is 129.
This task explains the steps for defining z/OS UNIX to RACF
Before you begin: You need to log on the user ID with RACF SPECIAL authority.
Procedure
1. Authorize a user to z/OS UNIX by entering:
v A RACF ADDUSER command for each new user to be given access to z/OS
UNIX resources. The ADDUSER command creates a RACF user profile.
v A RACF ALTUSER command for each current user who is to be given access
to z/OS UNIX resources. The ALTUSER command changes a current RACF
user profile.
To provide access to z/OS UNIX resources, both ADDUSER and ALTUSER
have an OMVS parameter. The UID subparameter specifies the UID, while the
AUTOUID subparameter specifies that RACF is to assign an unused UID value.
_______________________________________________________________
2. Assign a home directory for each user through the HOME subparameter on the
ADDUSER or ALTUSER command.
Example: If the home directory is /u/john, specify:
HOME(’/u/john’)
The home directory should be fully qualified ('/u/john'). If a home directory is
partially specified (for example, john) problems might during process
initialization. Then create that home directory for each user. The home
directory, like all file names, is case-sensitive. It is recommended that the user
name in the home directory be entered in lowercase.
Alternatively, you can use the ISPF shell to define a home directory for each
user.
Example: If the home directory is the root, specify:
HOME(’/’)
In similar open systems, the directory used for users is /u and the name of the
user's home directory is the username associated with the user. In a z/OS
system, the user name is the user ID:
v If a user accesses the shell from TSO/E, the user ID is folded to uppercase
v With rlogin, the user ID is case-sensitive. If the alias table
(USERIDALIASTABLE) is not set up, then case does not matter and the user
ID is folded. If the alias table is being used and the user ID is found in it,
then the case-sensitive user ID for UNIX activity is used.
_______________________________________________________________
3. Specify an initial program for each user through the PROGRAM subparameter
of the ADDUSER or ALTUSER command.
Results
When you are done, you have defined z/OS UNIX users to RACF.
In similar open systems, the /etc/passwd file contains definitions for the HOME,
SHELL, and LOGNAME environment variables. z/OS UNIX provides better
security by keeping these values in the RACF user profile.
The DFLTGRP parameter places user ID JOHN in the RACF group ENGNGP7,
which has a GID of 678. The OMVS parameter on the ADDUSER command does
the following:
v Gives JOHN an UID of 314.
v Invokes the shell in the file /bin/sh when John Doe enters a TSO/E OMVS
command.
v Gives JOHN a home directory of /u/john. The home directory needs to be added
to the file system.
On an open system, a working directory is normally defined in lowercase letters
and typically has the user's user ID as its name—for example, /u/john. If a REXX
Before users and groups can request access to z/OS UNIX services, the OMVS
segments of the profiles associated with them must be defined.
Figure 9 on page 63 illustrates how the unique UID assignment process derives the
UID and GID values from the BPX.NEXT.USER profile and saves the values in the
OMVS segment for the user profile (MYUSER) and the OMVS segment for the
group profile (MYGROUP). The figure also shows how a user profile indicated in
the BPX.UNIQUE.USER profile can be the source of other OMVS information
copied to the user profile (MYUSER).
BPX.UNIQUE.USER BPX.NEXT.USER
USER00 101/505
APPLDATA APPLDATA
MYUSER
101 /bin/sh /tmp ...
UID PROGRAM HOME MEMLIMIT,
and so on
USER00
99 /bin/sh /tmp ...
UID PROGRAM HOME MEMLIMIT,
and so on
For the requirements to enable automatic UID and GID assignment, see the section
on enabling the automatic assignment of UNIX identities in z/OS Security Server
RACF Security Administrator's Guide.
You can specify the RACF string &racuid as a placeholder for the user ID in the
home directory path name. When RACF creates the OMVS segment, it will
substitute the user ID for which the OMVS segment is being created. When
automount is implemented, a user file system will be is allocated, mounted, and
assigned the user ID as its owner. For more information about specifying &racuid
and considerations for sharing the RACF database, see the topic on automatic
assignment in z/OS Security Server RACF Security Administrator's Guide.
Security implications
Executable programs are generally categorized as coming from authorized or
unauthorized libraries. Programs in authorized libraries are considered safe for
anyone to run. That is, the code should be free of viruses and should uphold the
integrity and security classification of the operating system.
Users must have a UID and GID defined when entering the TSO/E OMVS
command and for certain kernel services.
Users also need search authority to all directories in the path name for their home
directory. Set these permissions for each directory using the chmod command and
either the MODE operand of the TSO/E MKDIR command or the mode option of
the mkdir command that creates a directory. For more information, see
“Controlling access to files and directories” on page 91.
Perform the following steps to check the OMVS security information for a group.
1. Log on to your user ID.
_______________________________________________________________
2. Issue a RACF LISTGRP command with the OMVS operand and the RACF
group name.
Example: To list the GID information for the RACF group ENGNP7:
LISTGRP ENGNGP7 OMVS NORACF
_______________________________________________________________
You should now see information from the RACF group profile. If the RACF group
was assigned a GID, the profile identifies the GID. All groups that OMVS users
belong to should have OMVS GIDs.
Perform the following steps to check the OMVS segment of the security
information for a user.
1. Log on to your user ID.
_______________________________________________________________
2. Issue a RACF LISTUSER command with the OMVS operand and the user ID.
Example: To list the OMVS information for user ID JOHN:
LISTUSER JOHN OMVS NORACF
_______________________________________________________________
You should now see lists from the user's RACF user profile the fields the user has
authority to see. The fields can be:
v The OMVS UID
v The user's home directory
v The program (typically the shell, called when the user invokes it by using the
TSO/E OMVS command, rlogin, or telnet)
Perform the following steps to set up field-level access for the OMVS segment of a
user profile.
1. Define a profile for each of the OMVS fields with a RACF RDEFINE command.
For example:
RDEFINE FIELD USER.OMVS.UID UACC(NONE)
RDEFINE FIELD USER.OMVS.HOME UACC(NONE)
RDEFINE FIELD USER.OMVS.PROGRAM UACC(NONE)
RDEFINE FIELD USER.OMVS.CPUTIME UACC(NONE)
RDEFINE FIELD USER.OMVS.ASSIZE UACC(NONE
RDEFINE FIELD USER.OMVS.FILEPROC UACC(NONE)
RDEFINE FIELD USER.OMVS.PROCUSER UACC(NONE)
RDEFINE FIELD USER.OMVS.THREADS UACC(NONE)
RDEFINE FIELD USER.OMVS.MMAPAREA UACC(NONE)
RDEFINE FIELD USER.OMVS.MEMLIMIT UACC(NONE)
RDEFINE FIELD USER.OMVS.SHMEMMAX UACC(NONE)
_______________________________________________________________
2. Permit users to access the fields with RACF PERMIT commands.
Example: The following example shows commands for the three fields.
v &RACUID allows all users to look at their own fields.
v READ access allows users to read the UID field.
v UPDATE access allows users to change their home directory in the HOME
field or the program invoked for a TSO/E OMVS command in the
PROGRAM field.
Give only selected users update access to the UID field and the user limits
field. Users with UPDATE access can become a superuser by changing the UID
to 0.
PERMIT USER.OMVS.UID CLASS(FIELD) ID(&RACUID) ACCESS(READ)
PERMIT USER.OMVS.HOME CLASS(FIELD) ID(&RACUID) ACCESS(UPDATE)
PERMIT USER.OMVS.PROGRAM CLASS(FIELD) ID(&RACUID) ACCESS(UPDATE)
_______________________________________________________________
3. Activate the FIELD class with the RACF SETROPTS command. For example:
SETROPTS CLASSACT(FIELD) RACLIST(FIELD)
_______________________________________________________________
When you are done, you have set up field level access.
For the other parameters on the RDEFINE, PERMIT, and SETROPTS commands,
see z/OS Security Server RACF Command Language Reference.
Restriction: The limit on the number of groups that can share a GID when the
RACF database is using AIM is 129.
Guideline: Do not assign the same GID to multiple RACF groups. If you
do,control at an individual group level is lost because the GID is used in z/OS
UNIX security checks. RACF groups that have the same GID assignment are
treated as a single group during z/OS UNIX security checks. They must use the
SHARED keyword of the RACF ADDGROUP or ALTGROUP command if the
SHARED.IDS profile is defined in the UNIXPRIV class. For more information
about SHARED.IDS, see z/OS Security Server RACF Security Administrator's Guide.
If you are using NFS, see “Assigning UIDs and GIDs in an NFS network” on page
69 for more information.
For special considerations when using the RACF list-of-groups checking (GRPLIST)
option for access to the files and directories in the z/OS UNIX file system, see z/OS
Security Server RACF Security Administrator's Guide.
Rule: When assigning a UID to a user, make sure that the user is connected to at
least one group that has an assigned GID. This group should be either the user's
default group or one that the user specifies during logon or on the batch job. A
user with a UID and a current connect group with a GID can use z/OS UNIX
functions and access z/OS UNIX files based on the assigned UID and GID values.
If a UID and a GID are not available as described, the user cannot use z/OS UNIX
functions.
If you are using NFS, see “Assigning UIDs and GIDs in an NFS network” on page
69 for more information.
By default, RACF does not prevent the sharing of UIDs and GIDs. However, you
can enforce unique UNIX identifiers by defining a profile called SHARED.IDS in
the UNIXPRIV class. For more information about SHARED.IDS, see z/OS Security
Server RACF Security Administrator's Guide.
Specify limits for z/OS UNIX users by choosing options on the ADDUSER or
ALTUSER commands. The limits are stored in the OMVS segment of the user
profile. You can set the following limits in the OMVS user segment:
ASSIZEMAX
Maximum address space size (RLIMIT_AS)
CPUTIMEMAX
Maximum CPU time (RLIMIT_CPU)
FILEPROCMAX
Maximum number of concurrently open files per process
MEMLIMIT
Maximum size of storage above the bar
MMAPAREAMAX
Maximum memory map size
PROCUSERMAX
Maximum number of processes for this UID
SHMEMMAX
Maximum size of shared memory
THREADSMAX
Maximum number of threads per process
After you set individual user limits for users who require higher resource limits,
you should consider removing their superuser authority, if they have any. You
should also reevaluate your installation's BPXPRMxx limits and consider reducing
these limits. See “Customizing the BPXPRMxx member of SYS1.PARMLIB” on
page 23 for more information.
Rule: Give this group a unique GID and do not connect users to this group.
Tip: To make it easier to transport the data sets from test systems to production
systems, check that this entry is duplicated in all of your security data bases,
including the same UID and GID values in the OMVS segment.
If you assign users the same UID, you should warn them of the effects. For UID(0),
the effects are less significant, because superusers have access to all processes and
files and because most BPXPRMxx limits are not enforced against superusers.
To assign a non-unique UID, you can use the SHARED keyword of the RACF
ADDGROUP or ALTGROUP command if the SHARED.IDS profile is defined in the
UNIXPRIV class.
To assign a non-unique GID, you can use the SHARED keyword of the RACF
ADDGROUP or ALTGROUP command if the SHARED.IDS profile is defined in the
UNIXPRIV class.
When using pax or tar, UIDs and GIDs greater than 2,097,151 will not be restored
correctly unless one of the following conditions are met:
v The archive is created using the pax format with the pax command.
v The archive is created using the USTAR format and the user or group name
associated with the UID or GID exists on the target system. However, an
incorrect UID or GID might be restored. The reason that might happen is
described next.
When restoring a UID or GID, if the pax or USTAR format was used during
writing, pax and tar will first attempt to set the UID or GID during the restore
using the user or group name stored in the archive. (Of course, the user must have
the appropriate privileges to set the UID or GID). If this name is defined on the
target system, then the UID or GID is set to whatever UID or GID is associated
with the name defined on the target system. (The UID or GID is set, whether or
If the user or group name is not defined on the target system, or if the archive is
using the original tar format, then the UID or GID stored in the archive is used. If
the UID or GID was originally greater than 2,097,151, and the archive was not
created with the pax format, then the archive contains an incorrect version of the
UID or GID value due to truncation. This situation will then result in that same
incorrect UID or GID value being restored. However, if the archive was created
with the pax format, then the original correct UID or GID is restored. The correct
values are restored because the pax format supports UID or GID values up to 2147
483647.
In summary, large UIDs and GIDs might not be correctly restored by pax and tar.
Using the pax format (the preferred method) can avoid this situation, because it
supports values up to 2,147,483,647. (the maximum supported by RACF). Using the
USTAR format might also avoid this situation, but only if the target system has the
same user or group name defined and that name represents the same user or
group as it did on the source system. Or, use UID or GID values within the limits
for the archive format being used. See the description of pax and tar in z/OS UNIX
System Services Command Reference for more information about these commands.
Perform the following steps to define RACF groups that can be used as z/OS
UNIX groups.
1. Log on to the user ID with RACF SPECIAL authority.
_______________________________________________________________
2. Issue one of the following commands. Base your choice on your particular
situation.
This table shows the tasks for creating z/OS UNIX groups.
If you want to . . . Then issue. . .
Define a new RACF group profile and The ADDGROUP command.
have it be used as a z/OS UNIX group
Example: To define a RACF group profile
named SYS1 and to give it a GID of 575, issue:
ADDGROUP OMVSGRP SUPGROUP(SYS1)
OWNER(SYS1) OMVS(GID(575))
Tip: For useful reports and auditing, assign a unique GID to each RACF group
name. Reports for the RACF group name will then supply information about
the corresponding GID.
_______________________________________________________________
When you are done, you have created a z/OS UNIX group. When the user
connects to the system (for example, logs on to a TSO/E session), one group is
selected as the user's current group. When a user becomes a z/OS UNIX user, the
GID of the user's current group becomes the effective GID of the user's process.
The user can access resources available to members of the user's effective GID.
When not doing activities that require superuser authority, the superuser joins the
majority of users or programs with user authority, which permits access to their
own files and certain files to which they have access, according to permission bits.
Rule: The user ID associated with a started procedure needing superuser authority
must have a UID, but the UID can have any value. Users running with the trusted
or privileged attribute are considered superusers even if their assigned UID is a
value other than 0.
The parent process propagates its UID and TRUSTED or PRIVILEGED attribute to
a forked child process. Thus, a UID of 0 is propagated to a forked child.
While some functions require a UID of 0, in most cases you can choose among the
three ways. When choosing among them, try to minimize the number of "human"
user IDs (as opposed to started procedures) set up with UID(0) superuser
authority. To summarize the choices, UID(0) gives you access to all UNIX functions
and resources, as is true for all UNIX systems. However, in z/OS, RACF allows
certain users to perform specific privileged functions without being defined as
UID(0). BPX.SUPERUSER allows you to request that you be given such access, but
you do not have the access unless you make the request. And, the UNIXPRIV class
allows you to do other privileged functions, such as mounting a file system. Both
these definitions are similar to having UID(0) in that, before RACF grants access to
a system resource or use of it, the system checks these definitions.
Do not confuse superuser authority with MVS supervisor state. Being a superuser
is not related to supervisor state, PSW key 0, and using APF-authorized
instructions, macros, and callable services.
Resource names in the UNIXPRIV class are associated with z/OS UNIX privileges.
You must define profiles in the UNIXPRIV class protecting these resources in order
to use RACF authorization to grant z/OS UNIX privileges. The UNIXPRIV class
must be active and SETROPTS RACLIST must be in effect for the UNIXPRIV class.
Global access checking is not used for authorization checking to UNIXPRIV
resources.
Table 7 shows each resource name available in the UNIXPRIV class, the z/OS
UNIX privilege associated with each resource, and the level of access required to
grant the privilege.
Table 7. Resource names in the UNIXPRIV class for z/OS UNIX privileges
Minimum access
Resource name z/OS UNIX privilege required
CHOWN.UNRESTRICTED1 Allows users to use the chown command to None required
transfer ownership of their own files.
If you do not activate the UNIXPRIV class and activate SETROPTS RACLIST
processing for the UNIXPRIV class, only superusers are allowed to transfer
ownership of any file.
_______________________________________________________________
4. Activate SETROPTS RACLIST processing for the UNIXPRIV class, if it is not
already active.
When you are done, you have authorized selected users to transfer ownership of
any file.
To allow z/OS UNIX users to transfer ownership of files they own to any UID or
GID on the system, create a discrete profile in the UNIXPRIV class called
CHOWN.UNRESTRICTED, and permit users with the appropriate access.
If you do not activate the UNIXPRIV class and activate SETROPTS RACLIST
processing for the UNIXPRIV class, only superusers are allowed to transfer
ownership of files to others.
_______________________________________________________________
3. Activate the SETROPTS RACLIST processing for the UNIXPRIV class, if it is
not already active.
SETROPTS RACLIST(UNIXPRIV)
When you are done, you have set up the BPX.SUPERUSER resource in the
FACILITY class and permitted the users who need to have superuser authority.
When they need to perform superuser tasks, they can switch to superuser mode
using the su command or the "Enable superuser mode (SU)" option in the ISPF
shell.
Rule: To run SMP/E jobs, the user must have UID(0) or be permitted to the
BPX.SUPERUSER resource in the FACILITY class.
_______________________________________________________________
2. Permit the user to the BPX.SUPERUSER resource in the FACILITY class.
Example: For user ID John:
PERMIT BPX.SUPERUSER CLASS(FACILITY) ID(JOHN) ACCESS(READ)
Tip: You can choose to RACLIST the FACILITY class afterward. This step is
optional. If you do so, then you will have to do a REFRESH after the user ID is
permitted to the FACILITY class. For example:
SETROPTS RACLIST(FACILITY) REFRESH
_______________________________________________________________
3. Change the ownership of the user's private files to the new UID. These files are
typically those defined in the home directory.
Example: The home directory is /u/john. Issue the following command to
update the ownership of the files.
cd /u/john
chown -R john /u/john
Result: The owning UID of the /u/john directory is changed to 7. The owning
UID of all files and subdirectories of the /u/john directory is also changed.
Tip: The chown command requires a UID of 0, the ability to su to 0, or
authority to SUPERUSER.FILESYS.CHOWN.
_______________________________________________________________
When you are done, you have changed the superuser from a UID of 0 to a unique
nonzero UID.
You can use any of the following methods to gain superuser authority:
v Enter the shell using the OMVS command and then issue the su command with
no operands. This creates a nested shell that runs with superuser authority.
Programs that change the security environment cannot run in a multiprocess
address space.
Tip: When running in this manner, editing a file with the OEDIT command
(OEDIT with PF6) returns you to the TSO/E address space where your original
authority is still in place.
This pipes the result of the echo command (that is, the copy command) into
the su command.
– With PARM=’SH su’, code:
//STDIN DD PATH ’/yourpath/input.stuff’,PATHOPTS=(ORDONLY)
– With no parameters coded at all, create a file that has the su command in it.
//BATBPX1 EXEC PGM=BPXBATCH
//STDIN DD PATH=’/yourpath/suinput.stuff’,PATHOPTS=(ORDONLY)
In the suinput.stuff section, you would have the su command followed by the
copy command. These are commands as you would have entered them from
the console if you had been running in the z/OS UNIX shell.
Also, when you set up your own $HOME/.profile as superuser, specify the
/usr/sbin directory in your PATH environment variable because certain superuser
utilities are in that directory instead of the /bin directory, such as automount. For
more information about the profile, see “Customizing $HOME/.profile” on page
225.
Assigning a UID of 0
Although sometimes appropriate, the least desirable method of defining superusers
is to assign a UID of 0 in the UID parameter in the OMVS segment of the
ADDUSER or ALTUSER commands. In this environment, you risk entering
commands that can damage the file system.
Example: In the following example, the ALTUSER command gives the user ID
SMORG superuser authority, makes the root directory the home directory, and
causes invocation of the shell in response to a TSO/E OMVS command. If the shell
is to be installed, specify the HOME and PROGRAM parameters; if a shell is not to
be installed, omit the HOME parameter. This user must be in a RACF group,
typically SYS1, and the group must have an OMVS GID associated with it.
ALTUSER SMORG OMVS(UID(0) HOME(’/’) PROGRAM(’/bin/sh’))
ALTGROUP SYS1 OMVS(GID(0))
You might choose to assign UID(0) to multiple RACF user IDs. However, try to
minimize the use of UID(0). Assignment of UID(0) should be limited to the user
associated with started procedures such as the OMVS kernel and the user who
installs the ServerPac. It should be avoided for the user IDs belonging to the real
users whenever possible.
Tip: If the SHARED.IDS profile is defined in the UNIXPRIV class, you might need
to use the SHARED keyword because UID(0) is likely to be used by several IDs.
For example:
ALTUSER SMORG OMVS(UID(0) SHARED HOME(’/’) PROGRAM(’/bin/sh’))
To activate RACF control of UNIX functions, use the RACF SETROPTS CLASSACT
FACILITY command. Permit your authorized users to the appropriate resources
before you activate the FACILITY class or else users will be not be able to use
protected UNIX functions.
For security reasons, you might need to define these class profiles. All of the
following are FACILITY class profiles, with the exception of BPX.SRV, which is a
SURROGAT class profile.
v BPX.CF
Controls access to the _cpl service.
v BPX.CONSOLE
Allows a permitted user the ability to use the _console() or _console2() services.
v BPX.DAEMON
As a result, all unauthorized callers can pass an argument greater than 100
characters to any authorized program that begins with the characters MYP.
To allow all unauthorized users the ability to pass any argument up to 4096
characters long to any authorized program, then define one profile:
BPX.EXECMVSAPF.*
Table 8 lists whether the caller is permitted to use the services with the indicated
profile if that profile is defined and if the caller's user ID is permitted to the
specified RACF FACILITY class profile.
v YES indicates that the caller is permitted to use the services associated with the
profile.
v NO indicates that the caller is not permitted to use the services associated with
the profile.
For example, if BPX.DAEMON is not defined and the caller has a UID of 0, then
that caller would be permitted to use setuid. However, if BPX.DAEMON is defined
and the caller is permitted to it but has a nonzero UID, then that caller would not
be permitted to use setuid.
Table 8. Permissions for defined and undefined FACILITY class profiles
Profile is not defined Profile is defined
(Not applicable) Not permitted Permitted
If UID(0) If not UID(0) If UID(0) If not UID(0) If UID(0) If not UID(0)
BPX.CF No No No No Yes Yes
BPX.CONSOLE (1) Yes No Yes No Yes Yes
BPX.DAEMON Yes No No No Yes No
BPX.DAEMON.HFSCTL No No No No Yes Yes
BPX.DEBUG No No No No Yes Yes
BPX.EXECMVSAPF.program_name No No Yes Yes Yes Yes
BPX.FILEATTR.APF No No No No Yes Yes
BPX.FILEATTR.PROGCTL No No No No Yes Yes
BPX.FILEATTR.SHARELIB No No No No Yes Yes
BPX.JOBNAME Yes No Yes No Yes Yes
BPX.MAINCHECK No No Yes Yes Yes Yes
BPX.MAP Yes No No No Yes Yes
BPX.NEXT.USER (2) – – – – – –
The following topics describe how to define these IDs to RACF. (If you are using
an equivalent security product, refer to that product's documentation.) All the
RACF commands are issued by a user ID with RACF SPECIAL authority. Three
procedures are described:
v “If you use uppercase group and user IDs”
v “If you use mixed-case group and user IDs” on page 89
v “If you have problems with names such as UUCP, UUCPG, and TTY” on page
89
where
v 396 is an example of a unique OMVS UID. Do not use UID(0).
v HOME(’/usr/spool/uucppublic’) is a required parameter that specifies the
initial directory path name for the user ID.
v PROGRAM(’/bin/sh’) is a required parameter that specifies the path name in
the shell program for the user ID.
It is not necessary to add the lowercase or mixed-case names to your alias table,
mapping them to uppercase. Using the alias table degrades performance and
increases systems management and complexity. When lowercase or mixed-case
names are not found in the alias table, or there is no table active, they are folded to
uppercase. For more information about the alias table, see “USERIDALIASTABLE”
on page 38.
where:
v 396 is an example of a unique UID. Do not use UID(0).
v xxuucp is replaced by a user ID of your choice. This is a normal user ID
which owns all the UUCP files and directories. Use this user ID when editing
configuration files or performing other administrative tasks.
v HOME(’/usr/spool/uucppublic’) is a required parameter that specifies the
initial path name for the user ID.
where /etc/tablename is the name of your user ID alias table. You can also use
the SETOMVS operator command.
6. Specify USERIDALIASTABLE in your BPXPRMxx member to make this change
permanent for your next IPL.
7. Perform these tasks on all of your driving, test, and production system images.
Example: The following example gives RMFGAT a UID of 123 and designates the
root directory as its home directory:
ADDUSER RMFGAT DFLTGRP(OMVSGRP) OMVS(UID(123) HOME(’/’)) NOPASSWORD
The system does a security check for a file, FIFO special file (named pipe),
character special file, and directory. It does not check an unnamed pipe, because
this pipe can be accessed only by the parent process that created the pipe and by
child processes of the creating process. When the last process using an unnamed
pipe closes it, the pipe vanishes.
Every file and directory has security information, which consists of:
v File access permissions (including an ACL, if one exists)
v UID and GID of the file
v Audit options that the file owner can control
v Audit options that the security auditor can control
The file access permission bits that accompany each file provide discretionary
access control (DAC). These bits determine the type of access a user has to a file or
directory.
The following topics assume that ACLs are not being used. Go to “Using access
control lists (ACLs)” on page 96 for more information about ACLs.
By default, the system sets the UID and GID of the file when the file is created:
v The UID is set to the effective UID of the creating process.
v The GID is set to the GID of the owning directory. You can define
FILE.GROUPOWNER.SETGID to change this behavior; see “Steps for setting up
the FILE.GROUPOWNER.SETGID profile” on page 92.
If you want to specify that, by default, the group owner of a new file is to come
from the effective GID of the creating process, you need to set up a profile in the
UNIXPRIV class called FILE.GROUPOWNER.SETGID. “Steps for setting up the
FILE.GROUPOWNER.SETGID profile” describes the process.
When you are done, you have set up the FILE.GROUPOWNER.SETGID profile.
The set-gid bit for a directory determines how the group owner is initialized for
new objects created within the directory.
v If the set-gid bit is on, then the owning GID is set to that of the directory.
v If the set-gid bit is off, then the owning GID is set to the effective GID of the
process.
Tip: When a new file system is mounted, you must turn on the set-gid bit of its
root directory if you want new objects within the file system to have their group
owner set to that of the parent directory.
Accessing files
To access local files, users need:
v Read and search permission to all directories in the path names of files the user
should use. Read permission is required for some options of some commands.
v Write permission to all directories in which the user will be creating or deleting
files or directories.
v Read permission, write permission, or read and write permission, as appropriate
to all files that the user needs to access.
v Execute permission to executable files that the user needs to run.
With read permission, you can see the names of the entries stored in the directory
but you cannot see the attributes stored in the entries nor access the contents of the
directory. With search permission, you can read the attributes from a specific entry
and locate a specific entry of the directory.
The file owner or a superuser can use the chmod command or chmod() callable
service, or you can define a profile in the UNIXPRIV class to grant RACF
authorization. The file mode creation mask does not affect the permission value
that was specified by either chmod or chmod().
In a new file, both bits are set off. Also, if the owning UID or GID of a file is
changed or if the file is written in, the bits are turned off.
Protecting data
Local files and directories are protected by RACF security rules. You can use
permission bits to control access; access control lists (ACLs) can also be used in
conjunction with permission bits. For more information, see “Using access control
lists (ACLs)” on page 96.
Permission bit information is stored in the file security packet (FSP) within each
file and directory. (ACLs can also be stored with the file.) Permission bits allow
you to specify read authority, write authority, or search authority for a directory.
They also allow specification of read, write, or execute authority for a file. Because
there are three sets of bits, separate authorities can be specified for the owner of
the file or directory, the owning group, and everyone else (such as RACF's
universal access authority, or UACC). The owner is represented by a UID. The
owning group is represented by a GID. Access checking compares the user's UID
and GID to the ones stored in the FSP.
When a security decision is needed, the file system calls RACF and supplies the
FSP (and ACL, if one exists). RACF makes the decision, does any auditing, and
returns control to the file system. RACF does not provide commands to maintain
the FSP (and ACL). System Authorization Facility (SAF) services handle the FSP
(and ACL) maintenance. z/OS UNIX provides commands that invoke these SAF
services.
For information about using RACF authorization to grant privileges for use of local
files and directories, see Table 7 on page 73.
In response, the system displays the user ID and the RACF group name that
correspond to the file's UID and GID. The system displays the UID and GID only
if it cannot find the corresponding user ID and RACF group name.
T Third (other only) No execute permission for other, with sticky bit set
If you issue ls –E, it displays extended attributes for regular files. An additional
four characters follow the original 10 characters:
total 11
-rwxr-xr-x+ -ps- 1 ROOT SYS1 101 Mar 12 19:32 her
-rwxrwxrwx a-s- 1 ROOT SYS1 654 Mar 12 19:32 test
-rwxr-xr-x a--- 1 ROOT SYS1 40 Mar 12 19:32 temp
-rwxr--r-- ap-l 1 ROOT SYS1 572 Mar 12 19:32 foo
-rwxr--r-- --sl 1 ROOT SYS1 640 Mar 12 19:33 abc
The HFS, zFS, and TFS file systems support ACLs. It is possible that other physical
file systems will eventually support z/OS ACLs. Consult your file system
documentation to see if ACLs are supported.
Before you can begin using ACLs, you must know what security product is being
used. The ACLs are created and checked by RACF, not by the kernel or file system.
If a different security product is being used, you must check their documentation
to see if ACLs are supported and what rules are used when determining file
access.
Note:
Managing ACLs
Rules: You need to be aware of the following rules when managing ACLs for files
or directories.
v You must either be the file owner or have superuser authority (UID=0 or READ
access to SUPERUSER.FILESYS.CHANGEPERMS in the UNIXPRIV class).
v You must activate the FSSEC class before ACLs can be used in access decisions.
Example: The following RACF command activates the FSSEC class:
SETROPTS CLASSACT(FSSEC)
You can define ACLs prior to activating the FSSEC class. If you define default
ACLs, they can be inherited by new objects when the FSSEC class is inactive. If
the FSSEC class is not active, the standard POSIX permission bit checks are
done, even if an access ACL exists. You can still display ACL information.
The -m option modifies ACL entries, or adds them if they do not exist.
2. Display the ACL that was created in Step 1.
getfacl /etc/inetd.conf
#file: /etc/inetd.conf
#owner: BPXROOT
#group: SYS1
user::rw-
group::r--
other::r--
user:JOE:rw-
group:ADMINS:rw-
3. Perform the same operation as in Step 1, but at the same time, set the base
permission bits to prevent access by anyone other than the file owner.
setfacl -s user::rw-,group::---,other::---,user
user:joe:rw-,group:admins:rw- /etc/inetd.conf
The -s option replaces the contents of an ACL with the entries specified on the
command line. It requires that the base permissions be specified. The base
permissions are specified similarly to extended ACL entries, except that there is
no user or group name qualifier.
4. Delete the ACL that was created in Step 3.
setfacl -D a /etc/inetd.conf
The -D a option specifies that the access ACL is to be deleted. The permission
bits remain as specified in Step 3. When a file is deleted, its ACL is
automatically deleted; there is no additional extra administrative effort
required.
5. Take the ACL from FileA in the current directory, and apply it to FileB, also in
the current directory.
getfacl FileA | setfacl -S - FileB
The shell pipes the output of getfacl to the input of setfacl. The -S option of
setfacl says to replace the contents of the file's ACL with ACL entries specified
within a file, and the "-" is a special case file name designating stdin. Thus, you
can maintain a list of ACL entries within a file, and use that file as input to a
setfacl command. You might use this ability to implement a "named ACL" for a
given project, such as in Step 6.
6. The file /u/joeadmn/Admins contains a list of ACL entries for users and groups
who need to support some administrative work. The file contains ACL entries,
one per line, in the format that setfacl expects and which getfacl displays.
These people must be granted access to all of the directories within the file
system subtree starting and including /admin/work.
setfacl -S /u/joeadmn/Admins $(find /admin/work -type d)
This example uses shell command substitution to use the output of the find
command as input to the setfacl command. The /u/joeadmn/Admins file might,
for example, contain:
You can use the find command to search for various ACL criteria. In this
example, it is used to find files containing ACL entries for Ricky, in which
Ricky has at least read and write access.
Tip: You can use an access ACL on the parent directory to grant search access only
to those users and groups who should have file access. The access ACL of the
parent directory can have been automatically created as the result of a directory
default ACL on its parent. Make sure that the 'other' and perhaps the 'group'
search permission bit is off for the parent directory.
The entries contain an extra qualifier to designate the directory default ACL.
The groups named admins and dirgrp will automatically get access to any new
subdirectories created within /u/ProjectX. Creating a default ACL will not grant
access to directories that already exist.
2. Display the directory default ACL created in Step 1.
The -d option says to display only the extended ACL entries in the directory
default ACL.
3. Define a file default ACL for the directory named /u/ProjectX, and all of its
subdirectories.
setfacl -m fdefault:group:admins:r--, \
fdefault:group:dirgrp:rw- $(find /u/ProjectX -type d)
The extra entry qualifier in this case designates the file default ACL. The
groups named admins and dirgrp will automatically get access to any new files
created within the /u/ProjectX subtree. Creating a default ACL will not grant
access to files that already exist.
4. Display the contents of all of the ACL types for the directory named
/u/ProjectX.
getfacl -adf /u/ProjectX
#file: /u/ProjectX
#owner: TCPAUTO
#group: SYS1
user::rwx
group::r-x
other::r-x
user:JOE:--x
fdefault:group:ADMINS:r--
fdefault:group:DIRGRP:rwx
default:group:ADMINS:r-x
default:group:DIRGRP:rwx
This example requests the access ACL (the a option), the directory default ACL
(the d option), and the file default ACL (the f option). The base permission bits
are displayed when the a option is specified (or defaulted).
Guideline: Analyze your file system space utilization before implementing default
ACLs in your file system. If you use both file and directory default ACLs in every
directory in the file system, a separate physical ACL is created for every new file
and directory. Using an access ACL for every directory will probably not cause
concerns about space utilization. However, the same cannot be said of files,
especially if the inherited ACLs are large.
Tip: ACLs are not inherited across mount points. Suppose that you have a default
ACL defined on the directory /dir1/dir2. You decide to create another directory,
/dir1/dir2/dir3, and use it as a mount point on which to mount another file system.
However, if you do so, the root directory of the mounted file system will not
inherit the default ACL which had been established at /dir1/dir2. If you want the
default ACLs of dir2 to apply to dir3, you must copy them to dir3 after dir3 has
been mounted.
If the security product supports ACLs, it applies its own rules to the file access
request. RACF uses the permission bits, access ACL, and various UNIXPRIV class
profiles to determine whether the user is authorized to access the file with the
requested access level. Read about protecting file system resources in z/OS Security
Server RACF Security Administrator's Guide for details on how RACF uses ACLs
when enforcing file security.
The character strings '$SYSSECA/' and '$SYSSECR/' have special meaning to z/OS
UNIX when they appear as the first nine characters in a symbolic link. For more
information about the use of these strings, read about assigning a home directory
and initial program, depending on security label in z/OS Planning for Multilevel
Security and the Common Criteria .
Restriction: Use DFDSS to back up and restore files while maintaining security
labels. You cannot use the pax and tar commands.
Six classes are used to control auditing of security events. These classes do not
have any profiles. They do not have to be active to control auditing. Use the
SETROPTS command to specify the auditing options for the classes. For a list of
the classes used for auditing and an explanation of how to specify the audit
options, see z/OS Security Server RACF Auditor's Guide.
You can also specify auditing at the file level in the file system. Activate this option
by:
1. Specifying DEFAULT in the class LOGOPTIONS on the SETROPTS command
2. Using the chaudit command to specify audit options for individual files and
directories
If you activate auditing for additional levels of file system access, you might
generate excessive amounts of SMF Type 80 records.
You can also specify, in a RACF user profile, that all actions taken by the user be
audited. Actions taken by superusers can be audited or not, determined by RACF
commands. If you are using RACF profiles in the UNIXPRIV class to control
certain superuser functions, you can use those same profiles to audit those
superuser functions.
If you have AUDITOR authority, you do not need access in the permission bits to:
v Search and read any directory in the file system
v Use the chaudit command to change the auditor audit options for any file in the
file system
If both user and auditor audit options are set, RACF merges the options and audits
all the set options.
Be sure that you are familiar with the activation instructions before using
sanction lists. It is possible to unintentionally activate only part of this feature.
You have to follow certain formatting rules when creating sanction lists.
v Only use absolute path names.
v Path names cannot start with /*.
v Each list element must be on a line by itself, with no comments. Lines are
terminated with the newline character, as is consistent with the stepliblist and
useridaliastable files. Leading blanks can be on the list element line and are
ignored. Use the newline character to delimit a path name. Trailing blanks are
ignored. Other white space is considered part of the path name.
v Follow standard z/OS UNIX path naming conventions.
v You must follow standard MVS program naming conventions.
v Encode the sanction list file in the IBM-1047 code page.
v You can include comment lines in the list. Each comment line must start with /*
and end with */. They cannot be on the same line with any other type of line.
v Do not enclose the path names or program names in quotation marks.
If the file does not follow these formatting rules, the sanction lists might not be
recognized properly and various functions relating to the attempted use of the lists
might fail.
You also need to be aware that only one sanction list check is done for each
program invocation. Although links in directories are supported, sanction list
processing only performs one check. This check uses the path name or program
name that was specified by the user.
Tip: The installation can construct the sanction lists with link path names or actual
path names, or both. The decision depends on how the site would like the users to
invoke the programs. For example, if the actual directory is in the sanction list
instead of the directory that contains the link, and the associated program is
invoked via the link, the program would not be executed. The program is only
executed if the directory where the link was defined or resides is specified in the
sanction list and the associated program is invoked via the link. Alternatively, both
the actual directory and directory where the link resides could be placed in the
sanction list. This method gives users the option of invoking the program either
way. Likewise, if only the actual directory was placed in the sanction list, the user
would be forced to use actual path names and not links.
/*****************************************************************/
/* Program control directories */
/*****************************************************************/
:programcontrol_path
/in/test/specials
/*****************************************************************/
/* APF authorized programs */
/*****************************************************************/
:apfprogram_name
PAYOUT
_______________________________________________________________
2. Give the sanction list a name.
Guideline: The path name of the sanction file should be /etc/authfile, in
keeping with IBM's strategy to place all customized data in the /etc directory.
_______________________________________________________________
When you are done, you have created a sanction list and named it. To activate it,
see “Steps for activating the sanction list.”
Only users with superuser authority should be given update access to sanction
lists.
_______________________________________________________________
2. If the sanction list has not already been created (see “Steps for creating a
sanction list” on page 105), create one now.
_______________________________________________________________
When you are done, you have activated the sanction list. A background task will
sweep in the background every 15 minutes for updates. Its only job is to check for
the sanction list, and if it is there, to process it. Alternatively, if a change needs to
be activated sooner, you can use SETOMVS or SET OMVS =(xx), where xx specifies
which BPXPRMxx file is to be used to reset the various z/OS UNIX parameters.
Tip: You can turn off sanction list checking with the SETOMVS command:
SETOMVS AUTHPGMLIST=NONE
Note:
1. If the sanction list was not created when the system is IPLed, you can create it
later and then use the SETOMVS command to dynamically add it. Be careful
because you will not get a message saying that the sanction list file does not
exist, although z/OS UNIX will continue to check every 15 minutes.
2. If the sanction list was created before the system is IPLed, and there are errors,
the sanction list processing is disabled.
3. If the AUTHGPGMLIST statement in the BPXPRMxx member contains a
nonexistent value, you will not get an error message.
Perform the following steps to ensure that the system stays secure.
1. Check each program that you want to introduce into the system. Add a
program only if you are certain that it will not lower the level of security.
_______________________________________________________________
2. For users of the system, set up rules for:
v Sharing data in files
v Specifying permission bits when creating files or using the chmod command
or chmod() callable service
_______________________________________________________________
3. Require that users set the permission bits for their files to deny access to all
users except themselves, as the file owners.
_______________________________________________________________
4. Protect all local data sets with a RACF profile that specifies UACC(NONE).
Only administrators with responsibility for creating, restoring, or dumping local
data sets should be permitted to this profile.
_______________________________________________________________
When you are done, you have taken steps to ensure that your system stays secure.
When specifying a profile, you have two choices: use the OMVSAPPL application
ID (APPLID) or create a customized APPLID. In some cases, OMVSAPPL is the
value that is always used for the APPLID parameter.
For more information about protecting applications, see z/OS Security Server RACF
Security Administrator's Guide.
The basic steps to restrict access to the z/OS UNIX file system are to create a
resource with the identical z/OS UNIX file system name in the FSACCESS class
profile, permit selected z/OS UNIX users with UPDATE access to the resource, and
then activate the FSACCESS class. When the FSACCESS class profile is active,
RACF first uses the FSACCESS class profile resources to determine whether the
user is authorized to access the file system. If the user is authorized to access the
file system resource, then RACF uses the permission bits, access ACLs, and various
UNIXPRIV class profiles to determine whether the user is authorized to access the
individual file system objects with the requested access level. Read the section on
protecting file system resources in z/OS Security Server RACF Security
Administrator's Guide for details on how RACF uses FSACCESS when enforcing file
system security.
To give selected users or group access to a z/OS UNIX file system, follow these
steps.
Before you begin: You need to know which users or groups will be given access to
the specified file system.
Perform the following steps to give selected users and groups access to the
specified file system and then activate FSACCESS checking.
Procedure
1. Define a profile in the FSACCESS class for each z/OS UNIX file system that
you want to grant permission. To define a profile for
OMVS.ZFS.WEBSRV.TOOLS, for example, issue:
RDEFINE FSACCESS OMVS.ZFS.WEBSRV.TOOLS UACC(NONE)
In general, generic profile names for file systems are allowed for resources in
the FSACCESS class.
Tip: To control a set of file systems with similar names, define a generic profile.
For example, after ensuring that generic profiles were enabled for the class,
define OMVS.ZFS.WEBSRV.** as a generic profile, issue:
SETROPTS GENERIC(FSACCESS)
RDEFINE FSACCESS OMVS.ZFS.WEBSRV.** UACC(NONE)
_______________________________________________________________
2. Assign UPDATE access to the selected users or groups.
PERMIT OMVS.ZFS.WEBSRV.TOOLS CLASS(FSACCESS) ID(USER19)
ACCESS(UPDATE)
_______________________________________________________________
3. Activate the FSACCESS class profile, if it is not currently active at your
installation. By default, it is inactive and is not used for authorization checking.
SETROPTS CLASSACT(FSACCESS)
_______________________________________________________________
Results
When you are done, you have restricted access to the specified z/OS UNIX file
system to users and groups who have been explicitly permitted to covering
resource profiles.
Other TCP/IP tasks such as ftp and routed must be assigned a RACF user ID
using ICHRIN03 or the STARTED class. If ftpd and routed use a different started
task user ID from the TCP/IP user ID, they must have UID(0) and HOME(‘/’).
The HFS and zFS file system types in mount statements and command operands
are now generic file system types that can mean either HFS or zFS. Based on the
data set type, the system determines which is appropriate. You must still specify a
type (HFS or zFS and it cannot be defaulted), and if the type you specify is not
correct for the file system being mounted, any associated parameter string setting
in the mount statement or command is ignored, even though the system sets the
type correctly and processes the mount.
Lists of subtasks
Subtask Associated procedure
Mounting file systems “Steps for mounting file systems” on page
125
Setting up the alternate sysplex root “Steps for setting up the alternate sysplex
root for the dynamic replacement of the
current sysplex root” on page 128
Disabling support for the alternate root file “Steps for removing the alternate sysplex
system root support” on page 130
Dynamically replacing the sysplex root file “Steps for dynamically replacing the sysplex
system root file system” on page 130
Customizing the cron, uucp, and mail “Customizing the cron, uucp, and mail
utilities utilities” on page 139
Recovering from file system problems with “Steps for recovering from file system
the root problems with the root” on page 155
A hierarchical file system consists of files, directories, and additional file systems.
v The files contain data or programs. A file containing a load module or shell
script or REXX program is called an executable file. Files are kept in directories.
v The directories contain files, other directories, or both. Directories are arranged
hierarchically, in a structure that resembles an upside-down tree, with the root
u bin usr lib opt samples SYSTEM dev tmp var etc
lpp
...
booksrv tcpip
Figure 10. Logical view of the hierarchical file system for the user
Rule: You must maintain a separate file system for each of the following
directories. When you are sharing a file system between systems, those four
directories must have individual copies on each system. That is, each system
should have their own copy of those four file systems mounted under those
directories. You cannot share them between systems.
v /etc, which contains customization data. Keeping the /etc file system in a file
system separate from other file systems allows you to separate your
customization data from IBM's service updates. It also makes migrating to
Other shell commands that have differences due to symbolic links are chmod, du,
find, pax, rm, and tar.
While these behavioral changes should be minor, users can tailor command
defaults by creating aliases for the shell command. For example, if you want ls to
follow symbolic links, you can issue the command:
alias ls="ls -L"
Aliases are typically defined in the user's ENV file. See the alias command
description in z/OS UNIX System Services Command Reference for more information
about alias.
After you establish the alias, ls will follow all symbolic links.
Rules: When working with file system structures, follow these rules:
v Name each user's home directory /u/userid where userid is the user ID in
lowercase.
v Keep system file systems separate from user file systems by putting the file
systems on different volumes.
Tip: For easier management of file systems, use the automount facility. It is
described in Chapter 6, “Using the automount facility,” on page 163.
If you are using the NFS server, you can make both traditional MVS data sets and
hierarchical files appear as part of the user's workstation file system. The user can
create, delete, read, write, and otherwise treat the host-located files as an extension
of the workstation's own file system. ASCII-EBCDIC conversion for single-byte text
files is performed automatically by means of default standard conversion tables.
(NFS does not provide conversion of double-byte text files.)
Using the NFS client, you can access hierarchical files and MVS data sets on other
z/OS systems. You can also access hierarchical files on any system with an NFS
server and the proper protocol support.
For more information about NFS, refer to z/OS Network File System Guide and
Reference. For more information about TCP/IP, refer to:
v z/OS Communications Server: New Function Summary
v z/OS Communications Server: IP Configuration Reference
v z/OS Communications Server: IP User's Guide and Commands
You can use ISPF panels to create and manage the zFS file system. For more
information about working in the ISPF shell, see z/OS UNIX System Services User's
Guide.
You can set up read-only basic partitioned access method (BPAM) access to zFS
files. Each zFS directory is treated as if it were a PDSE or PDS directory. For more
information about BPAM, see z/OS DFSMS Using Data Sets.
For more information about setting up and using zFS, see z/OS Distributed File
Service zFS Administration.
zFS also contains a single file system in the data set. The zFS data sets are VSAM
linear data sets called aggregates.
To compile a list of all mounted HFS file systems, use the USS_HFS_DETECTED
check. For more information about the check, see IBM Health Checker for z/OS:
User's Guide.
You can use the BPXWH2Z tool to migrate HFS file systems to zFS file systems.
With this ISPF-based tool, you can change the space allocation, placement, SMS
classes, and data set names. Invoke it from the ISPF command panel.
You can use the JCL sample ISPBTCH in SYS1.SAMPLIB to invoke BPXWH2Z as
an ISPF batch job. Read the notes section before running the job. If you manually
migrate from an HFS to a zFS file system without using the BPXWH2Z tool, you
must allocate and format the target zFS file systems.
If the file system type that was specified on the mount does not match the type of
the file system and it is changed, the PARM parameter used by the mount is not
preserved.
Restriction: zFS does not support the DDNAME() keyword on the BPXPRMxx
ROOT and MOUNT parmlib statements. The FILESYSTEMNAME() keyword must
be used instead.
Rule: The editor used to create the JCL must not change the file names and path
names into uppercase.
Example: This example shows a sample job that defines the root file system in an
MKFS DD statement for a HFS file system. The allocation specified in this sample
does not reflect the amount of space needed for the root file system. For exact size
information, consult z/OS Program Directory. When you specify space for the file
system, you must provide a nonzero value for the directory space parameter,
which is not used. Or you can specify DSORG=PO to create a data set with
partitioned organization. The DSNAME is in the ROOT statement. Later, during
customization, put the DSNAME of the root file system in the ROOT statement in
the BPXPRMxx member.
//OMVSXX JOB
//STEP03 EXEC PGM=IEFBR14
//MKFS DD DSNAME=OMVS.ROOT,
// SPACE=(CYL,(40,1,1)),DCB=(DSORG=PO),
// DSNTYPE=HFS,
// DISP=(NEW,CATLG,DELETE),
// STORCLAS=STANDARD
Other MVS data sets can reside in available parts of the volume containing the file
system. You can also use the ISPF shell, or the TSO/E ALLOCATE command to
create a file system.
File systems can be allocated by systems other than the one on which the data set
will be used, as long as the allocating system has the correct level of DFSMS. The
system where the file system will be used must share the catalog with the
allocating system or have a catalog entry for the same file system name.
Figure 4 on page 24 shows the sample BPXPRMxx member. The ROOT statement is
as follows:
ROOT FILESYSTEM(’OMVS.ROOT’)
TYPE(ZFS)
MODE(RDWR)
The root file system is the starting point for the overall hierarchical file system. It
contains the root directory and any related files or subdirectories.
To begin with, the hierarchical file system is used to store data and organize it in a
hierarchical way by using file system entries such as directories and files. These file
system entries have certain attributes, such as ownership, permission bits, and
access time stamps. The data and the attributes of a file are stored with the file in
the file system. All file attributes are stored in a control block that is sometimes
called the inode.
Mounting a file system creates a binding for the duration of the mount. The
binding is between a directory that is already in the file system hierarchy, called
the mount point, and the entry point into the file system about to be mounted,
called the root of this file system. The mount point directory and the root are
connected until unmount time. When a file system is mounted on a mount point, it
overlays the contents of the mount point directory. Files, symbolic links, and
subdirectories within the mount point directory are no longer accessible and are
hidden until the file system is unmounted.
See Figure 11 on page 122 to see what happens when Jane's file system is mounted
on directory /u/jane.
Owner admin
jane Group std
Mode 700
inode of directory /
Owner jane
/ Group sysprog
Mode 755
OMVS.JANE.HFS
The root directory of a file system, like any other entry, also has attributes, but the
directory does not have a name. At mount time, the mount point directory lends
its name to the root directory of the file system that is to be mounted. The root,
however, keeps its attributes. Logically, the directory (which is an entry in another
directory, one level up the hierarchical tree) no longer points to its own inode.
Instead, it points to the inode of the mounted root. Thus, the attributes and the
content of a directory are hidden as long as a file system is mounted on it.
Remember that the root of a file system always keeps the attributes that it had at
unmount time. The same attributes are used again when the file system is
mounted later. The attributes do not depend on the actual mount point.
The automount facility and the ISPF shell can be used to define either a HFS or
zFS file system. For more information about the automount or ISHELL z/OS UNIX
System Services Command Reference.
The system-userid and system-groupid must match the purpose of the file system.
The same applies to the mode. A mode of 755 allows anyone to make this
directory the current working directory, but only the owner can write to it. For
other situations, a mode of 750 might be more appropriate.
To have mount processing substitute "ZFS" or "HFS" as appropriate, you can use
"///" as a placeholder in file system names. When the system encounters "///" in
the name, the following happens:
1. It first substitutes the characters "ZFS" and checks the file system. If the system
determines that it is not a HFS file system, it gives the mount to zFS to process.
2. If it is a HFS file system, then the system substitutes the characters "HFS" and
checks the file system. If the system determines that it is a HFS file system, it
gives the mount to HFS to process. If it is not a HFS file system, it gives the
mount to zFS to process.
Tip: To verify that file systems specified in BPXPRMxx are currently mounted, use
the USS_FILESYS_PARMLIB_MOUNTS check provided by IBM Health Checker for
z/OS.
To unmount file systems, the nonprivileged user must have read access to
SUPERUSER.FILESYS.USERMOUNT profile. The file to be unmounted must have
been mounted by that nonprivileged user. The nonprivileged user must also still
have access to the file system root and if the sticky bit is on, must still be the
owner.
The most recent specification is used for each system that is participating in a
shared file system configuration. To set these values, you must specify them in the
Tip: To allocate a file system with no secondary space, use the following
ALLOCATE command:
ALLOCATE DATASET(’OMVS.USER.SAM’) DSNTYPE(HFS) SPACE(5,0) DIR(1) CYL
Because the file system was allocated with no secondary space, it cannot
dynamically grow. However, it can grow if you use confighfs.
Then free the data sets as shown in the following example:
FREE DATASET(’OMVS.USER.JOE’)
FREE DATASET(’OMVS.USER.JANE’)
_______________________________________________________________
4. Logically mount the new file system in the directory of an existing file system
by using the TSO/E MOUNT command under a user with mount authority.
Example: The directory /u/joe is a mount point for OMVS.USER.JOE and
/u/jane is a mount point for OMVS.USER.JANE.
v If you are mounting a new zFS file system:
MOUNT FILESYSTEM(’OMVS.USER.JOE’) TYPE(ZFS) MOUNTPOINT(’/u/joe’)
v If you are mounting a new HFS file system:
MOUNT FILESYSTEM(’OMVS.USER.JANE’) TYPE(HFS) MOUNTPOINT(’/u/jane’)
_______________________________________________________________
For a HFS file system, after you mount the new file system for the first time,
change the owner and group owner. These values are saved in the new file system
and are reused when the file system is remounted later. To change the owner and
group owner, you have two options:
v Use the chown command. You might need superuser authority to issue the
chown command, depending on your installation.
Example: For the /u/joe directory, to set the user name and group name (if they
have already been defined to the security product), issue:
Automatically replacing the sysplex root file system with the alternate
sysplex root file system if it becomes unowned
In a sysplex configuration, the alternate sysplex root file system is a hot standby for
the sysplex root file system that is used to replace the current sysplex root file
system when the sysplex root file system becomes unowned. The alternate sysplex
root file system is established by using the ALTROOT statement in the BPXPRMxx
parmlib member during OMVS initialization or by using the SET OMVS command.
Requirements: When replacing the sysplex root file system, take the following
requirements into consideration:
v A shared file system configuration is required. However, the sysplex can be a
single system.
Steps for setting up the alternate sysplex root for the dynamic
replacement of the current sysplex root
About this task
This topic shows how to establish an alternate sysplex root in a shared file system
environment.
Before you begin: You need to ensure that the alternate sysplex root does not
reside in the same volume, device, and control unit as the current sysplex root.
To minimize the single point of failure, the alternate sysplex root file system
should be a different PFS type than that of the current sysplex root file system.
Procedure
1. Allocate a new file system to be used as the alternate sysplex root file system,
following these rules:
a. The UID, GID and the permission bits of the root directory in the alternate
sysplex root file system must match the root directory in the current sysplex
root file system
b. If the SECLABEL class is active and the MLFSOBJ option is active, then the
multilevel security label for the alternate sysplex root must be identical to
the assumed multilevel security label of the current sysplex root.
_______________________________________________________________
2. On the alternate sysplex root, set up the mount points and the symbolic links.
The mount points and the symbolic links must be same as the ones on the
current sysplex root.
a. Mount the alternate sysplex root file system at a temporary mount point
(for example, /altroot).
You can use the SETOMVS SYNTAXCHECK operator command to validate the
ALTROOT syntax.
_______________________________________________________________
4. Make sure that all systems in the shared file system environment have direct
access to the new file system and can locally mount it.
_______________________________________________________________
5. Process the ALTROOT statement by using the SET OMVS command or by
initializing the OMVS with the updated BPXPRMxx parmlib member. For
example:
SET OMVS=(xx)
_______________________________________________________________
Results
When you are done, you have established an alternate sysplex root in the shared
file system configuration. The alternate sysplex root is mounted in read-only mode
at the specified mount point and designated as AUTOMOVE. When the alternate
sysplex root becomes the current sysplex root, it is mounted in read-only mode
and designated as AUTOMOVE regardless of the current sysplex root settings.
Requirement: If you make changes to the current sysplex root after the alternate
sysplex root was established, you must make the same changes to the alternate
sysplex root as well.
This topic shows how to remove support for the alternate sysplex root.
Perform the following steps to remove the alternate sysplex root support.
Procedure
1. In the BPXPRMxx parmlib member, replace the ALTROOT FILESYSTEM
statement with the following statement:
ALTROOT NONE
Because the ALTROOT NONE and ALTROOT FILESYSTEM statements are
mutually exclusive, only one can be specified in the BPXPRMxx parmlib
member.
If concatenating parmlib members result in multiple ALTROOT statements,
then the first parmlib member specified on the OMVS= operator command that
contains the ALTROOT statement will take effect.
_______________________________________________________________
2. Issue a SET OMVS operator command to process the ALTROOT NONE
statement. For example:
SET OMVS=(XX)
_______________________________________________________________
Results
When you are done, you have removed the alternate sysplex root support and
deleted any outstanding BPXF253E messages. The alternate sysplex root file system
can be left mounted as a regular file system on all systems in the sysplex. If you
need to reestablish the alternate sysplex root support with the same file system
name, the file system will have to be unmounted globally before it can be used in
the ALTROOT FILESYSTEM statement.
Use your preferred unmount method to unmount the alternate sysplex root.
The storage administrator or system programmer can monitor the space in a file
system by mounting a file system with the FSFULL parameter. For example, you
would see message IGW023A when the file system is 70 percent full. Then it
would issue another message when the file system is 80 and 90 percent full:
mount parm(’FSFULL(70,10)’)
You can set up read-only basic partitioned access method (BPAM) access to UNIX
files, including HFS, zFS, NFS, and TFS files. Each z/OS UNIX directory is treated
as if it were a PDSE or PDS directory. For more information about BPAM access to
z/OS UNIX directories, see z/OS DFSMS Using Data Sets.
For zFS file systems, use the zfsadm grow command to extend the size of an
aggregate.
The skulker shell script, which is located in /samples, should be copied. You can
modify it to suit your particular needs. Possible locations for the script include
/bin or /usr/sbin, especially if skulker is to be run from a UID(0) program. If
skulker is to be run by users, a locally created directory called, /usr/bin is a
possibility, but ensure that the sticky bit is on in that directory.
For more information about skulker, see z/OS UNIX System Services Command
Reference.
It unmounts the file systems on the system that the command was issued from.
For systems with shared file system support, mounting the root file system
read-only is optional. For more information about the version file system, which is
also known as the root file system, see Chapter 7, “Sharing file systems in a
sysplex,” on page 173.
Rule: In a sysplex, the /etc, /dev, /tmp, and /var directories must have their own
file system, separate from the root file system. Having those files in their own file
system is also good practice for non-sysplex systems.
To decide whether you should leave the root file system read/write or change it to
read-only, use the information in Table 14, and any other information that you
might have. You should consider mounting the root file system in read-only mode,
especially if you are mounting the root file system in a shared file system
environment.
These actions can be taken in any order, and do not need to be performed in a
certain sequence.
Table 15. Required post-installation activities for mounting a root file system in read-only mode. List of required
actions when mounting the root file system in read-only mode for elements or functions
Element or function Required action
Common Information Model (CIM) No required actions.
Communications Server No required actions.
Cryptographic Services Open No required actions.
Cryptographic Services Facility (OCSF)
Cryptographic Services PKI Services No required actions
Cryptographic Services System Secure No required actions.
Sockets Layer Programming
DFSMSdfp, DFSMSdss, DFSMShsm, No required actions.
DFSMSrmm, and DFSMStvs
Distributed File Service (DFS) No required actions.
Hardware Configuration Definition No required actions.
(HCD)
Hardware Configuration Manager (HCM) No required actions
IBM HTTP Server For the directives that must be changed, see HTTP Server: Planning,
Installing, and Using, which can be found at:
http://www.ibm.com/software/webservers/appserv/library/index.html
IBM Tivoli Directory Server No required actions.
Infoprint Server Change ownership of the Infoprint Server files to the Infoprint Server
GID by running the aopsetup customization script. Also, a separate file
system must be mounted read/write on the /var mount point. See z/OS
Infoprint Server Customization for more information.
Integrated Security Services Open No required actions.
Cryptographic Enhanced Plug-ins (OCEP)
Integrated Security Services - Enterprise No required actions.
Identity Mapping (EIM) and Network
Authentication Service
Language Environment No required actions.
Library Server See the topic on advanced customization parameters in z/OS Program
Directory.
Metal C Runtime Library No required actions.
Network File System (NFS) No required actions.
Runtime Library Extensions No required actions.
SMP/E No required actions.
XL C/C++ No required actions.
z/OS Font Collection No required actions.
With the root file system mounted in read-only mode, you must define other
BPXPRMxx parameters for the directories that remain read/write.
Example: You might also have the following BPXPRMxx entry for /etc:
MOUNT FILESYSTEM(’OMVS.ETC’) /* The /etc file system */
MOUNTPOINT(’/etc’) /* Mount at /etc file system */
TYPE(ZFS) /* File system type ZFS */
MODE(RDWR) /* Mounted for read/write */
Customizing the cron, uucp, and mail utilities for a read-only root file
system
As of z/OS V1R13, ServerPac is delivered with the /usr/lib/cron, /usr/mail and
/usr/spool directories as symbolic links. The required directories and symbolic
link structure are created during installation by the BPXKMDIR REXX exec in
SYS1.SAMPLIB. The exec is invoked by BPXISMKD and can also be invoked at
other times as needed.
For systems without shared file support, symbolic links must be created for the
cron, uucp, and mail utilities before the root file system can be mounted in
read-only mode. Files that were written to by those utilities must be moved out of
the root file system and into a directory in a file system that was mounted in
read/write mode.
Typically, no action is needed in order for the BPXKMDIR exec to set up the
required directories and symbolic links. However, if files have been generated by a
previous customization of the cron, uucp, and mail utilities, they must be moved
to the appropriate /var directories before BPXMKDIR can create the needed files
and symbolic links. The procedure is described in “Customizing the cron, uucp,
and mail utilities” on page 139. In order to retain the customization, they should
be moved to the directories that the symbolic links will point to.
For files used by uucp, these files are delivered as symbolic links that are directed
to the /var/uucp directories as follows:
File Linked to
/usr/lib/uucp/Systems
../../../var/uucp/System
/usr/lib/uucp/Devices
../../../var/uucp/Devices
/usr/lib/uucp/Dialers
../../../var/uucp/Dialers
/usr/lib/uucp/Dialcodes
../../../var/uucp/Dialcodes
/usr/lib/uucp/Permissions
../../../var/uucp/Permissions
/usr/lib/uucp/config
../../../var/uucp/config
Certain directories must be in the /var directory and have the appropriate
permissions.
v For the mail utility:
– /var/mail with permissions set to 755
v For the cron utility:
– /var/cron with permissions set to 755
– /var/spool with permissions set to 755
– /var/spool/cron with permissions set to 755
– /var/spool/cron/atjobs with permissions set to 755
– /var/spool/cron/crontabs with permissions set to 755
v For the uucp utility:
– /var/uucp with permissions set to 774
– /var/spool with permissions set to 755
– /var/spool/locks with permissions set to 774
– /var/spool/uucp with permissions set to 774
– /var/spool/uucppublic with permissions set to 777
– /var/spool/uucp/.Xqtdir with permissions set to 774
– /var/spool/uucp/.Sequence with permissions set to 774
– /var/spool/uucp/.Status with permissions set to 774
The uucp files must be in the /var directory:
– /var/uucp/Systems
– /var/uucp/Devices
– /var/uucp/Dialers
– /var/uucp/Dialcodes
– /var/uucp/Permissions
However, if you decide not to use the /var directory and the provided symbolic
links, you can create symbolic links from the /var directory or file to your
preferred directory or file. With that setup, each time you migrate to a new release,
you will have to customize the z/OS Migration in order for the root file system to
be mounted read-only.
The instructions work for most customer environments. Customers with different
customized environments should use this information as a basis to make their
respective changes. The instructions are based on the following assumptions:
v The target system was IPLed in your test environment, the root file system data
set is mounted on / (slash = the root) in read/write mode
v The /var file system is mounted on the /var mount point in read/write mode
v File systems such as the sysplex root and the system-specific file systems are not
being used or being mounted while the customization is taking place.
Requirements: Before beginning these tasks, you must meet the following
requirements:
v Have superuser authority, such as UID(0). If you have READ access to the
BPX.SUPERUSER resource in the FACILITY class, you can execute setuid(0) or
the su command to gain superuser authority. If you have permission to the
corresponding UNIXPRIV class profile, you will have authority to use specific
authorized services.
v Log in to the shell environment through TSO, telnet, rlogin, or OpenSSH.
First step: If you have used cron, uucp, or mail and have not followed the
recommended customization in z/OS Migration you must move the contents of the
/usr/spool directory to the /var directory and create a symbolic link. Ensure that
no file systems are mounted on the /usr/spool directory or on any mount point
under this directory. If there are any, they must be unmounted.
1. Create a directory called /var/spool. Issue:
mkdir /var/spool
When you are done, you have moved the contents of the /usr/spool directory to
the /var/spool directory and created a symbolic link for /usr/spool that points to
/var/spool.
If you moved the contents of the /usr/spool directory to a directory other than
/var/spool (for example: /etc/spool), you will have to create another symbolic
link from /var/spool that points to /etc/spool. Use these steps:
1. Change the current working directory to the /var directory. Issue:
cd /var
2. Remove the /var/spool directory after making sure that it is empty. If it is not
empty, then move the items from this directory into /etc/spool. Issue:
rmdir /var/spool
3. Create a symbolic link for /var/spool that points to /etc/spool. Issue:
ln -s ../etc/spool /var/spool
Second step: If you have used cron, uucp, or mail and have not followed the
recommended customization in z/OS Migration, you must move the contents of the
/usr/lib/cron directory to the /var directory and create a symbolic link. Ensure
that no file systems are mounted on the /usr/lib/cron directory or on any mount
point under this directory. If there are any, they must be unmounted.
1. Create a directory called /var/cron. Issue:
mkdir /var/cron
2. Change its permission setting to 755. Issue:
chmod 755 /var/cron
3. Change the current working directory to /usr/lib/cron. Issue:
cd /usr/lib/cron
4. Copy the contents of the /usr/lib/cron directory into/var/cron. Issue:
pax -rw -pe ./ /var/cron
You can choose to move the contents to a directory other than /var/cron (for
example: /etc/cron). If you do, you will have to create another symbolic link
later.
5. Repeat steps 1-4 for every system image in your sysplex.
When you are done, you have moved the contents of the /usr/lib/cron directory
to the /var/cron directory and created a symbolic link for /usr/lib/cron that
points to /var/cron.
Third step: If you have used cron, uucp, or mail and have not followed the
recommended customization in z/OS Migration, you must move the uucp files and
create a symbolic link.
1. Create a directory called /var/uucp. Issue:
mkdir /var/uucp
2. Change its permission setting to 774. Issue:
chmod 774 /var/uucp
3. Change the current working directory to /usr/lib/uucp. Issue:
cd /usr/lib/uucp
4. Issue ls -al to see if the following files are in /usr/lib/uucp.
Systems
Devices
Dialers
Dialcodes
Permissions
config
If none of these files show up in the directory listing, then you are done.
5. If any of the files listed in Step 4 exist, copy them to the /var/uucp directory by
using the cp command. For example, if all the files exist, then you must copy
them to the /var directory. Issue:
cp -p Systems /var/uucp/Systems
cp -p Devices /var/uucp/Devices
cp -p Dialers /var/uucp/Dialers
cp -p Dialcodes /var/uucp/Dialcodes
cp -p Permissions /var/uucp/Permissions
cp -p config /var/uucp/config
You can choose to move the contents to a directory other than /var/uucp (for
example: /etc/uucp). If you do, you will have to create an additional symbolic
link later.
6. Repeat Steps 1-5 for every system image in the sysplex.
If you chose to copy the files from the /usr/lib/uucp directory to a directory other
than /var/uucp (for example: /etc/uucp), you must create additional symbolic links
from /var/uucp to this directory. You can use these commands to perform these
actions:
1. Change the current working directory to the /var directory. Issue:
cd /var
2. If the following files exist, copy them to /etc/uucp. Issue:
cp -p Systems /etc/uucp/Systems
cp -p Devices /etc/uucp/Devices
cp -p Dialers /etc/uucp/Dialers
cp -p Dialcodes /etc/uucp/Dialcodes
cp -p Permissions /etc/uucp/Permissions
cp -p config /etc/uucp/config
3. Remove the following /var/uucp files, if they exist. Issue:
rm Systems
rm Devices
rm Dialers
rm Dialcodes
rm Permissions
rm config
4. Create symbolic links for these files from /var/uucp to /etc/uucp. Issue:
ln -s ../../etc/uucp/Systems Systems
ln -s ../../etc/uucp/Devices Devices
ln -s ../../etc/uucp/Dialers Dialers
ln -s ../../etc/uucp/Dialcodes Dialcodes
ln -s ../../etc/uucp/Permissions Permissions
ln -s ../../etc/uucp/config config
Fourth step: If you have used cron, mail, or uucp and have not followed the
recommended customization in z/OS Migration, you must move the contents of the
/usr/mail directory to the /var directory and create a symbolic link. Ensure that
no file systems are mounted on the /usr/mail directory or on any mount point
under this directory. If there are any, they must be unmounted.
Before you begin: You need to login to the shell environment through TSO, telnet,
rlogin, or OpenSSH.
When you are done, you have customized the mail utility. If you unmounted any
file systems that were mounted on or below /usr/mail, you can mount them now
using the same mount point as before. That directory must contain the contents of
/usr/mail.
If you chose to move the contents of the /usr/mail directory to a directory other
than /var/mail (for example: /etc/mail), you will need to create an additional
symbolic link from /var/mail to this directory using these instructions:
1. Change the current working directory to the /var directory. Issue:
cd /var
2. Remove the /var/mail directory after making sure that it is empty. If it is not
empty, then move the items from this directory into /etc/mail.
rmdir /var/mail
3. Create a symbolic link for /var/mail that points to /etc/mail. Issue:
ln -s ../etc/mail /var/mail
Conditions under which you would remount a mounted file system are as follows:
v Maintenance cannot be performed on a read-only file system. The file system
must be unmounted and then mounted again as read/write. If there are
cascaded mounts, all of the file systems mounted on top of that file system must
also be unmounted. You can unmount and remount a root file system. However,
if the file system is a shared read-only root file system in a sysplex, you must
unmount the root on all other systems in the sysplex.
v When you are not using shared file systems, you can use the remount facility to
mount file systems as read-only under normal operating situations and as
read/write to perform maintenance.
If a file is opened for a write, this is not checked if a remount operation changes
the file system from read/write to read-only. Subsequent writes to the file will fail.
Guideline: The /dev file system contains character special files that are created on
a per-demand basis. Backing up the /dev file system is not necessary because all
files are created when first referenced. Avoid backing up the /dev file system
because the pseudoterminal files (/dev/ttyp*) might not close correctly when the
process is terminated. For example, pseudoterminal slave file attributes might not
be restored on CANCEL flows if the /dev file system is quiesced when the close()
is processed, which might result in ICH408I security error messages on subsequent
open attempts. Consider mounting /dev as a TFS file system, which is typically not
included in backup policies.
IBM offers three ways to perform backups and maintain an inventory of their
attributes:
v DFSMShsm
v Tivoli Storage Manager, formerly known as ADSTAR Distributed Storage
Manager (ADSM)
v DFSMSdss
DFSMShsm
Unlike other non-VSAM data sets that can be opened and closed repeatedly
throughout the day, some file systems are often mounted for several days or weeks
at a time, with the individual file members inside opened as needed. Normally,
DFSMShsm's automatic backup (AUTOBACKUP) processes file systems at most
If you use DFSMShsm, you must define a user ID for the DFSMShsm address
space. For DFSMShsm to access the file systems, it must run under a user ID that
is set up for access to a z/OS UNIX system. When you set up this access:
v The default group for the DFSMShsm user ID must have an OMVS segment
defined and a group ID associated with it.
v The home directory must be the root file system.
DFSMSdss
If you use DFSMSdss to dump or restore an active file system, the user ID must be
set up to have superuser authority to quiesce and unquiesce a file system. If file
systems are not mounted, then it is treated as an MVS data set and the user ID
must have read authority for dump purposes and update authority for restore
purposes.
Although the file system does not have to be SMS-managed, it is still highly
suggested. Multivolume file systems are only supported as SMS-managed. (That is,
you cannot have multivolume non-SMS-managed data sets.) As a user adds files
and extends existing files, the data set increases in size to a maximum of 123
extents if secondary extents are specified in the allocation.
If more space is required, you might want to increase the size on the allocation or
you might want to create additional file systems on different DASD volumes for a
user and mount them at different mount points in the user's hierarchy.
The newly allocated data set has a root whose permission bits are set at 700. You
can change the permissions only after the data set is mounted. See “Changing the
permission bits for a file” on page 93 for more information about changing
permission bits for a file or directory.
Example: The following is a sample JCL to create a file system. Change the JCL
where needed.
//USERIDA JOB ,’Compatibility Mode’,
// CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//DEFINE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=H
//SYSUDUMP DD SYSOUT=H
//AMSDUMP DD SYSOUT=H
//DASD0 DD DISP=OLD,UNIT=3390,VOL=SER=ZFSVOL
//SYSIN DD *
u D
F FF
user1 user2
user2
user1 OMVS.USERS
F D
FFF FF FFF F FF
OMVS.USER1 OMVS.USER2
Figure 12. Direct mount. To permanently mount file systems, code MOUNT statements in
SYS1.PARMLIB member BPXPRMxx.
u D
F FF
AUTOMOUNT
FACILITY user2
user1
F D
FFF FF
FFF F FF
OMVS.USER1 OMVS.USER2
Figure 13. Automount facility. The automount facility dynamically allocates pseudodirectories
to act as mount points and mount file systems only when files are accessed.
All user directories that are added will reside in this new file system and not in the
root file system.
The next thing to do is mount this new intermediate file system at /u. The mount
can be performed from an ID that has superuser authority by:
v Using the usr/sbin/mount REXX exec from the shell
v Using the TSO MOUNT command
v Using the mount shell command
v Using the ISHELL File_Systems pull-down
v Adding an entry to the BPXPRMxx member in SYS1.PARMLIB so that it will be
mounted when the system reIPLs.
IBM
Licensed Material - Property of IBM
5655-068 (C) Copyright IBM Corp. 1993, 1995
(C) Copyright Mortice Kern Systems, Inc., 1985, 1994
(C) Copyright Software Development Group, Univ. of Waterloo, 1989
- - - - - - - - - - - - - - - - - - - - - - - - - - -
- Improve performance by preventing the propagation -
- of TSO/E or ISPF STEPLIBs -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
# /usr/sbin/mount /u omvs.users 1
OMVS.USERS is now mounted at
/u
# df -P 2
Filesystem 512-blocks Used Available Capacity Mounted
OMVS.USERS 7200 40 7160 1% /u
OMVS.ROOT 82800 79608 3192 97% /
# chmod 755 /u 3
===>
Figure 14. Mounting the new intermediate file system. This figure shows an example of the
process to mount thef file system OMVS.USERS.
v 1 Use the mount command to mount the file system, OMVS.USERS, on mount
point /u.
v 2 Run the display free space command to display the mounted file systems.
Now that the OMVS.USERS file system is mounted at mount point /u you can
create the user1 mount point from a superuser ID by using:
v The mkdir command in the shell
v The TSO/E MKDIR command
v The ISHELL Directory pull-down
Figure 15 shows the sequence of commands performed by a superuser in the shell
to create a mount point for a new user off /u. Before you begin, be sure that the
new user is defined to the OMVS segment that your security product uses. Type in
OMVS from ISPF option 6 to enter the shell and execute the highlighted
commands to create the mount point for user1.
# cd /u 1
# pwd 2
/u 3
# mkdir -m 700 user1 4
#ls -l 5
total 16
drwx------ 2 ADMIN OMVSGRP 0 Nov 7 09:07 user16
#
===>
Figure 15. Creating a mount point directory for a user. This figure shows how to create a
mount point for a new user.
The user file system that was previously created can now be mounted at /u/user1.
The mount can be performed by:
v Using the /usr/sbin/mount REXX exec from the shell
v Using the TSO/E MOUNT command
v Using the ISHELL File_systems pull-down
v Adding an entry to the BPXPRMxx member in SYS1.PARMLIB so that it is
remounted when the system reIPLs.
===>
Figure 16. Mounting the new file system. The sequence of commands needed to mount the
file system OMVS.USER1
v 1 Issue the mount command to mount the file system, OMVS.USER1, on
mount point /u/user1.
v 2 Run the display free space command to display the mounted file systems.
v 3 In order for USER1 to use this new file system, you must issue the chown
command to change the ownership and to change the group to the user's default
group. Issue this command to set the owner and group fields of this mount
point directory for the USER1 ID. You only need to issue the chown command
once because the values will be saved in the new file system and will be reused
even when the file system is remounted later.
v 4 Issue a list command to display the new directory for USER1.
MOUNT FILESYSTEM(’OMVS.USER1’)
TYPE(ZFS)
MOUNTPOINT(’/u/user1’)
MODE(RDWR)
A pipe sends data from one process to another or back to itself. By forking
processes, a pipe can be shared by a number of processes; for example, written
to by three processes and read by seven.
A program creates a pipe with a pipe() function. The pipe vanishes when the
last process closes it. A pipe does not have a name in the file system; a pipe is
also called an unnamed pipe.
v A FIFO special file sends data from one process to another so that the receiving
process reads the data first-in-first-out (FIFO). A FIFO special file is also called a
named pipe, or a FIFO. A FIFO special file can also be shared by a number of
processes that were not created by forks. A FIFO special file can be written into
and read by the same process using multiple threads.
FIFO special files can be shared between systems that use shared file systems.
For more information about shared file systems, see Chapter 7, “Sharing file
systems in a sysplex,” on page 173.
A program creates a FIFO special file with a mkfifo command or a mkfifo()
function. The name is maintained in the file system until the named pipe is
deleted by an rm command or an unlink() function.
v A UNIX domain socket address file represents socket addresses in the UNIX
domain.
These files cannot be shared in read/write mode among systems participating in
a shared file system in a sysplex.
Pipes and FIFO special files are created by programs and users; character special
files are typically created by the system programmer.
Pseudoterminal files
Pseudoterminals (pseudo-TTYs) are used by users and applications to gain access
to the shell. A pseudo-TTY is a pair of character special files, a master file and a
corresponding slave file. The master file is used by a networking application such
as OMVS or rlogin. The corresponding slave file is used by the shell or the user's
process to read and write terminal data.
The NNNN is between 0000 and one less than the MAXPTYS value in the
BPXPRMxx member.
When a user enters the TSO/E OMVS command or logs in using rlogin or telnet to
initialize a shell, the system selects an available pair of these files. The pair
represents the connection. The maximum number of pairs is 10000. You can specify
an appropriate number of pairs in the MAXPTYS parameter; see “MAXPTYS” on
page 34.
The default controlling terminal can be accessed through the /dev/tty special file
(major 3). This file is defined the first time the system is IPLed.
Pseudo-TTY files are dynamically created by the system when they are first
referenced.
Null file
The null file, /dev/null, (major 4, minor 0) is analogous to an MVS DUMMY data
set. Data written to this file is discarded. The standard null file, named /dev/null,
is created the first time the system is IPLed, or when referenced, if it does not exist
already.
Zero file
The zero file, /dev/zero (major 4, minor 1), is similar to /dev/null in that data
written to this file is discarded, but when the file is read from, it provides an
inexhaustible supply of binary zeros. The standard zero file, named /dev/zero, is
created the first time the system is IPLed or when referenced, if it does not exist
already.
The hardware is designed to produce 8-byte random numbers but any amount of
data might be read. Reads will fail if ICSF or the hardware is not available or if
any addresses passed are invalid. Reads will not block. Data written to these
devices will be ignored without being referenced.
These files are created whenever the system is started or when referenced if they
do not exist. The default permissions are 666, RW-RW-RW-. You can change these
permissions with chmod or by explicitly defining the devices with mknod.
When naming file descriptor file, the n in /dev/fdn or /dev/fd/n is the same as the
minor number. The minor number determines which file descriptor number to
duplicate. For example, opening /dev/fd1 creates a file descriptor that is a
duplicate of file descriptor 1. This might be useful for a program that expects a file
name for output, but you might want it to write its output to stdout instead.
/dev/fdn files are used by c89 to avoid the name-length limitations imposed by the
DD statement PATH parameter.
Use of c89 assumes that you follow the naming conventions for file descriptor files.
File descriptor files are created dynamically as needed by the system when they
are first referenced.
CAUTION:
Unmounting and remounting a root file system is disruptive to the system. Any
work in progress must be undubbed and redubbed.
Rule: The person who restores a failed root file system or an unmounted root file
system must be a superuser who is defined with a home directory of / (root).
Tip: If your file system becomes full, you can follow the generic recovery
procedure described in z/OS Problem Management.
Steps for recovering from file system problems with the root
Before you begin: You need to have a terminal that does not depend on TCP/IP,
and the user ID doing the unmounts must be defined as UID(0) or have
appropriate privileges under UNIXPRIV.
Perform the following steps to recover from file system problems with the root.
1. List the applications that are running. Issue:
D OMVS,A=ALL
_______________________________________________________________
2. Bring down all the processes listed, except for BPXOINIT.
_______________________________________________________________
4. Identify the file systems that are mounted.
D OMVS,F
Result: You will see a display that shows the mounted file systems.
_______________________________________________________________
5. Unmount the file systems by using the TSO/E ISHELL command.
Rule: The root file system must be unmounted last and you must use the
IMMEDIATE option when unmounting the root file system. After the root has
been unmounted, the mount table should show SYSROOT.
_______________________________________________________________
6. Check the display again.
D OMVS,F
Result: You should see a display similar to the following:
BPXO044I 10.38.16 DISPLAY OMVS 054
OMVS 000E ACTIVE OMVS=(65)
TYPENAME DEVICE ----------STATUS----------- MODE QJOBNAME QPID
BPXFTCLN 0 ACTIVE RDWR
NAME=SYSROOT
PATH=/
_______________________________________________________________
7. Follow your recovery actions for the root file system.
_______________________________________________________________
8. Mount the root.
Example: From TSO READY or ISPF Option 6, issue:
MOUNT FILESYSTEM(’your root dsname’) TYPE(HFS) MOUNTPOINT(’/’)
Result: The root is mounted at / in read/write mode. If your root is read-only,
add MODE(READ) to the MOUNT FILESYSTEM command.
_______________________________________________________________
9. Mount the individual file systems at their respective mount points by using
the TSO/E ISHELL command.
Tip: To determine the output from the first D OMVS,F command, or the
BPXPRMxx member that you IPL with.
_______________________________________________________________
10. After the file systems are mounted (check by issuing D OMVS,F again), have a
superuser (UID=0) enter the shell and issue /etc/rc from the prompt to run the
shell initialization script.
_______________________________________________________________
You know you are done when you have rebuilt the z/OS UNIX environment and
all functions are working.
To install service, system programmers create a copy of the system that they are
migrating from onto another pack. Sometimes the system that they are migrating
from is the active production-level system, called the driving system. This new copy
is called the target system. The DDDEFs or the DD statements in the cataloged
procedure that is used when applying service are updated to point to the libraries
on the target system. When service is applied, updates are made to the target
libraries.
After service is installed, the new target libraries are tested, and if successful, are
put into production as the new driving system.
As you prepare to install service into the file system, keep the following facts in
mind:
v There is only one file hierarchy active at any given time. You might have
multiple file systems on your system. But z/OS UNIX does not recognize them
unless they are mounted at a directory (mount point) within the file hierarchy.
v If you install service directly on the production file system, you will copy new
load modules over existing ones. This causes potential tracking and system-level
problems. Therefore, you should create a copy of the production file system
before installing service.
In most cases, you will copy the root file system. However, you can use this
same concept to duplicate other production file systems that are mounted in the
file hierarchy or in individual directories. For help copying the root file system,
see “Copying the file system” on page 144.
This new copy must be mounted at a directory (mount point) within the active
file hierarchy. The directories in the newly mounted file system will be the target
libraries when installing service.
v The distribution libraries for elements installing into the file system are still
partitioned data sets.
Installing service into the file system involves the following steps. In these steps,
the new file system is called the service file system. The first two steps are shown in
Figure 18 on page 159.
1. Create a clone of the system that you are migrating from. This includes copying
all necessary partitioned data sets and file systems. A number of utilities such
as IEBCOPY or DFSMSdss can be used to copy partitioned data sets.
2. With a superuser ID, mount the service file system at a mount point within the
active file hierarchy. To do this, first create a directory (mount point) for the
/service directory:
Note: With SMP/E, you can perform the ZONEEDIT function for all
directories. You no longer need to change individual DDDEFs for directories
manually.
Also change the VOLSER information of the DDDEFs or DD statements for the
partitioned data sets.
4. Install the service.
5. Test out the new target libraries.
6. After the target libraries have been successfully tested, you can move them into
production. To replace the original file system with the service file system,
using either one of the following methods:
v Use DFSMSDss DUMP and RESTORE to copy the service file system to the
original file system.
Or
v Unmount the original file system. Next, unmount the service file system
from /service and mount it on the original file system mount point. This step
might require changes to the BPXPRMxx member. A reIPL is also required.
7. Keep the target system SYSRES and the target system file system synchronized,
because service might affect both files into the file system and members of the
partitioned data set. Make both the target system SYSRES and the target file
available at the same time.
SYSRES SYSRES
(Copy of the
Driving Target driving system)
System COPY System
Example: The following example shows sample DDDEFs pointing to new target
libraries:
LPALIB DD DSN=SYS1.LPALIB,VOLSER=TARGET,
UNIT=3390,DISP=SHR
SFSUMBIN DD PATH=’/service/bin/IBM’
However, because the individual file systems that make up the active file hierarchy
might be on SMS-managed volumes, there are some special considerations for
making a transportable copy:
v You can dump each file system to be transported into individual sequential data
sets using the DFSMSdss dump utility. These sequential data sets contain all the
necessary information about the files and can also exist with other product
libraries that need to be transported.
v After the system image has been transported to the target system, you can
restore individual product libraries or full volumes using the DFSMSdss restore
utility.
v After the data sets have been unloaded on the target system, you can use the
DFSMSdss restore utility to restore the sequential data sets into individual file
systems. These file systems will make up the active file hierarchy on the target
system.
Using the process just outlined, you can duplicate system images across the
enterprise.
See z/OS DFSMSdss Storage Administrationfor information about dumping HFS data
sets.
The /etc file system is the location for your own customization data for products.
You set up the /etc files and you maintain their content. The /var file system is
the location for IBM product information, that is created, used, and maintained by
IBM products.IBM products might create directories under /etc or /var during
installation, but IBM does not create files under /etc or /var during SMP/E
installation. Because IBM products do not create files into /etc or /var, there is no
possibility that SMP/E installation of an IBM product or service will overlay your
own files within /etc or /var.
Because /etc and /var are symbolic links, not directories, they cannot receive
product or service code. If you are installing service or products that must write to
/etc or /var, you need to change /etc or /var to a directory, install the code, and
then change /etc or /var back to a symbolic link. The sample JCL for those tasks
are in SYS1.SAMPLIB; they are:
1. Mount a clone of the system that you are installing into the /service mount
point.
2. Run the sample job BPXISETD to convert the /service/etc and /service/var
symbolic links to directories. Pass the /service parameter to the REXX exec.
Optionally, you can use BPXISJCL to submit the job in the background.
3. Mount the clone of the serviceETC.HFS of the system you need to service at
/service/etc. For /var directory updates, mount the clone of serviceVAR.HFS
of the system you need to service at /service/var.
4. Install the service, which might include running REXX execs that create
directories under /service/etc or /service/var. At this point, you can copy
/etc files from an existing file system's /etc to /service/etc, if you wanted to
bring forward any configuration files, and change them properly.
5. Unmount the /etc after everything is installed from /service/etc. Unmount
the /var after everything is installed from /service/var.
6. Run the sample job BPXISETS to convert the /etc and /var back to symbolic
links at /service/etc and /service/var, respectively.
Example:
Guideline: While you can mount on a symbolic link that points to a directory, you
must make sure that the mount point that your symbolic link is pointing to is not
still mounted on by the original /etc file system.
To help you decide how many file systems you need, see the information about
product sets in the topic that discusses placing data sets on specific volumes in
z/OS Planning for Installation.
The procedures in this topic apply to those installing products into the /etc file
system on a production system.
Because /etc is a symbolic link, it cannot receive product or service code. You need
to run jobs that change /etc to a directory, install the code, and change /etc back to
a symbolic link. The jobs you use are in SYS1.SAMPLIB.
You can use the automount facility for the zFS and HFS file systems in addition to
other file system such as NFS.
Restriction: If you are using system-specific security labels, do not use the
automount facility.
For more information about the automount command, see z/OS UNIX System
Services Command Reference.
You can use IBM Health Checker for z/OS to check the file system configuration.
It is a base function that provides a foundation to help simplify and automate the
identification of potential configuration problems before they affect system
availability. It compares active values and settings to those suggested by IBM or
defined by your installation. For more information about IBM Health Checker for
z/OS, see Chapter 21, “IBM Health Checker for z/OS,” on page 427.
The default delay time for automount is 10 minutes. Do not use a value less than
10. You can use the USS_AUTOMOUNT_DELAY check provided by IBM Health
Checker for z/OS to verify the setting of the delay time. For more information
about IBM Health Checker, see IBM Health Checker for z/OS: User's Guide.
Think of the automount facility as an administrator that has total control over a
directory. When a name is accessed in this directory, the automount facility checks
the automount policy for the file system that is supposed to be associated with that
name. Then it performs a mkdir followed by a mount and moves out of the way.
Now the root directory of that newly mounted file system can be accessed as that
name.
For example, suppose that you had created the USER1 directory with the mkdir
command. If you had set up the automount facility and put the automount policy
in place, you would not have needed to do that. The USER1 directory would have
been dynamically created and the OMVS.USER1 data set automatically mounted at
the /u/user1 mount point.
Later, if the /u/user1 file system was not accessed based on certain criteria in your
automount policy, the OMVS.USER1 data set is automatically unmounted and the
USER1 directory removed.
The automount facility will not manage any directory until it can process the entire
policy without encountering any errors.
You can use a prefilter by updating the automount master file to include the name
of the filter utility. For more information, see the automount description in z/OS
UNIX System Services Command Reference.
If the automount policy is loaded, you will get a return code of 0. A nonzero
return code indicates that the policy was not loaded.
You can also refer to the automount command in z/OS UNIX System Services
Command Reference for more information about both files.
Restriction: File system name templates using symbol symbolics cannot be more
than 44 characters long. Symbolics used for the automount facility (&SYSNAME.,
<asis_name>, <us_name>) are resolved within automount as part of checking the
length of the file system name template.
/etc/auto.master
The /etc/auto.master file contains the directory or directories that the automount
facility will monitor. It also contains an associated MapName file that contains the
mount parameters.
/u /etc/u.map
The name of the map file can be specified as a data set name. The data set name
must be specified as a fully qualified name and can be uppercase or lowercase.
Single quotation marks are not needed. For example:
/u //sys1.parmlib(amtmapu)
MapName
The MapName file contains the mapping between a subdirectory of a directory
managed by the automount facility and the mount parameters. It can contain both
specific entries and a generic entry. When the automount facility tries to resolve a
lookup request, it attempts to find a specific entry. If a specific entry does not exist
for the name being looked up, it will then attempt to use the generic entry.
Tip: The MapName file can contain only one generic entry, and it has to be the
first entry in the MapName file. When using generic entries, you should have a
consistent naming criterion. The file system in Figure 20 on page 166 has a
high-level qualifier of OMVS, and the lower level qualifier is equal to the user ID.
Figure 20 on page 166 shows an example of a MapName file. It contains the mount
parameters for the user directories.
In the example, &SYSNAME. represents the system name while <uc_name> specifies
that the name being looked up is to be represented in uppercase. The automount
facility creates a directory containing that name and uses it as a mount point for
the file system to be mounted. You can use <uc_name> to replace any level qualifier.
For example, if the name of the directory that is being looked up is USER1, the
automount facility will resolve the name in the following ways:
OMVS. <uc_name> = OMVS.USER1
OMVS. <uc_name>.ZFS = OMVS.USER1.ZFS
For a complete list of supported keywords, see the automount command in z/OS
UNIX System Services Command Reference.
For security reasons, consider specifying "setuid no" . If you do, then the setuid
and setgid flags in the permission bits are ignored, as well as the program control
extended attribute (+p) and the APF-authorized extended attribute (+a). Consider
the following:
v UNIX files and directories are contained in MVS data sets.
v UNIX users using these files and directory do not need access to these MVS data
sets. Only the kernel and your storage administrators need access to the data
sets.
v If you give the users direct access to the MVS data sets by giving them
UPDATE access in a RACF profile protecting the data sets, or by naming the
data sets with the user ID as the HLQ, and you do not specify "setuid no" when
mounting, you have a security exposure.
When you are done, you have activated the automount facility.
# df
Mounted on Filesystem Avail/Total Files Status
/ (OMVS.ROOT) 1432/89280 0 Available
# /usr/sbin/automount 1
FOMF0107I Processing file /etc/u.map
FOMF0108I Managing directory /u 2
# df 3
Mounted on Filesystem Avail/Total Files Status
/u (*AMD/u) 0/8 0 Available
/ (OMVS.ROOT) 1432/89280 0 Available
# cd /u/user1 4
# cd /u/slekka/testdir 4
# cd /u/rpetri 4
# df 5
Mounted on Filesystem Avail/Total Files Status
/u (*AMD/u) 0/8 0 Available
/u/rpetri (OMVS.RPETRI) 4256/4320 0 Available
/u/slekka (OMVS.SLEKKA) 4232/4320 0 Available
/u/user1 (OMVS.USER1) 4232/4320 0 Available
/ (OMVS.ROOT) 1432/89280 0 Available
# ls -l /u 6
Total 496
drwxr-xr-x 2 RPETRI OMVSGRP 0 Nov 2 09:59 rpetri
drwxr-xr-x 2 SLEKKA OMVSGRP 0 Nov 1 09:47 slekka
drwx------ 2 ADMIN OMVSGRP 0 Nov 7 09:07 user1
# chown user1 /u/user1 7
# ls -l /u 8
Total 496
drwxr-xr-x 2 RPETRI OMVSGRP 0 Nov 2 09:59 rpetri
drwxr-xr-x 2 SLEKKA OMVSGRP 0 Nov 1 09:47 slekka
drwx------ 2 USER1 OMVSGRP 0 Nov 7 09:07 user1
#
===>
v 1 The automount command is being issued from a superuser ID to start the
automount facility from the shell.
v 2 The automount facility scans the /etc/auto.master file first to see what
MapName file or files should be read. Here, the /u directory is being managed.
Calling the automount command twice by mistake does not cause problems
regardless of whether a file system is already mounted. The automount facility
reads the /etc/auto.master file and associated MapName file or files again and
then picks up any changes.
v 3 The display free space command (df) is issued. It shows that the automount
facility has been started and is managing the /u directory. Notice the (*AMD/u).
v 4 Change directory (cd) commands are issued to access directories in the three
file systems that are to be mounted from the /u directory. In this case, the
directories USER1, RPETRI, and SLEKKA are used to resolve the <uc_name>
168 z/OS V2R1.0 UNIX System Services Planning
symbol in the /etc/u.map file. The RPETRI, SLEKKA, and USER1 directory
names are translated to uppercase and substituted to build the data set names
OMVS.RPETRI, OMVS.SLEKKA, and OMVS.USER1, respectively. The RPETRI,
SLEKKA, and USER1 directories do not physically exist in any file system but
will be created as pseudo mount points by the automount facility on which the
HFS data sets OMVS.RPETRI, OMVS.SLEKKA, and OMVS.USER1 are mounted.
v 5 Output from another df command shows that (*AMD/u) is managing the /u
directory. It also shows that the OMVS.RPETRI, OMVS.SLEKKA and
OMVS.USER1 data sets are now mounted at pseudo mount points /u/rpetri,
/u/slekka, and /u/user1, respectively.
When automount is actively managing a particular mount point (in this case /u)
you cannot add a file to this directory (/u) or create a new subdirectory off the
/u directory using the mkdir command. If you try, you will see an allocation or
catalog error.
v 6 The ls -l /u command is issued against the /u directory and the directory
attributes are displayed.
v 7 The chown is issued to change the ownership of /u/user1 directory from
ADMIN to USER1.
v 8 The ls -l /u command is issued again to show that the owner field of the
/u/user1 directory is now set to USER1.
Figure 21 on page 168 shows how <uc_name> works with the /etc/auto.master and
/etc/u.map files from Figure 19 on page 165. The OMVS.RPETRI, OMVS.SLEKKA
and OMVS.USER1 data sets have already been allocated. The low-level qualifier of
the data sets is the user ID which is also the directory mount point that automount
will dynamically allocate. With the automount facility, if a user tries to access any
directory in their file system, the data set is automatically mounted under the /u
directory.
Note:
1. When a new file system of the type HFS is created and allocated to a new user,
the owner UID and GID are based on that user. The setting of the permission
bits is 700. By default, the automount process uses the UID and GID of the user
ID that owns the process. If the euid keyword is specified for allocany or
allocuser, the thread level UID and GID are used instead.
/u /etc/u.map
name *
type HFS
filesystem OMVS.<uc_name>
mode rdwr
duration 60
delay 10
/*
name wjs
filesystem OMVS.WJS.HFS
duration nolimit
You will read about the shared file system capability in a multisystem sysplex
environment. It is assumed that you already have completed the other setup
activities for a sysplex environment. You will learn about the shared file system
concept, the different file systems that exist in a sysplex, and how to establish that
environment.
Although it is suggested that you exploit shared file system support when running
in a sysplex environment, you are not required to do so. If you choose not to, you
will continue to share file systems as you have before. To see how the file system
structure has changed to support the shared file system environment, even when
running on a single system, see “Illustrating file systems in single system and
sysplex environments” on page 175.
z/OS Parallel Sysplex Test Report describes how IBM's integration test team
implemented a shared file system.
Use the IBM Health Checker for z/OS to check the file system configuration, as
described in Chapter 21, “IBM Health Checker for z/OS,” on page 427.
The best way to describe the benefit of this function is by comparing what was the
file system sharing capability prior to the introduction of shared file system
support with the capability that exists now. Consider a sysplex that consists of two
systems, SY1 and SY2:
v Users logged onto SY1 can write to the directories on SY1. For users on SY1 to
make a change to file systems mounted on SY2's /u directory, they would have
to log onto SY2.
v The system programmer who makes configuration changes for the sysplex needs
to change the entries in the /etc file systems for SY1 and SY2. To make the
changes for both systems, the system programmer must log onto each system.
With shared file system support, all file systems that are mounted by a system
participating in a shared file system are available to all participating systems. In
other words, once a file system is mounted by a participating system, that file
system is accessible by any other participating system. It is not possible to mount a
file system so that it is restricted to just one of those systems. Consider a sysplex
that consists of two systems, SY1 and SY2:
v A user logged onto any system can make changes to file systems mounted on /u,
and those changes are visible to all systems.
The term participating group is used to identify those systems that belong to the
same SYSBPX XCF sysplex group and have followed the required installation and
migration activities to participate in a shared file system.
There is also greater availability of data in case of system outage, and a greater
flexibility for data placement and the ability for a single BPXPRMxx member to
define all the file systems in the sysplex.
u bin usr lib opt samples SYSTEM dev tmp var etc
lpp
...
booksrv tcpip
Figure 23. Logical view of a shared file system for the end user
This logical view applies to the end user only. However, system programmers need
to know that the illustration of directories found in Figure 23 does not reflect the
physical view of file systems. For example, some of the directories are actually
symbolic links, as is described in the following information.
In the shared file system environment, that separation of system limit parameters
from file system parameters is even more important. Each system will continue to
have a system limits BPXPRxx member. As you will see in sections that follow,
with shared file system support, you can have a file system BPXPRMxx member
for each participating system or you can replace those individual file system
BPXPRMxx members with a single file system BPXPRMxx member for all
participating systems.
BPXPRMxx
FILESYSTYPE
TYPE(ZFS)
ENTRYPOINT(IOEFSCM)
ASNAME(ZFS)
SYSPLEX(NO)
ROOT
FILESYSTEM(’OMVS.ROOT.ZFS’)
TYPE(ZFS) MODE(RDWR)
MOUNT
FILESYSTEM(’OMVS.DEV.ZFS’)
TYPE(ZFS) MODE(RDWR)
MOUNTPOINT(’/dev’)
MOUNT
FILESYSTEM(’OMVS.TMP.ZFS’)
TYPE(ZFS) MODE(RDWR)
MOUNTPOINT(’/tmp’)
MOUNT
FILESYSTEM(’OMVS.VAR.ZFS’)
TYPE(ZFS) MODE(RDWR))
MOUNTPOINT(’/var’)
MOUNT
FILESYSTEM(’OMVS.ETC.ZFS’)
TYPE(ZFS) MODE(RDWR)
MOUNTPOINT(’/etc’)
SYSTEM/
OMVS.ROOT.ZFS
Figure 25. Illustration of a single system
The presence of symbolic links is transparent to the user. In the illustrations used
throughout this section, symbolic links are indicated with an arrow.
In Figure 25, the root file system contains an additional directory, /SYSTEM;
existing directories, /etc, /dev, /tmp and /var are converted into symbolic links.
These changes, however, are transparent to the user who brings up a single system
environment.
If the content of the symbolic link begins with $SYSNAME and SYSPLEX is
specified NO, then $SYSNAME is replaced with /SYSTEM when the symbolic link
is resolved.
In addition, facilities required for a particular file system must be initiated on all
systems in the participating group. For example, NFS requires TCP/IP; if you
specify a FILESYSTYPE of NFS, you must also initialize TCP/IP when you
initialize NFS, even if there is no network connection.
Tip: When using the TSO/E MOUNT command to set up system-specific file
systems, specify the UNMOUNT parameter. Then, if data sets are replaced during
a reIPL, the new data sets are mounted as the original file systems.
After the job runs, the structure of a sysplex root file system would look like
Figure 26:
Sysplex root
/...
/bin $VERSION/bin
/usr $VERSION/usr
/lib $VERSION/lib
/opt $VERSION/opt
/samples $VERSION/samples
$VERSION $VERSION/
$SYSNAME $SYSNAME/
/dev $SYSNAME/dev
/tmp $SYSNAME/tmp
/var $SYSNAME/var
/etc $SYSNAME/etc
/u
Figure 26. What the file system structure of a sysplex root looks like
The sysplex root provides access to all directories. Each system in a sysplex can
access directories through the symbolic links that are provided. Essentially, the
sysplex root provides redirection to the appropriate directories.
Guideline: After you create the directories for each system-specific file system and
the version root file system, use the TSO UNMOUNT command to remount the
sysplex root as read-only. Remounting the sysplex root file system as read-only
prevents accidental corruption or full-file system problems with the sysplex root,
both of which might require a sysplex IPL to recover. Additionally, most
configurations will show improved performance if the file system is mounted as
read-only. If a new directory needs to be added to the sysplex root file system, you
can do the following tasks without disrupting the availability of the file system:
1. Use the TSO UNMOUNT command to remount the read-only file system to
read/write mode.
2. Create the new directories.
3. Remount the file system in read-only mode.
Rule: To create the system-specific file system, you need to run the appropriate
sample job in SYS1.SAMPLIB on each participating system. In other words, you
must run the sample job separately for each system that will participate in a file
system.
v For the zFS file system, run the BPXISYZS sample job in SYS1.SAMPLIB.
v For the HFS file system, run the BPXISYSS sample job in SYS1.SAMPLIB.
dev
tmp
var
etc
Figure 27. What the structure of a system-specific file system looks like
SYSTEM/
dev
bin
tmp
usr
var
lib
etc
opt
bin /bin
samples
usr /usr
…
lib /lib
opt /opt
samples /samples
Guidelines: When mounting the version file system, keep these guidelines in
mind.
1. Mount the version file system read-only in a sysplex environment, and
designate it AUTOMOVE. The mount point for the version file system is
dynamically created if the VERSION statement is used in BPXPRMxx.
2. &SYSNAME as one of the qualifiers for the version file system data set name.
In “Sysplex scenarios showing shared file system capability” on page 192, REL9
and REL9A are used as qualifiers, which correspond to the system release
levels. However, you do not necessarily have to use the same qualifiers. Other
appropriate names are the name of the target zone, &SYSR1, or another
qualifier meaningful to the system programmer.
IBM supplies the version file system in ServerPac. CBPDO users obtain the version
file system by following directions in the Program Directory. There is one version
file system for each set of systems participating in a shared file system and who
are at the same release level (that is, using the same SYSRES volume). In other
words, each version file system denotes a different level of the system or a
different service level. For example, if you have 20 systems participating in a
shared file system, and 10 of those systems are at Release 9 and the other 10 are at
Release 9A, then you'll have one version file system for the Release 9 systems and
one for the Release 9A systems. In essence, you will have as many version file
systems for the participating systems as you have different levels running.
Before you mount your version file system read-only, you might have some
element-specific actions. These are described in “Post-installation actions for
mounting the root file system in read-only mode” on page 136.
Following is the sample JCL with comments. The statements in bold contain the
values that you specify based on your environment. Place the primary and
alternate couple data sets on separate volumes.
Rule: Automount mounts must be included in the MOUNTS value. The number of
automount mounts is the expected number of concurrently mounted file systems
using the automount facility. For example, you might have specified 1000 file
systems to be automounted, but if you expect only 50 to be used concurrently, then
factor these 50 into your MOUNTS value.
For more information about setting up a z/OS system to run in a sysplex, see z/OS
MVS Setting Up a Sysplex.
Conversely, if the NUMBER values are too small, the function (for example, the
number of mounts supported) would fail after the limit is reached. However, a
new CDS can be formatted and switched in with larger values specified in
NUMBER. To make the switch, issue the SETXCF COUPLE,PSWITCH command.
The number of file systems required (factoring in an additional number to account
for extra mounts), determines your minimum and maximum NUMBER value.
After the CDS is created, it must be identified to XCF for use by z/OS UNIX.
Figure 29 on page 185 shows the COUPLExx parmlib member; statements that
define the CDS are in bold.
The MVS operator commands (DISPLAY XCF, SETXCF, DUMP, CONFIG, and
VARY) enable the operator to manage the z/OS UNIX CDS.
Tip: You can use the USS_CLIENT_MOUNTS check provided by IBM Health
Checker for z/OS to verify that, in a shared file system configuration,
sysplex-aware file systems are not function-shipping.
When setting up a shared file system in a sysplex, use the parameters described in
Table 18.
Table 18. Parameters used when setting up shared file systems in a sysplex. This table lists the parameters that are
used when setting up shared file systems in a sysplex.
Parameter What it does
SYSPLEX(YES) Indicates that this system is to participate in the shared file system configuration.
This involves joining the SYSBPX XCF group. Those systems that specify
SYSPLEX(YES) make up the systems that participate in the shared file system
configuration and are members of the SYSBPX XCF group.
There is one version file system for every instance of the VERSION parameter.
More information about version file system appears in “Mounting the version file
system” on page 180.
The SYSNAME(sysname) Specifies the particular system on which a mount is to be performed. sysname is a
parameter on the MOUNT 1-to-8 alphanumeric name of the system. This system will then become the owner
statements of the file system that is mounted. The owning system must also be IPLed with
SYSPLEX(YES).
Tip: Only specify a SYSNAME() value if you want only the specified system to be
the file system owner.
For SET OMVS and SETOMVS processing, the MOUNT statement is processed
and the MOUNT is function-shipped to the system specified by SYSNAME(). If
SYSNAME() is used with a value other than &SYSNAME. then there should not
be any subsequent parmlib MOUNT statements that specify a MOUNTPOINT()
with a path name that includes a directory in this file system
The SYSNAME parameter is also used with SETOMVS when moving file systems,
as demonstrated in “Moving file systems in a sysplex” on page 204.
The AUTOMOVE, Indicate what happens to the file system if the system that owns that file system
NOAUTOMOVE, and goes down. Note that the system list form of the AUTOMOVE parameter only
UNMOUNT parameters on the applies to the MOUNT statement, and not to the ROOT statement.
ROOT and MOUNT statements v AUTOMOVE without a system list specifies that ownership of the file system is
automatically moved to another system. It is the default.
v AUTOMOVE with a system list (SYSLIST) indicates which systems the file
system should or should not be moved to when the owning system leaves the
sysplex.
v NOAUTOMOVE specifies that the file system will not be moved if the owning
system goes down and the file system is not accessible.
v UNMOUNT specifies that the file system will be unmounted when the system
leaves the sysplex. This option is not available for automounted file systems.
Define your version and sysplex root file system data as AUTOMOVE, and define
your system-specific file systems as UNMOUNT. Do not define a file system as
NOAUTOMOVE or UNMOUNT and a file system underneath it as AUTOMOVE.
If you do, the file system defined as AUTOMOVE will not be recovered after a
system failure until that failing system has been restarted.
Tip: To ensure that the root is always available, use the default, which is
AUTOMOVE.
Guideline: For file systems that are exported by the Distributed File System (DFS)
or System Message Block (SMB) server to their remote clients, consider specifying
The owner of a file system is the first system that processes the mount. This
system always accesses the file system locally; that is, the system does not access
the file system through a remote system. Other non-owning systems in the sysplex
access the file system either locally or through the remote owning system,
depending on the PFS and the mount mode. If a PFS allows a file system to be
locally accessed on all systems in a sysplex for a particular mode, then the PFS is
sysplex-aware for that mount mode.
Table 19 on page 188 shows what happens during soft shutdown for various
AUTOMOVE settings. Soft shutdown is done by issuing one of the following
MODIFY commands:
F BPXOINIT,SHUTDOWN=FILESYS
F BPXOINIT,SHTUDOWN=FILEOWNER
A leaf file system refers to a file system that does not contain any file systems that
are mounted on a directory within that file system. A subtree is the file system and
all file systems that are mounted beneath that file system.
Table 20 shows what happens during soft shutdown for various AUTOMOVE
settings for an OMVS shutdown, performed by using the F OMVS,SHUTDOWN
system command.
Table 20. OMVS shutdown actions for various AUTOMOVE settings. This table lists the shutdown actions taken by
OMVS for various AUTOMOVE settings.
Automove value Action taken
NOAUTOMOVE An attempt to unmount the file system occurs. The unmount fails
if is not a leaf file system and the file system becomes unowned.
The file system remains unowned until the last owning system
restarts, or until the file system is unmounted. Because the file
system still exists in the file system hierarchy, the file system
mount point is still in use.
UNMOUNT The file system is unmounted, and all the file systems mounted
within it are also unmounted.
AUTOMOVE without a system list Moves the file system to any system. If the move fails, the file
system becomes unowned. The file system remains unowned until
the last owning system restarts or until the unowned recovery
daemon can establish a new file system owner.
AUTOMOVE with a system list An attempt to move ownership of the file system to eligible
systems (as defined by the INCLUDE or EXCLUDE system list) is
performed. If no systems could become the file system owner, the
file system is unmounted, as well as all the file systems mounted
within it.
Table 21 on page 189 shows what happens during dead system takeover for
various AUTOMOVE settings for sysplex-aware file systems. Dead system takeover
(otherwise known as Member Gone Recovery) is the action taken by systems in a
sysplex when they attempt to take over ownership of file systems that were
previously owned by a system that has just left the XCF BPXGRP member group.
There is no attempt to take over automount-managed file systems if the file system
is not being used locally. Automount-managed, unowned file systems are
unmounted.
Table 22 shows what happens during PFS termination for various AUTOMOVE
settings.
Table 22. PFS termination for various AUTOMOVE settings. This table discusses what happens if PFS is terminated
What happens if . . . Action taken
NOAUTOMOVE The file system is unmounted, and all the file systems mounted
within it are also unmounted.
UNMOUNT The file system is unmounted, and all the file systems mounted
within it are also unmounted.
AUTOMOVE without a system list An attempt to move ownership of the file system to all other
eligible systems in the participating group is performed. If another
system cannot become the owner of the file system, the file system
is unmounted, in addition to all the file systems mounted within
it.
AUTOMOVE with a system list An attempt to move ownership of the file system to eligible
systems (as defined by the INCLUDE or EXCLUDE system list) is
performed. If another system cannot become the file system
owner, the file system is unmounted, in addition to all the file
systems mounted within it.
Table 23 on page 190 shows what happens when a move file system is requested to
move a specific file system to any target system (wildcard is used). A move file
system request can be issued with a SETOMVS operator command or a chmount
shell command.
Rules: Define your version and sysplex root file system as AUTOMOVE. Also:
1. Define your system-specific file systems as UNMOUNT.
2. Do not define a file system as NOAUTOMOVE or UNMOUNT and a file
system under it as AUTOMOVE. If you do, the file system defined as
AUTOMOVE will not be recovered after a system failure until that failing
system is restarted.
Guidelines: To ensure that the root is always available, use the default, which is
AUTOMOVE. Also:
1. For non-sysplex aware file systems that are mostly exported by the DFS or SMB
server to their remote clients, consider specifying NOAUTOMOVE on the
MOUNT statement. Then the file systems will not change ownership if the
system is suddenly recycled, and they will be available for automatic re-export
by DFS or SMB.
Tip: Consider NOAUTOMOVE because a file system can only be exported by
the DFS or SMB server at the system that owns the file system. Once a file
system has been exported by DFS, it cannot be moved until it has been
unexported by DFS. The same holds true of file systems exported by SMB.
When recovering from system outages, you need to weigh sysplex availability
against availability to the DFS or SMB clients.
v When an owning system recycles and a file system exported by DFS or SMB
has been taken over by one of the other systems, DFS or SMB cannot
automatically re-export that file system.
v When an owning system is recycled and an exported file system has been
taken over by one of the other systems, that file system will not be
automatically reexported. The file system will have to be moved from its
current owner back to the original system, the one that has just been
recycled, and then exported again.
Using wildcards
When you specify the system list, you can use wildcards in certain situations.
Example: If you have many systems in your sysplex, you can specify only the
systems that should have priority and use a wildcard to indicate the rest of the
systems.
AUTOMOVE INCLUDE(s1,S2,...*)
At first glance, AUTOMOVE INCLUDE (*) appears to work the same way as
AUTOMOVE because all of the systems will try to take over the file system.
However with AUTOMOVE INCLUDE (*), if none of the systems can take over the
file system, it is unmounted. If AUTOMOVE is used, the file system remains
mounted but becomes unowned.
You can use the wildcard support on all methods of mounts, including the
MOUNT statement in BPXPRMxx, the TSO MOUNT command, the mount shell
command, the ISHELL MOUNT interface, the MNTE_SYSLIST variable for REXX,
C program, and assembler program.
Guideline: After you create the directories for each system-specific file system and
the version root file system, use the TSO UNMOUNT command to remount the
sysplex root as read-only. Remounting the sysplex root file system as read-only
prevents accidental corruption or full-file system problems with the sysplex root,
both of which might require a sysplex IPL to recover. Additionally, most
configurations will show improved performance if the file system is mounted as
read-only. If a new directory needs to be added to the sysplex root file system, you
can do the following tasks without disrupting the availability of the file system:
1. Use the TSO UNMOUNT command to remount the read-only file system to
read/write mode.
2. Create the new directories.
3. Remount the file system in read-only mode.
FILESYSTYPE
TYPE(ZFS)
ENTRYPOINT(IOEFSCM)
ASNAME(ZFS)
VERSION(’REL9’)
SYSPLEX(YES)
ROOT
FILESYSTEM (’OMVS.SYSPLEX.ROOT’) 1
TYPE(ZFS) MODE(READ)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..SYSTEM.ZFS’) 2
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME’)
MOUNT
FILESYSTEM(’OMVS.ROOT.ZFS’) 3
TYPE(ZFS) MODE(READ)
MOUNTPOINT(’/$VERSION’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..DEV’) 4
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/dev’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..TMP’) 5
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/tmp’)
.
.
.
v 1 This is the sysplex root file system and was created by running the
BPXISYZR job. To create a sysplex root file system that is a HFS, run the sample
job BPXISYSR. Because AUTOMOVE is the default, another system can take
ownership of this file system when the owning system goes down.
v 2 This is the system-specific file system, and was created by running the
BPXISYZS job. To create a system-specific file system that is a zFS, run the
sample job BPXISYSS. It must be mounted read/write. UNMOUNT is specified
because this file system is system-specific and ownership of the file system
should not move to another system if the owning system go down. The
MOUNTPOINT statement /&SYSNAME. will resolve to /SY1 during parmlib
processing. This mount point is created dynamically at system initialization.
v 3 This is the previous root file system (version file system).
Guideline: It should be mounted read-only. Its mount point is created
dynamically and the name of the file system is the value specified on the
VERSION statement in the BPXPRMxx member. AUTOMOVE is the default and
therefore is not specified, allowing another system to take ownership of this file
system when the owning system goes down.
v 4 This file system contains the system-specific /dev information. UNMOUNT
is specified because this file system is system-specific; ownership should not
SYSTEM/
OMVS.ROOT.ZFS
Figure 31. Shared file systems in a sysplex
If the content of the symbolic link begins with $VERSION or $SYSNAME, the
symbolic link will resolve in the following manner:
v If you specify SYSPLEX(YES) and the symbolic link for /dev has the contents
$SYSNAME/dev, the symbolic link resolves to /SY1/dev on system SY1 and
/SY2/dev on system SY2.
v If you specify SYSPLEX(YES) and the content of the symbolic link begins with
$VERSION, $VERSION resolves to the value nnnn specified on the VERSION
parameter. Thus, if VERSION in parmlib is set to REL9, then $VERSION resolves
In the previous scenario, if ls –l /bin/ is issued, the user expects to see the contents
of /bin. However, because /bin is a symbolic link pointing to $VERSION/bin, the
symbolic link must be resolved first. $VERSION resolves to /REL9 which makes
the path name /REL9/bin. The contents of /REL9/bin will now be displayed.
FILESYSTYPE
TYPE(ZFS)
ENTRYPOINT(IOEFSCM)
ASNAME(ZFS)
VERSION(’REL9’)
SYSPLEX(YES)
ROOT
FILESYSTEM (’OMVS.SYSPLEX.ROOT’)
TYPE(ZFS) MODE(READ)
MOUNT FILESYSTEM(’OMVS.USER.ZFS’
MOUNTPOINT(’/u’) AUTOMOVE
TYPE(ZFS) MODE(RDWR)
MOUNT FILESYSTEM(’OMVS.&SYSNAME..SYSTEM.ZFS’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME’)
MOUNT
FILESYSTEM(’OMVS.ROOT.ZFS’)
TYPE(ZFS) MODE(READ)
MOUNTPOINT(’/$VERSION’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..DEV’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/dev’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..TMP’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/tmp’)
.
.
.
Figure 32. Sharing file systems: one version file system and one BPXPRMxx for the entire
sysplex
FILESYSTYPE FILESYSTYPE
TYPE(ZFS) TYPE(ZFS)
ENTRYPOINT(IOEFSCM) ENTRYPOINT(IOEFSCM)
ASNAME(ZFS) ASNAME(ZFS)
VERSION(’REL9’) VERSION(’REL9’)
SYSPLEX(YES) SYSPLEX(YES)
ROOT ROOT
FILESYSTEM(’OMVS.SYSPLEX.ROOT’) FILESYSTEM(’OMVS.SYSPLEX.ROOT’)
TYPE(ZFS) MODE(READ) TYPE(ZFS) MODE(READ)
MOUNT MOUNT
FILESYSTEM(’OMVS.SY1.SYSTEM.ZFS’) FILESYSTEM(’OMVS.SY2.SYSTEM.ZFS’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’) TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/SY1’) MOUNTPOINT(’/SY2’)
Figure 33. Sharing file systems: one version file system and separate BPXPRMxx members for each system in the
sysplex
dev OMVS.SY1.DEV
tmp OMVS.SY1.TMP
var OMVS.SY1.VAR
etc OMVS.SY1.ETC
Sysplex root file system
/ OMVS.SY1.SYSTEM.ZFS
SY1
SY2
...
bin $VERSION/bin
usr $VERSION/usr System-specific file system
lib $VERSION/lib /
opt $VERSION/opt bin /bin
samples $VERSION/samples usr /usr
$VERSION $VERSION/ lib /lib
$SYSNAME $SYSNAME/ opt /opt
dev $SYSNAME/dev samples /samples
tmp $SYSNAME/tmp
var $SYSNAME/var OMVS.SY2.DEV
dev
etc $SYSNAME/etc
tmp OMVS.SY2.TMP
u
var OMVS.SY2.VAR
etc OMVS.SY2.ETC
REL9
OMVS.SY2.SYSTEM.ZFS
OMVS.SYSPLEX.ROOT
SYSTEM/
dev
bin Not used in
tmp
usr a sysplex
var
lib environment
etc
opt
bin
samples /bin
usr /usr
lib /lib
…
opt /opt
u
samples /samples
OMVS.ROOT.ZFS
Figure 34. Sharing file systems in a sysplex: multiple systems in a sysplex using the same release level
In this scenario, where multiple systems in the sysplex are using the same version
file system, if ls –l /bin/ is issued from either system, the user expects to see the
contents of /bin. However, because /bin is a symbolic link pointing to
FILESYSTYPE FILESYSTYPE
TYPE(ZFS) TYPE(ZFS)
ENTRYPOINT(IOEFSCM) ENTRYPOINT(IOEFSCM)
ASNAME(ZFS) ASNAME(ZFS)
VERSION(’REL9A’) VERSION(’REL9’)
SYSPLEX(YES) SYSPLEX(YES)
ROOT ROOT
FILESYSTEM(’OMVS.SYSPLEX.ROOT’) FILESYSTEM(’OMVS.SYSPLEX.ROOT’)
TYPE(ZFS) MODE(READ) TYPE(ZFS) MODE(READ)
MOUNT MOUNT
FILESYSTEM(’OMVS.&SYSNAME..SYSTEM.ZFS’) FILESYSTEM(’OMVS.&SYSNAME..SYSTEM.ZFS’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’) TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME’) MOUNTPOINT(’/&SYSNAME’)
MOUNT MOUNT
FILESYSTEM(’OMVS.SYSR9A.ROOT.ZFS’) FILESYSTEM(’OMVS.SYSR9.ROOT.ZFS’)
TYPE(ZFS) MODE(READ) TYPE(ZFS) MODE(READ)
MOUNTPOINT(’/$VERSION’) MOUNTPOINT(’/$VERSION’)
MOUNT MOUNT
FILESYSTEM(’OMVS.&SYSNAME..DEV’) FILESYSTEM(’OMVS.&SYSNAME..DEV’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’) TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/dev’) MOUNTPOINT(’/&SYSNAME/dev’)
MOUNT MOUNT
FILESYSTEM(’OMVS.&SYSNAME..TMP’) FILESYSTEM(’OMVS.&SYSNAME..TMP’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’) TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME/tmp’) MOUNTPOINT(’/&SYSNAME/tmp’)
.
.
.
Figure 35. BPXPRMxx setup for multiple systems sharing file systems and using different release levels
bin $VERSION/bin
usr $VERSION/usr System-specific file system
lib $VERSION/lib /
$VERSION/opt bin /bin
opt
samples $VERSION/samples usr /usr
$VERSION $VERSION/ lib /lib
$SYSNAME $SYSNAME/ opt /opt
dev $SYSNAME/dev samples /samples
tmp $SYSNAME/tmp
var $SYSNAME/var dev OMVS. SY2. DEV
etc $SYSNAME/etc
tmp OMVS. SY2. TMP
u var OMVS. SY2. VAR
REL9 etc OMVS. SY2. ETC
REL9A
OMVS. SY2. SYSTEM. ZFS
OMVS. SYSPL EX. ROOT
Version file system
/
dev $SYSNAME/dev
tmp $SYSNAME/tmp
var $SYSNAME/var
etc $SYSNAME/etc
SYSTEM/
Figure 36. Sharing file systems between multiple systems using different release levels
In this scenario, for example, if ls –l /bin/ is issued on SY1, the user expects to see
the contents of /bin. However, because /bin is a symbolic link pointing to
$VERSION/bin, the symbolic link must be resolved first. $VERSION resolves to
/SYSR9A on SY1, which makes the path name /SYSR9A/bin. The contents of this
directory will now be displayed. If ls –l /bin/ is issued on SY2, the contents of
/SYSR9/bin will display.
From SY2 you can display information on SY1 by fully qualifying the directory.
FILESYSTYPE
TYPE(ZFS)
ENTRYPOINT(IOEFSCM)
PARM(’ ’)
VERSION(’&SYSR1.’)
SYSPLEX(YES)
ROOT
FILESYSTEM (’OMVS.SYSPLEX.ROOT’)
TYPE(ZFS) MODE(READ)
MOUNT FILESYSTEM(’OMVS.USER.ZFS’)
MOUNTPOINT(’u’) AUTOMOVE
TYPE(ZFS) MODE(READ)
MOUNTFILESYSTEM(’OMVS.&SYSNAME..SYSTEM.ZFS’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME.’)
MOUNT
FILESYSTEM(’OMVS.&SYSR1..ROOT.ZFS’)
TYPE(ZFS) MODE(READ)
MOUNTPOINT(’/$VERSION’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..DEV’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME./dev’)
MOUNT
FILESYSTEM(’OMVS.&SYSNAME..TMP’)
TYPE(ZFS) MODE(RDWR) UNMOUNT PARM(’NORWSHARE’)
MOUNTPOINT(’/&SYSNAME./tmp’)
.
.
.
Figure 37. One BPXPRMxx parmlib member for multiple systems sharing file systems and
using different release levels
In order to use one BPXPRMxx parmlib file system member, we have used another
system symbolic like &SYSR1. This system symbolic is used in the VERSION
parameter and also as a qualifier in the version file system data set name.
Rule: You must keep the automount policy consistent across all the participating
systems in the sysplex. The automount facility will not manage any directory until
it can process the entire policy without encountering any errors.
Your automount policy most likely resided in the /etc/auto.master and /etc/u.map
files. For those using shared file systems, each participating system has a separate
/etc file system. In order for the automount policy to be consistent across
For example, both SY1 and SY2 have the following files:
v /etc/auto.master
/u /etc/u.map
v /etc/u.map
name *
type ZFS
filesystem OMVS.<uc_name>.ZFS
mode rdwr
duration 60
delay 60
When the automount daemon initializes on SY1, it will read its local
/etc/auto.master file to identify what directories to manage; in this case, it is /u.
Next, the automount daemon will use the policy specified in the local /etc/u.map
file to mount file systems with the specified naming convention under /u. The
automount daemon on SY2 will perform similar actions. Because all mounted file
systems are available to all participating systems in the sysplex, your automount
policy must be consistent. This is true for the file system name specified in
/etc/u.map and the values for other parameters in /etc/u.map and /etc/auto.master.
All systems need to have the physical file system (PFS) started. Accomplish this by
placing the appropriate FILESYSTYPE statement in the BPXPRMxx parmlib
member that is used in the configuration. Additionally, any necessary subsystems
required by the PFS must be started and configured, especially if this system is to
function as the file system owner. For example, the NFS Client PFS requires that
the TCP/IP subsystem be started and a network connection configured.
The other systems that want to participate in shared file systems will also request
an RDWR mount, but their access will be provided via cross-system messaging
with the file system owner which has already established the read-write
connection. These systems are called file system clients. When the file system owner
becomes unavailable (for example, through system shutdown), it will be important
for another system (one of the file system clients) to have the file system volume
varied online so that a new owner can be established. This helps ensure maximum
file system availability in the shared file system group.
For a read/write mount to NFS Client, each system in the shared file system group
will make a direct connection to NFS. The first system to make such a connection
is still called the file system owner. All subsequent systems to make a direct
connection are considered non-owners, rather than clients. This type of multiple
direct connection for read/write access allows for maximum I/O performance by
eliminating the need to send requests to the file system owner.
As of z/OS V1R11, zFS provides the capability for sysplex-aware for update. This
support is configurable and can provide the following levels of support:
v No support for sysplex-aware for update. Like HFS file systems, zFS only
allows a single system to connect to the file system for update. All other systems
will function as client systems and will function-ship requests to the file system
owner system.
v Global support for sysplex-aware for update. zFS supports multiple concurrent
connections for update for all file systems.
v "Per file system" support for sysplex-aware for update. This level of support
requires z/OS UNIX APAR OA29712 and zFS APAR OA29619. It provides the
capability for specific file systems to be configured as sysplex-aware or
non-sysplex aware for update. Refer to z/OS Distributed File Service zFS
Administrationfor more information about configuring ZFS for sysplex-aware
capability.
Tips: When working with file systems in a sysplex, consider these tips:
v To check for file systems that have already been mounted, use the df command
from the shell.
v To move a file system in a sysplex, use the SETOMVS command used with the
FILESYS, FILESYSTEM, mount point and SYSNAME parameters. You can also
use the chmount command from the shell. However, do not move these two
types of file systems:
System-specific file systems
File systems that are being exported by DFS. You have to unexport them from
DFS first and then move them
Also, opened FIFO files are automatically closed before the file system containing
the FIFO is moved. They are closed because the in-storage FIFO data on the old
system is not moved and is no longer accessible on new owning system.
Share Reservations that attempt to deny reading or writing for files in a read-only
file system are accepted but will not be enforced.
Restrictions: A file system cannot be moved to a back-level system while there are
active Share Reservations on any file in the file system. You will have to move the
file system to a sysplex member at the z/OS V1R7 release level or later.
Alternatively, you can stop the applications at the NFS clients who have put
reservations on the files, or wait for them to finish.
If an NFS client is going to open a file that has Share Reservations set:
v That file must be owned by a system at the z/OS V1R7 level or higher before it
can be opened.
v If the file is owned by a remote system that supports Share Reservations, they
are enforced at the owner for all opens within the sysplex.
v If the file is owned by a remote system at a lower level, the client's open will
fail. The reason code of the failure will indicate that the file system has to be
moved to a sysplex member that is at the z/OS V1R7 release or later.
If the system goes down and there are Share Reservations on a file owned by a
remote system:
For file systems that are mounted as read-only, specific I/O operations that were in
progress at the time the file system owner failed might need to be started again.
Applications using files in unowned file systems will need to close (BPX1CLO)
those files and reopen (BPX1OPN) them after the file system is recovered. File
systems that are mounted as NOAUTOMOVE will become unowned when the file
system owner exits the sysplex. The file system will remain unowned until the
Recovery processing for the file systems that are owned by a failed system is
managed internally by all the systems in the participating group. If you want
special considerations for the placement of certain file systems, you can use the
options provided by the various mount services to specify the original owner and
subsequent owners for a particular file system.
“Customizing BPXPRMxx for a shared file system” on page 185 describes the
behavior of the various AUTOMOVE options.
Table 25 shows the AUTOMOVE options that you can use with the MOUNT
command to manage file systems.
Table 25. AUTOMOVE options supported by the MOUNT command. This table lists the automove options supported
by the MOUNT command.
Automove option Action
UNMOUNT Attempts will not be made to keep the file system active when the current owner fails.
The file system is unmounted when the owner is no longer active in the participating
group, as well as all the file systems mounted within it.
Tip: Use UNMOUNT when mounting system-specific file systems, such as those that
would be mounted at /etc, /dev, /tmp and /var.
When the NOAUTOMOVE option is used, the file system becomes unowned when the
owning system exits the participating group. The file system remains unowned until the
last owning system restarts, or until the file system is unmounted. Because the file system
still exists in the file system hierarchy, the mount point for the file system is still in use.
An unowned file system is a mounted file system that does not have an owner. Because it
still exists in the file system hierarchy, it can be recovered or unmounted.
AUTOMOVE without a Recovery of the file system is performed when the current owner fails. Use this option on
system list mounts of file systems that are critical to operation across all the systems in the
participating group. AUTOMOVE is the default.
AUTOMOVE with a AUTOMOVE(EXCLUDE|INCLUDE,sysname1,sysname2,...sysnameN) specifies managed
system list recovery of the file system if the current owner fails.
v Use the EXCLUDE list to prevent recovery of a file system from transferring ownership
to a particular system, or set of systems, in the participating group. When the current
owner fails, recovery of the file system is performed to an owner outside the exclude
list. When the current owner fails, recovery of the file system is performed to a
randomly selected owner outside the exclude list.
v Use the INCLUDE list to ensure that recovery of a file system will transfer ownership
only to a particular system or set of systems in the participating group. Recovery of the
file system is performed in priority order only by the list of systems specified in the
INCLUDE list.
Restriction: Only use this option on mounts of file systems that are critical to operation
across a subset of systems in the participating group, or when you do not want certain
systems in the participating group to have ownership of the file system.
If recovery processing fails to establish a new owner for the file system, the file system is
unmounted, along with all the file systems mounted within it.
Most of the z/OS UNIX interfaces that provide for mounting file systems (such as
TSO, shell, ISHELL, and BPX2MNT) support some form of the options described in
“Customizing BPXPRMxx for a shared file system” on page 185. See the associated
documentation for the exact syntax.
Guideline: To ensure that the root is always available, use the default, which is
AUTOMOVE.
For file systems that are exported by the Distributed File System (DFS) or System
Message Block (SMB) server to their remote clients, consider specifying
NOAUTOMOVE on the MOUNT statement. Then the file systems will not change
ownership if the system is suddenly recycled, and they are available for automatic
re-export. Specifying NOAUTOMOVE is suggested because a file system can only
be exported by the DFS or SMB server at the system that owns the file system.
Once a file system has been exported, it cannot be moved until it has been
unexported by the server that exported it.
In addition, when recovering from system outages, you need to weigh sysplex
availability against availability to the server. When an owning system recycles and
Tip: When an original owner system reinitializes, you might want to move the
read/write file system back to this original owner if the original owner is the
primary system that accesses the file system and if the PFS does not support
accessing the read/write file system in a sysplex-aware mode. Better performance
should occur when the file system is locally mounted (owned) at the system that
most frequently accesses the file system. See also “File system availability” on page
202 and “Tuning z/OS UNIX performance in a sysplex” on page 213.
The current AUTOMOVE option dictates if and how the participating group
recovers file system ownership from an exited system. It has no effect on the
manual movement of the file system. However, when you are using the procedures
for shutting down z/OS UNIX to prepare for a planned system outage, the
AUTOMOVE option does apply. This can be explained with the following
rationale:
v A system failure does not provide any means for manual intervention. The
AUTOMOVE option provides a set of rules for automatic recovery.
v A request to move a file system manually is a deliberate action on behalf of an
authorized user or administrator, and should override any rules for automatic
recovery.
v Using tools to prepare for a system outage is also a deliberate action on behalf
of an authorized user or administrator, but you are using these tools in an
environment that can be customized to allow for additional manual intervention.
You can synchronize data before the system outage, and then manage the
planned outage in the same way as the unplanned outage, by making use of the
automatic recovery rules that are supplied by the automove options. If you
prefer some other action, you can perform manual intervention to move specific
file system ownership before you use these methods for shutdown preparation.
File systems that are not owned by the system on which the shutdown was issued
are not affected.
Other examples of activities occurring on other active systems that can cause the
initializing system to experience delays are
v Unmounting a file system
v Changing ownership of a file system
v Recovering for systems that have left the participating group
Before it rejoins the participating group, a system processes all the file systems that
are listed in the current hierarchy of the participating group. It also attempts to
reclaim any unowned file systems that it previously owned when it was part of the
participating group. It does not attempt to reclaim those file systems that were
successfully moved or recovered to another system in the sysplex.
While a system is initializing in a sysplex, critical file systems that are necessary
for initialization to complete successfully might become unavailable due to a
system outage. When a system is removed from the sysplex, there is a window of
time during which any file systems it owned will become inaccessible to other
systems. This window of time occurs while other systems are being notified of the
system's exit from the sysplex and before they start the cleanup for that system.
Ideally, ownership of critical file systems will have been moved to other systems
before the system exits. If that has not happened, there will be a window of time
during which these critical file systems are unowned. If the initializing system
requires access to these critical file systems during this window, there will likely be
mount failures that prevent the initialization from completing successfully. To
avoid this situation, you must make sure that any system that is being removed
from the sysplex does not own any critical file systems.
The lock manager is initialized on every system in the sysplex. This is known as
distributed BRLM, and it is the only supported byte range locking method. Each
BRLM is responsible for handling locking requests for files whose file systems are
mounted locally in that system.
z/OS UNIX backs up each lock in the application's system when the actual lock is
stored in another system. This redundant locking provides recovery of locks when
a system in the sysplex terminates abnormally. If z/OS UNIX is able to
successfully recover a file system, then it restores the locks held for files in that file
system. Doing so prevents error conditions from occurring.
If the following situations occur, the locks for the corresponding files are
considered to be lost:
v z/OS UNIX cannot recover the file system and unmounts it, including
unmounting due to a MODIFY OMVS,STOPPFS command.
v NOAUTOMOVE was specified for the file system.
v Any lock for a file was not successfully backed up.
Existing applications that have locked those files are prevented from accessing
those files. Specifically, after a failure where byte range locks are lost, z/OS UNIX
provides the following information to processes that have used byte range locking:
v Access to open files for which byte range locks are held by any process will
result in an I/O error. The file must be closed and reopened before use can
continue.
v A signal is issued to any process which has made use of byte range locking. By
default, a SIGTERM signal is issued against every such process and an EC6
abend with reason code 0D258038 will terminate the process. If you do not want
the process to be terminated, the process can use BPX1PCT (the physical file
system control callable service) to specify a different signal for z/OS UNIX to
use for notifying the process that the BRLM has failed. Any signal can be used
for this purpose, thus allowing the user or application the ability to catch or
ignore the signal and react accordingly.
z/OS MVS System Codes describes the system completion code EC6 and its
associated reason codes. See z/OS UNIX System Services Programming: Assembler
Callable Services Reference for more information about BPX1PCT.
While $VERSION/ can be used to differentiate a path based on the version level of
a system and $SYSNAME/ can be used to differentiate on each system, you can
use special identifiers to mount file systems using symbolic links. These are
$SYSSYMR/template and $SYSSYMA/template.
Tip: You can use D SYMBOLS to display the current settings of system symbols.
These examples assume that the standard MVS symbol &SYSR1. resolves to
OSV315 on SY1 and resolves to OSV315B on SY2.
1. If the symbolic link is /x/y/sym1, and the symbolic link contains
$SYSSYMR/&SYSR1./resdir, a path name lookup on /x/y/sym1 from SY1 will
resolve the symbolic link to OSV315/resdir. Because it is a relative path name
(the identifier was $SYSSYMR/), the resulting path name will be
/x/y/OSV315/resdir.
Example: On a mount, passing /x/y/sym1 as the input mount point path
name, the mount point would be: /x/y/OSV315/resdir on SY1.
v If the symbol &SYSR1. resolves to OSV315B on SY2, a lookup of the same
path name would result in a mount point of /x/y/OSV315B/resdir.
v On a v_readlink syscall, passing the VnToken for the symbolic link, the
output linkname would be OSV315/resdir on SY1 or OSV315B/resdir on
SY2.
2. If the symbolic link is /x/y/sym1, and the symbolic link contains
$SYSSYMA/&SYSR1./resdir, a path name lookup on /x/y/sym1 from SY1 will
resolve the symbolic link to /OSV315/resdir. Because it is an absolute path
name (the identifier was $SYSSYMA/), the resulting path name will be
/OSV315/resdir.
Example: On a mount, passing /x/y/sym1 as the input mount point path
name, the mount point would be /OSV315/resdir on SY1.
v If the symbol &SYSR1. resolves to OSV315B on SY2, a lookup of the same
path name from SY2 would result in a mount point of /OSV315B/resdir.
v On a v_readlink syscall, passing the VnToken for the symbolic link, the
output linkname would be /OSV315/resdir on SY1 and /OSV315B/resdir on
SY2.
In a sysplex, the NFS Client-NFS Server relationship is as follows: the data that
becomes accessible is accessible from any place in the sysplex as long as at least
one of the systems has connectivity to the NFS server. Entries in the NFS Server
Export Data Set can control which UNIX directories can be mounted by client
users. You can specify either fully qualified path names or symbolic links.
For example, assume that a user on SY1 requests a read on a file system mounted
R/W and owned by SY2. Using shared file system support, SY1 sends a message
requesting this read to SY2 via an XCF messaging function:
SY1 ===> (XCF messaging function) ===> SY2
After SY2 gets this message, it issues the read on behalf of SY1, and gathers the
data from the file. It then returns the data via the same route the request message
took:
SY2 ===> (XCF messaging function) ===> SY1
Thus, adding z/OS UNIX to a sysplex increases XCF message traffic. To control
this traffic, closely monitor the number and size of message buffers and the
number of message paths within the sysplex. It is likely that you will need to
define additional XCF paths and increase the number of XCF message buffers
above the minimum default. For more information on signaling services in a
sysplex environment, see z/OS MVS Setting Up a Sysplex.
Be aware that because of I/O operations to the CDS, every mount request requires
additional system overhead. Mount time increases as a function of the number of
mounts, the number of members in a sysplex, and the size of the CDS. You will
need to consider the effect on your recovery time if a large number of mounts are
required on any system participating in a shared file system.
To recover from system outages, you need to weigh sysplex availability against
availability to the DFS and SMB clients. When an owning system is recycled and
an exported file system has been taken over by one of the other systems, that file
system will not be automatically reexported. The file system will have to be moved
from its current owner back to the original system, the one that has just been
recycled, and then reexported.
In order for either the DFS or SMB server to move file systems to itself when they
are not owned locally, the following server configuration option can be specified:
_IOE_MOVE_SHARED_FILESYSTEM=ON.
Lists of subtasks
Subtask Associated procedure
Invoking the shell automatically under “Steps for enabling shell users to invoke the
TSO/E shell automatically” on page 216
Customizing the /etc/profile file “Steps for customizing /etc/profile” on page
223
Customizing the /$HOME/.profile file “Steps for customizing $HOME/.profile” on
page 225
Customizing the /etc/rc file “Steps for customizing /etc/rc” on page 231
Customizing the /etc/inittab file “Steps for customizing /etc/inittab” on page
234
See z/OS UNIX System Services User's Guide for a description of these interfaces to
the shell.
After the user logs in to the shell, the system initializes the shell. See “Customizing
the z/OS UNIX shells” on page 217 for information about customizing the shell
invocation.
The automatic invocation can be set up by the system programmer or by the shell
user.
Perform the following steps to enable shell users to invoke the shell automatically
when they log on to TSO/E.
1. Select or create a TSO/E logon procedure for users who want to invoke the
shell automatically when they log on to TSO/E
_______________________________________________________________
2. In the logon procedure, add a PARM parameter to the EXEC statement for
program IKJEFT01.
// EXEC PGM=IKJEFT01, ...
// PARM=OMVS
_______________________________________________________________
3. Tell users to specify the procedure on the TSO/E logon panel on the line:
Procedure ===>
_______________________________________________________________
When you are done, you have enabled shell users to invoke the shell automatically
when they log on to TSO/E.
Tip:
v To customize the OMVS command for all shell users, you can create a REXX
exec with the customized options. Then specify the name of the REXX exec in
the PARM parameter, instead of with the OMVS command. In the exec, for
example, you can specify the following changes:
– Use of the 3270 alarm.
– Number of sessions. (The default is 1.) For example:
OMVS SESSIONS (3)
– The key or keys to be used for escape.
– The settings for the function keys.
– The table to be used for code page conversion.
– Shared address space.
v To customize any of the default function key settings, type your selection within
the parentheses after the function key name.
To make function key 1 (<PF1>) the Control key, issue:
OMVS PF1(CONTROL)
You can now perform the steps for the decision you have made.
TSO/E processes this command each time the user logs on until the user deletes
the command from the panel or changes it.
Tip: You might want to invoke OMVS from ISPF for the following reasons:
1. It is faster to invoke an ISPF dialog such as OEDIT or OBROWSE because ISPF
does not need to start and stop to run the command.
2. It is not necessary to type *** and press <Enter> after running an ISPF dialog;
control returns to the shell.
3. You can use split-screen support when using an ISPF dialog.
For information about REXX, see z/OS TSO/E REXX Reference and z/OS TSO/E
REXX Reference
If you are using the /etc/profile for the z/OS shell or /etc/csh.login for the tcsh
shell, you might need to review them and make any necessary adjustments.
Similar systems typically have an /etc/passwd file, which contains the HOME and
PROGRAM environment variables. The file also contains the passwords and
password phrases that are used. To provide better security, the z/OS shell does not
use the /etc/passwd file; instead, it uses the initial values assigned to these
variables in the RACF user profiles. RACF maintains the passwords and password
phrases.
Later settings take precedence. For example, the values set in $HOME/.profile
override those in /etc/profile.
Depending on the commands used to set it, an environment variable can be local
(used only for the current process) or exported (used for the current process and for
any other processes spawned by the current process).
Later settings take precedence. For example, the values set in $HOME/.login
override those in /etc/csh.login.
Customizing /etc/profile
The /etc/profile file is the system-wide profile for the z/OS shell users. It
contains environment variables and commands used by most shell users. To
improve system performance, use STEPLIB=none.
and /etc/csh.login from that system to the z/OS system and merging them with
the z/OS samples.
# ======================================================================
# TZ environment variable
# -----------------------
# Specifies the local time zone.
# =====================================================================
TZ=EST5EDT
export TZ
# ======================================================================
# LANG environment variable
# -------------------------
# Specifies the language you want the messages to displayed in.
# For Japanese: LANG=Ja_JP
# ======================================================================
LANG=C
export LANG
# ======================================================================
# LOGNAME environment variable
# ----------------------------
# This environment variable is set when ’logging’ into the shell
# environment. You can avoid accidental modification to this variable
# by making the LOGNAME variable read-only.
# ==================================================================
readonly LOGNAME
# ======================================================================
# PATH environment variable
# -------------------------
# Specifies the list of directories that the system searches for an
# executable command. If you want to include the current working
# directory in your search order, then the enviroment variable would
# be
# PATH=/bin:.
#
# The current working directory is represented by dot (’.’) .
LIBPATH=/lib:/usr/lib:.
export LIBPATH
# ==================================================================
## NLSPATH environment variable
# --------------------------–-
# Specifies the list of directories that the system searches for
# message catalogs (NLS files). The %L represents the language currently
# set by the LANG environment variable, and %N represents the name
# of the message catalog.
# ================================================================
NLSPATH=/usr/lib/nls/msg/%L/%N
export NLSPATH
# ======================================================================
# MANPATH environment variable
# ----------------------------
# Specifies the list of directories that the system searches for man
# pages (help files). The %L represents the language currently set by
# the LANG environment variable.
# ======================================================================
MANPATH=/usr/man/%L
export MANPATH
# ======================================================================
# MAIL environment variable
# -------------------------
# Sets the name of the user’s mailbox file and enables mail
# notification.
# ========================================================
MAIL=/usr/mail/$LOGNAME
export MAIL
# ======================================================================
# umask variable
# --------------
# Sets the default file creation mask - reference umask in the z/OS
# UNIX System Services Command Reference
# ======================================================================
umask 022# ======================================================================
# Start of c89/cc/c++ customization section
# ======================================================================
#
# The following environment variables are used to provide information
# to the c89/cc/c++ utilities, such as (parts of) data set names which
# are dynamically allocated.
#
# ######################################################################
#
# for _CMP in _C89 _CC _CXX; do
##
# High-Level Qualifier "prefixes" for data sets used by c89/cc/c++:
# ======================================================================
#
## C/C++ Compiler:
# ----------------------------------------
# export ${_CMP}_CLIB_PREFIX="CBC"
The user can then just issue buildapp. The first time buildapp is run, it is
found in FPATH, defined in the current shell, and executed. After that first
time, every time buildapp is issued (within the same shell), the shell
executes buildapp without first searching for that function.
FPATH follows the same format as the PATH environment variable.
NLSPATH
Specifies the path that the messaging service will use to find a message
catalog.
LANG
Contains the default locale name.
MAIL Define the name of the system mail file and enables notification of mail. If
you plan to use a mail file other than /usr/mail (for example, /usr/notes),
set the variable as follows:
MAIL=/usr/notes/$LOGNAME
STEPLIB
Defines libraries that should be searched to load MVS load modules.
Normally, installations should specify STEPLIB=NONE to prevent the
propagation of STEPLIBs. If a STEPLIB environment variable is needed,
specify only the required library. For example:
STEPLIB=CEE.SCEERUN:CEE.SCEERUN2
Customizing $HOME/.profile
The optional $HOME/.profile file contains commands that set or change the values
of environment variables for an individual user. (HOME is a variable for the path
name for a user's home directory.) The values set in $HOME/.profile can override
those in /etc/profile.
# ENV=$HOME/.setup
# export ENV
PATH=$PATH:$HOME:
EDITOR=ed
PS1=’$LOGNAME’:’$PWD’:’ >’
Customizing /etc/init.options
The file /etc/init and /usr/sbin/init are referred to synonymously as the
initialization program that is run when the OMVS address space is initialized.
/usr/sbin/init and the customized /etc/init.options and /etc/rc are run at IPL.
There is no other way to invoke them explicitly.
Before /usr/sbin/init invokes the shell to execute the system initialization shell
script, it reads the file /etc/init.options for values of various options. The
IBM-supplied default is in /samples/init.options. Copy this file to
/etc/init.options and make the appropriate changes. If you already have
/etc/init.options, then compare it to /samples/init.options and retrofit any
new updates.
where:
v oo is a field of one or more nonblank characters immediately following the
hyphen that identifies the option. The end of the option field is delimited by one
or more blanks.
v vvvvv is a field of one or more nonblank characters that specify an option value.
These characters are numeric, alphabetic, or a combination of both, depending
on the option being specified. The end of the value field is delimited by one or
more blanks.
Following is a sample /etc/init.options file showing the time zone, the Japanese
language, and the locale:
-e TZ=JST-9
-e LANG=Ja_JP
-e NLSPATH=/usr/lib/nls/msg/%L/%N
Tip: You can use a REXX exec in an MVS data set as an alternative to running the
/etc/init initialization program. To activate the REXX exec for initialization, you
must specify its name on the STARTUP_EXEC statement in the BPXPRMxx
parmlib member.
Customizing /etc/rc
The /etc/rc file contains customization commands for z/OS UNIX System
Services Application Services. Copy the IBM-supplied /samples/rc file to /etc/rc,
as described in “Steps for customizing /etc/rc” on page 231 and customize it.
# Invoke vi recovery
#
#----------------------------------------------------------
# Added in HOT7750 to eliminate a manual migration action.
#
# Remove all files in the man cache that were created by the
man command for the default MANPATH directory.
#
# NOTE: This loop only removes files for a subset of the LANG values
# possible. Administrators should customize the loop to include
# the LANG values supported on their system.
#----------------------------------------------------------
for MAN_CACHE_LANG in C Ja_JP Zh_CN ; do
[[ -d /var/man/$MAN_CACHE_LANG ]] && rm /var/man/$MAN_CACHE_LANG/*.[0-9].*
done
sleep 5
echo /etc/rc script executed, `date`
Rule: The /etc/inittab file must be installed into the file system before the
system is IPLed or before it is restarted. It is processed only once during
initialization and also once during OMVS restart.
The colon character (:) is used as a delimiter. To comment out an entry in the
/etc/inittab file, add : or # at the beginning of the entry.
You can change the path name of the target shell via the -sh option in the
/etc/init.options file, but if respawn is required, this action is not
suggested.
Tip: You might see a message indicating that an inittab entry was started
successfully although the command might not have run successfully. This is the
case if the syntax of the inittab entry was correct but the command path was not a
valid path name.
etcrc::wait:/etc/rc
inetd::respfrk:/usr/sbin/inetd /etc/inetd.conf
msgend::once:/bin/echo Done processing /etc/inittab >/dev/console
Because the first entry, /etc/rc, does not have redirection specified, standard output
and standard error are both directed to /etc/log.
You want to get the equivalent function using /etc/inittab. To do so, add the
following entry to the /etc/inittab file:
cron::once:/usr/sbin/cron
The first positional, the identifier, is CRON. This will assign the job name of
CRON to the started process. You do not need to set _BPX_JOBNAME. The
& at the end of the /etc/rc entry is not needed in the /etc/inittab file. The &
indicates the process is to be started in the background and should be
forked, ensuring it gets the job name specified by _BPX_JOBNAME. Starting
the process from the /etc/inittab file ensures the started process gets the job
name as the specified identifier.
v To start cron the same way but with the additional function of assigning it
the respawn capability, add the following entry to the /etc/inittab file:
cron::respfrk:/usr/sbin/cron
Guideline: For commands that are only run once (during initialization),
consider keeping them in /etc/rc. Consider starting daemons (long-running
commands that service user requests) from /etc/inittab.
_______________________________________________________________
3. If you have an entry for /etc/rc, remove any command entry from /etc/rc that
you have added to /etc/inittab.
_______________________________________________________________
4. Save the file.
_______________________________________________________________
When you are done, you have customized the /etc/inittab file.
Customizing /etc/csh.login
The /etc/csh.login file is used for setting environment variables such as TERM
and is only read by tcsh when it is a login shell.
tty -s
set tty_rc=$status
if (($?STEPLIB == 0 ) && ($tty_rc == 0)) then
setenv STEPLIB none
exec tcsh -l
endif
unset tty_rc
setenv TZ EST5EDT
setenv LANG C
setenv LIBPATH /lib:/usr/lib:.
setenv MAIL /usr/mail/$LOGNAME
# ==============================================================
# Start of c89/cc/c++ customization section
# ==============================================================
# foreach _CMP(_C89_CC_CXX)
# setenv ${_CMP}_CLIB_PREFIX "CBC"
# setenv ${_CMP}_PLIB_PREFIX "CEE"
# setenv ${_CMP}_SLIB_PREFIX "SYS1"
# setenv ${_CMP}_INCDIRS "/usr/include /usr/lpp/cbclib/include"
# setenv ${_CMP}_LIBDIRS "/lib /usr/lib"
#
#Esoteric unit for data sets:
# setenv ${_CMP}_WORK_UNIT "SYSDA"
#end
# unset _CMP
#
# =================================================================
# End of c89/cc/c++ customization section
# =================================================================
Customizing $HOME/.login
To change or add environment variables such as TERM that are customized for
individual users, first use the cp command to copy /samples/.login to
$HOME/.login. Then edit the file to change or add environment variables. The
$HOME/.login file is only read by tcsh when it is a login shell.
Customizing /etc/csh.cshrc
The /etc/csh.cshrc file is the system-wide profile for tcsh shell users and is read by
subshells.
236 z/OS V2R1.0 UNIX System Services Planning
Figure 41 shows suggested settings for /etc/csh.cshrc provided in the IBM-supplied
/samples/csh.cshrc:
# =================================================================
# path shell variable
# =================================================================
#
# Specifies the list of directories that the system searches for an
# executable command.
set path = (/bin)
# =================================================================
#
# umask variable
#
umask 022
# ==================================================================
Use the cp command to copy the /samples/csh.cshrc file to /etc/csh.cshrc. Then edit
/etc/csh.cshrc to change or add shell variables.
Customizing $HOME/.tcshrc
The $HOME/.tcshrc file contains commands that set or change the values of shell
variables for individual users and is read by subshells. HOME is a variable for the
path name for a user's home directory. The values set in $HOME/.tcshrc override
those in /etc/csh.cshrc.
Use the cp command to copy /samples/.tcshrc to your $HOME directory. Then edit
the new file to change or add shell variables.
Customizing /etc/complete.tcsh
The /etc/complete.tcsh file contains programmed completions that might be useful
to the user. Programmed completions associate specific types of completion with
individual commands.
After you configure the system for man pages, you can use the man command
(which works from within the z/OS UNIX shell) to view the available commands
online in man page format.
If you are not using the default data set EPH.SEPHTAB, you will have to copy the
sample EPHWP00 parmlib member from SEPHSAMP into SYS1.PARMLIB. The
EPHWP00 sample member contains one line of left-aligned text, "EPH" , which is
the IBM-supplied prefix for the SEPHTAB data set. If you change this prefix, you
must then change the "EPH" statement to match the new prefix. Make sure that the
prefix is left justified on the first line of the EPHWP00 member
z/OS UNIX System Services Command Reference, in its c89 section, assumes that the
current level of the z/OS XL C/C++ compiler and Language Environment runtime
library will be used. If you must use a previous level of the compiler, then you
must customize other environment variables, which are only documented here.
The environment variables used by the cc command have the same names as the
ones used by c89, except that the prefix is _CC instead of _C89. Likewise, for the
c++ (cxx) command, the prefix is _CXX instead of _C89. Normally, you do not
need to explicitly export the environment variables for all three commands; the "for
loop" at the bottom of the c89 customization section can be used. This "for loop"
sets the variables for all the c89/cc/c++ (cxx) commands.
By putting any customization statements for c89 into /etc/profile for the z/OS
shell (or /etc/csh.login for the tcsh shell) and commenting out those lines, the
environment variables are automatically exported for c89, cc, and c++ (cxx). See
“Customizing /etc/profile” on page 219 and “Customizing /etc/csh.login” on
page 235 for more information.
Using the command names common to the xlc and c89 utility
The c89 and xlc commands support the c89, cxx, cc, and c++ command names.
Users can use the c89 or xlc versions of these commands.
The c89 utility is installed in the /bin directory. To use the c89 version of these
commands, the /bin directory must precede the /usr/lpp/cbclib/xlc/bin directory in
the PATH environment variable.
If the /bin directory precedes the /usr/lpp/cbclib/xlc/bin directory, you can still use
the xlc version of these commands. To do so, use one of xlc, xlC, xlc++ and related
command names (such as those with the _x and _64 suffix) and the -F option.
Example: To invoke the xlc utility using the c89 command names, issue:
xlc -F:c89
If you are using the z/OS shell, issue the following commands to set the
environment variables:
LANG=En_US
NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat
PATH=/bin/c89:/usr/lpp/cbclib/xlc/bin${PATH:+${PATH}}
export LANG NLSPATH PATH
If you are using the tcsh shell, issue the following commands to set the
environment variables:
setenv LANG=En_US
setenv NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat
setenv PATH=/bin/c89:/usr/lpp/cbclib/xlc/bin${PATH:+${PATH}}
Before using the compiler, you need to install the message catalogs and set the
environment variables as described in the xlc utility description in z/OS UNIX
System Services Command Reference.
You can set {_INCDIRS} to a null string. Some examples are provided:
v For the z/OS shell:
export _C89_INCDIRS=" "
Or, if you have other directories that you want to be automatically searched, you
can add them to {_INCDIRS}, as long as the default directories are not used with
this environment variable.
If you need to define other terminal or workstations for a terminfo database, see
“Steps for defining terminals or workstations for a terminfo database.”
_______________________________________________________________
4. Issue the tic command, specifying the terminal file. For example:
tic /u/myhome/terminfo/pc.ti
_______________________________________________________________
When you are done, you have defined terminals or workstations for the terminfo
database.
Users can give names to mail files using variables in $HOME/.profile or they can
use files with the default names. See “Customizing $HOME/.profile” on page 225.
See z/OS UNIX System Services User's Guide for information about locale objects,
source files, and charmaps that the UNIX System Services Application Services
support.
Lists of subtasks
Subtask Associated procedure
Setting up your national code page “Steps for setting up your national code
page”
Customizing for Japanese and Simplified “Steps for customizing the login file for the
Chinese z/OS shell” on page 250
Before you begin: You need to have the login file for your shell.
1. For the z/OS shell, copy /samples/profile to /etc/profile. You might have
already done this, as described in “Customizing /etc/profile” on page 219.
2. For the tcsh shell, copy /samples/csh.login to /etc/csh.login. You might have
already done this, as described in “Customizing /etc/csh.login” on page 235.
Perform the following steps to set up your national code page for shell users.
1. Customize the login file for your shell.
_______________________________________________________________
2. Convert from ASCII to your national code page. Use the chcp command to
change the data conversion for rlogin sessions.
v For the z/OS shell, the following sample /etc/profile shows examples of
statements to convert the terminal session data using ASCII code page
ISO8859-1 and EBCDIC code page IBM-277. This example uses the Danish
locale.
if test -z "$LOCALE_SWITCH" && tty -s
then
echo " - - - - - - - - - - - - - - - - - - - - - - - - - - - "
echo " - Logon shell will now be invoked to reflect - "
echo " - code page IBM-277 - "
echo " - - - - - - - - - - - - - - - - - - - - - - - - - - - "
LOCALE_SWITCH=EXECUTED
LANG=C
LC_ALL=Da_DK.IBM-277
export LANG LC_ALL LOCALE_SWITCH
v For the tcsh shell, the following sample /etc/csh.login shows examples of
statements to convert the terminal session data using ASCII code page
ISO8859-1 and EBCDIC code page IBM-277. This example uses the Danish
locale.
_______________________________________________________________
3. Convert these files to your selected locale, using the iconv command.
v /etc/yylex.c
v /etc/mailx.rc
v /etc/startup.mk
v /etc/yyparse.c
The lex, mailx, make, and yacc utilities expect both system files and user files
to be in the same code page.
Example: To convert /etc/mailx.rc to be used in the Da_DK.IBM-277 locale,
issue:
iconv -f IBM-1047 -t IBM-277 /etc/mailx.rc >/etc/mailx.rc.277
_______________________________________________________________
4. Update BPXBATCH or OSHELL, if necessary.
Tip: If you use BPXBATCH or OSHELL (which uses BPXBATCH), you must do
this step in order to get the code page working immediately under BPXBATCH
and OSHELL. Use the STDENV ddname to point to a file or data set that
contains the environment variable definitions for the code page. The code page
you specify will not affect the shell because ddname is read before the first
shell is invoked, (Because the STDENV DD statement does not affect the OMVS
command, you need to put the environment variables in /etc/profile.)
For more information about BPXBATCH and STDENV, see z/OS UNIX System
Services User's Guide.
_______________________________________________________________
5. If you need to customize for Japanese or Simplified Chinese, go to
“Customizing for Japanese and Simplified Chinese” on page 250.
_______________________________________________________________
6. If you do not need to customize for Japanese or Simplified Chinese, save the
login file.
v For the z/OS shell, it is /etc/profile.
v For the tcsh shell, it is /etc/csh.login.
_______________________________________________________________
When you are done, you have set up your national code page.
Chapter 9. Customizing for your national code page in the shell 249
If you entered the shell before the code page was set up, you will see $HOME.
Otherwise, the shell will display the path name of your home directory. The $
should be read as your code page's dollar sign.
Tip: You can set the system default to display translated messages. “Steps for
activating MVS Message Service (MMS)” on page 251 describes the procedure.
The examples are for Japanese. Equivalent changes are required to customize for
Simplified Chinese.
Steps for customizing the login file for the z/OS shell
Before you begin: You need to have /etc/profile set up so that you can edit it.
Perform the following steps to customize the login file for the z/OS shell so that it
runs in the Japanese locale.
1. Change the line LANG=C to LANG=Ja_JP.
_______________________________________________________________
2. Add the following line:
LC_ALL=Ja_JP.IBM-939
_______________________________________________________________
3. Enable man to use the more command as its pager:
setenv MANPAGER /bin/more
_______________________________________________________________
4. Ensure that LANG and LC_ALL are specified on the line containing export.
_______________________________________________________________
5. Save /etc/profile.
_______________________________________________________________
When you are done, you have customized the login file for the z/OS shell so that
it runs in the Japanese locale.
Steps for customizing the login file for the tcsh shell
Before you begin: You need to have /etc/csh.login set up so that you can edit it.
Perform the following steps to customize the login file for the tcsh shell so that it
runs in the Japanese locale.
1. Change the line setenv LANG=C to LANG=Ja_JP.
_______________________________________________________________
2. Add the following line:
setenv LC_ALL Ja_JP.IBM-939
_______________________________________________________________
3. Enable man to use the more command as its pager:
When you are done, you have customized the login file for the tcsh shell so that it
runs in the Japanese locale.
When you are done, you have customized the /etc/init to display messages in
Japanese.
Chapter 9. Customizing for your national code page in the shell 251
When you are done, you have activated the MVS Message Service; translated
messages will be displayed.
TSO/E messages
TSO/E messages are issued through MVS Message Service. For more information,
see the topic on providing translated messages in z/OS TSO/E Customization.
If you do not want Japanese or Simplified Chinese to be the default language, but
want to see translated messages on your terminal, follow these instructions:
v For Japanese, issue PROFILE PLANGUAGE(JPN) at the TSO/E READY prompt
on your DBCS terminal. This TSO/E command sets the primary language. The
code JPN must match the LANGCODE statement in
SYS1.PARMLIB(MMSLSTxx).
v For Simplified Chinese, issue PROFILE PLANGUAGE(CHS) at the TSO/E
READY prompt on your DBCS terminal. The code CHS must match the
LANGCODE statement in SYS1.PARMLIB(MMSLSTxx).
See the topic in z/OS TSO/E Customization for more information about setting up
help data sets.
To use the Simplified Chinese translation, concatenate the following target libraries
to the appropriate ISPF ddnames:
v SYS1.SBPXPCHS to ISPPLIB
v SYS1.SBPXMCHS to ISPMLIB
v SYS1.SBPXTCHS to ISPTLIB
v SYS1.PHELP to SYSHELP
Chapter 9. Customizing for your national code page in the shell 253
254 z/OS V2R1.0 UNIX System Services Planning
Chapter 10. Configuring the UNIX-to-UNIX copy program
(UUCP)
UNIX-to-UNIX copy program (UUCP) is a group of programs, directories, and files
that can be used to communicate with any UNIX system that is running a version
of the UNIX-to-UNIX copy program (UUCP). A UUCP network traditionally
consists of a group of computers joined in a network using serial connections or
TCP/IP. The z/OS UNIX implementation of UUCP uses TCP/IP; it does not
provide modem support. It is also XPG4-compliant.
The UUCP functions are used to automatically transfer files and requests for
command execution from one UUCP system to another, typically in batch mode at
scheduled intervals. You can use UUCP for file transfer, remote command
execution, and custom applications.
If you use a UUCP utility to transfer a file or execute a remote command, a job
request is created and queued. Depending on how UUCP has been configured at
your system, the job might be processed immediately or remain queued and only
be processed at scheduled times. At some point, either your system will contact the
remote system, or be contacted by the remote system at which time the queued
jobs will be processed. For security purposes, configuration files on each system
control which transfers can take place and which commands can be executed. (See
“Create or edit UUCP configuration files” on page 263.)
You must decide if you want to have your system participate in a UUCP network.
If you already have made that decision, go to “Configuring your local system” on
page 260.
Transferring files
UUCP can send and receive files between systems. The uucp command queues
requests for file transmission or retrieval, and invokes uucico to establish the
connection with the remote system and complete the transfer. Based on
configuration specifications, file transfers with the remote system might not be
allowed. The cron daemon can be used to invoke uucico to send the queued files
in the background when appropriate. After uucico has made a connection with a
remote system, and local uucp requests have been processed, file transfer requests
created on the remote system are processed.
For a discussion of system files, see “Log files, lock files, status files, and working
files” on page 277.
Each system exchanges files with the systems it calls directly. Users on North can
send files directly to any of the other three systems, but users on West can only
send files directly to North. These are called direct connections to distinguish them
from connections made through intermediaries. Someone on West can send a file to
someone on East indirectly through North, if North has agreed to pass along file
requests from West to East. This makes North an intermediary node.
Alternatively, North could set up its configuration so that West could not transfer
files through North, but only to North. This is called a terminal or leaf-node
connection. For information on how to define a connection between two nodes, see
the description of the COMMANDS option in “The Permissions file” on page 268.
However, remote users potentially could copy files to your file system or from
your file system. They could also run commands on your system. How do you
ensure that they do not remove files you want, read your private files, or run
commands that damage your system? In short, how do you keep your UUCP
system secure?
Authorization is the highest level of security. Only those with the current NUUCP
password can access your system and even then, only authorized systems can use
it. There is one catch, however, and that is when more than one system is involved
in the file transfer (a multi-hop transfer). If South allows North access, there is
nothing South can do to prevent North from giving West the ability to use North
as an intermediary node between South and West. South cannot differentiate
between requests originating from North and requests being forwarded through
North.
To deal with the security issues of access and execution, UUCP uses the concept of
permissions. For each directly connected system, you assign access permissions to
look at a specific portion of your file system and execute permission to run certain
commands.
Permissions can be broad or restrictive. If you are using UUCP to connect a group
of machines in your office, you might want everyone to have access to all the files
and be able to run all of the commands on each machine. On the other hand, you
might not want private files to be made public.
For example, imagine a central office with many branch offices. The central office
uses remote commands to run reports in each branch office, and send the results
back to the central office. The central office needs permission to run the command
that produces reports, and it needs permissions to read and write the associated
files. People on other systems do not need those files or permissions. In fact, it
could be dangerous to the company to allow those permissions to anyone else.
Typically, users on the local system have read access to the public directory (and
sometimes write and execute access as well). So users can access files in the public
directory using normal file access methods (for example, cp, cat, or vi)—or for files
sent by uuto, they can use uupick to handle them. The uuto command, a
simplified method of using uucp, uses the receive subdirectory of the public
directory as its target. Within that subdirectory, each user on the local system has a
subdirectory.
To make file transfers easier, you can use a special character in path names for the
public UUCP directory: when tilde ( ˜) is written as the first directory in a
destination path name, the ˜/ stands for the public UUCP directory. You can
specify the public UUCP directory with the path name ˜/. The public UUCP
directory is defined as the home directory of the user uucp, so you can also specify
it as ˜uucp.
Execute permissions
By default, UUCP does not give permission for remote systems to run any
commands; you must specify the commands that remote systems can run at the
local system.
If you are willing to pass along files copied with uucp, or if you want to allow
other direct systems to use wild cards when requesting files from your system,
give the remote system permission to run the uucp command. If you do not assign
execute permissions for the uucp program to another system, it can transfer files
only to your system (meaning your system is a terminal node, or leaf-node) but not
through your system (meaning your system is an intermediary node).
To use wild cards to request files from your system, the remote system must have
permission to run uucp and also have read permission on the directory holding
the files.
v For an example of a multiple system uucp transfer, see the uux command in
z/OS UNIX System Services Command Reference.
v For an example of how to give a remote system permission to run uucp, see
“The Permissions file” on page 268.
You will see the name by which your system is known in a communications
network. It is the name specified by the IPL parameter SYSNAME. In z/OS UNIX,
UUCP recognizes the first eight characters of this name. Other UNIX systems
might recognize more or fewer characters.
The Permissions file is used to control the access that remote systems have to data
and programs on the local system. You might want to change some of the default
settings of the Permissions file.
If you need to change some of the default permissions for your local system (such
as PUBDIR, READ, WRITE, NOREAD, or NOWRITE) then you will need an
additional entry in the Permissions file for your local system. If you do not need to
change the default permissions then you do not need an entry in the Permissions
file for your local system.
For example, if you wanted to change your uucp public directory, your
Permissions file might look like this:
MACHINE=local \
READ=/readall \
PUBDIR=/free
MACHINE=site1:site2:SITE3 \
READ=/readall \
COMMANDS=uucp:cat:cp:ls
You need to define these IDs to RACF. (If you are using an equivalent security
product, refer to that product's documentation for more information about defining
IDs to the security product.) All the RACF commands are issued by a TSO/E user
ID with RACF SPECIAL authority. To make it easier to transport data sets from
test systems to production systems, duplicate these entries in all of your security
data bases, including the same UID and GID values in the OMVS segment.
If you use only uppercase IDs on your system, follow these steps to define the
group ID and user IDs:
1. To define the LOGNAME user ID (in this example, it is specified as NUUCP),
issue the following command:
ADDUSER NUUCP DFLTGRP(UUCPG) PASSWORD(xxxxxxx)
OMVS(UID(397) HOME(’/usr/spool/uucppublic’)
PROGRAM(’/usr/lib/uucp/uucico’))
where:
v 397 is an example of a unique UID. Do not use UID(0).
v HOME(’/usr/spool/uucppublic’) is a required parameter that specifies the
initial path name for the directory.
v PROGRAM(’/usr/lib/uucp/uucico’) is a required parameter that specifies the
initial path name for the shell program.
2. Consider defining other user IDs similar to NUUCP to provide different access
to your systems resources to the different remote systems issuing requests to
your system. Each would have a unique UID, but would have the same
attributes as NUUCP. In particular, each must have home directory of
/usr/spool/uucppublic and initial program of /usr/lib/uucp/uucico. The
UUCP permissions file is used to specify what these user IDs can access, as
explained in “The Permissions file” on page 268.
Also follow these steps if you already use mixed-case group and user IDs on your
system and the users do not conflict with existing names. You might want to add
the lowercase names to your alias table, mapping them to uppercase names. This is
not necessary, because when the lowercase names are not found in the alias table,
they are folded to uppercase. For more information about the alias table, see
“USERIDALIASTABLE” on page 38.
You might want to define other user IDs similar to NUUCP to provide different
access to your system resources to the different remote systems issuing UUCP
requests to your system. Each would have a unique UID, but would have the same
attributes as NUUCP. Each must have home directory of /usr/spool/uucppublic
and initial program of /usr/lib/uucp/uucico. The UUCP Permissions file is used
to specify the accessibility of each of these user IDs.
Define an alias for the xxnuucp user ID in your user ID and group name alias
table.
xxnuucp nuucp
Tip: Using the alias table causes poorer performance and increases systems
management costs and complexity. For more information about the alias table, see
“USERIDALIASTABLE” on page 38.
If your system is going to call the remote system, you need the following
information:
v The UUCP name of the remote system.
v A UUCP login account on that system. You need a login name and a password,
so your system can log into the remote system.
v The login procedures. Ask whether any special send/expect sequences are used.
Send/expect sequences are explained in the description of chat scripts in “The
If the remote system will call your system, you must provide the following
information:
v Your system name.
v A login name for the remote system.
v A UUCP password for the remote system.
v The send/expect sequence. For z/OS systems, this would typically be in the
following format:
in:--in: uucp_login_user password: password
where:
– uucp_login_user is the login user ID that the remote system is authorized to
use—such as NUUCP.
– password is the password for the login user ID.
If you need to make changes to your configuration, edit the configuration files and
then run the uucc command to compile them.
For example,
sys2 Any TCP - sys2.kgn.ibm.com in:--in: nuucp ssword: uupasswd
where Mo is the day subfield, 1200 is the time subfield, /C is the grade
subfield, and 5 is the retry subfield.
The description of each subfield follows:
day Indicates which days of the week your system can call the remote
system named by system. The abbreviations Mo, Tu, We, Th, Fr, Sa,
and Su represent individual days. You can also use the following
keywords:
Any Your system can call the remote system on any day.
Never Your system should never call the remote system. It should
only wait to be called.
Wk Your system can call the remote system on any weekday
(that is, Monday-Friday).
time The range of times during which your system can call the remote
system named by system. This subfield immediately follows the day
subfield with no intervening spaces. The times given apply only to
days specified by day. If you do not specify a time subfield, your
system can call the remote system any time during the given days.
The format of this subfield is:
time1–time2
where both time1 and time2 are 24-hour clock times. For example,
means that your system can call the remote system between 7:30
a.m. and 2:15 p.m. on Wednesdays and Thursdays. This time range
can extend over 0000 (midnight), but be careful. It doesn't quite
work the way you might expect it to. For example,
Mo2300-0700
indicates your system can call the remote system during the
following times:
v 8:00 a.m. through 4:00 p.m. on Thursday
v 12:15 p.m. through 7:00 p.m. on Friday
v Anytime on Saturday or Sunday
grade An optional subfield that lets you specify the minimum grade of
work file that uucico will send during a given time period (as
indicated by the day/time subfields). A grade is a single digit, or a
single uppercase or lowercase letter. In order of priority, from
highest to lowest, the grades are arranged
0 1 2 ... 9 A B ... Z a b ... z
That is, 0 has the highest priority and z has the lowest).
As work files are created for UUCP file transfers, they are
automatically assigned grades that determine the order in which
they are sent. By default, uux requests have a grade of A and uucp
requests have a grade of n.
This optional subfield is separated from a day/time pair by a
slash. For example,
MoTu0800-1200/C
indicates that only work files with a grade of C or higher will be
sent during the hours of 8:00 a.m. to noon on Mondays.
The grade subfield only controls outgoing files during the given
time period. It does not affect incoming files.
retry An optional subfield that indicates how many minutes after an
unsuccessful call to a remote system, uucico should wait before
trying to call that system again. This subfield, if specified, appears
at the end of the sched field (separated by a semicolon). For
example, a sched field of
Any;60
indicates that your system can try to call the remote system at any
time and if it is not successful in connecting, it will not try again
for 60 minutes.
where expect_string is the text string that you expect to receive from the
remote system and send_string is the text_string that you want to send in
response. These two strings are separated by blanks. For example, when
you login to a remote system, it responds with
login:
Type
nuucp
waits 10 seconds for the string login: before continuing. You can use this
suffix with subexpect_string as well.
Table 30 shows the escape sequences which you can use in a chat script.
Table 30. Escape characters that can be used in chat scripts
Escape Description
"" Expect a null string
EOT Send the end-of-transmission character
BREAK Cause a BREAK
\b Send a BACKSPACE
\c Suppress newline or carriage return
\d Delay for one second
\K Send a BREAK
\n Send a newline
\N Send a NULL
\p Pause for a fraction of a second
\r Carriage return
\s Send a space
\t Send a tab
\\ Send a backslash
\ ˜ Expect a tilde
\ddd Send the EBCDIC character with octal code ddd. For example, use \100
to represent a space character.
Only TCP/IP connections are supported. Specify this entry in the Devices file:
TCP - - -
where dialer is the dialer name and arg is an argument to pass to that
dialer. For TCP/IP, leave this blank.
Only TCP/IP is supported, so the entry that must appear in this file is:
TCP
or
MACHINE=system [LOGNAME=userid] option=value [option=value] ...
where option is one of the options and value is one or more values that you want to
set for that option. Options and values are case-sensitive. When specifying multiple
values for an option, separate the values with a colon (:). Here is a sample entry:
MACHINE=ME READ=/ WRITE=/ COMMANDS=ALL
MACHINE=site1:site2:SITE3 \
READ=/ \
WRITE=/ \
COMMANDS=uucp:cat:ls
LOGNAME=NUUCP \
READ=/ \
WRITE=/ \
SENDFILES=yes \
DEBUG=9 \
VALIDATE=site1:site2:SITE3
The Permissions file can also contain blank lines (which are ignored) and comment
lines. To indicate that a line is a comment line, use a number sign (#) as the first
character in the line.
Each entry must contain the LOGNAME option or the MACHINE option, or both. Both
options are used to identify an entry that applies to a remote system when it is
processing its file transfer requests. The difference between them is based on which
system initiates the connection:
v LOGNAME=userid entries apply to a remote system when it initiates the connection
by logging onto your system as userid.
v MACHINE=system entries apply to a remote system when your system initiates the
call to system.
If your system initiates the connection, your system first processes any queued file
transfer requests that it has. When this is complete, the remote system can indicate
that it has file transfer requests queued on its system that it would like to process.
If the correct permissions are set, control switches to the remote system which then
processes its file transfer requests. At this point, the MACHINE entry options are used
for the remote system.
If your system does not need to differentiate Permissions options based on which
system initiates the call, then LOGNAME and MACHINE can appear in the same entry.
These are the valid options that are used with either LOGNAME or MACHINE entries, or
with both. Options are marked with an (L) or an (M) to indicate that they are
intended for LOGNAME or MACHINE entries or for both (L,M). An option used in an
entry for which it is not intended will be ignored.
READ (L,M) Indicates which directories uucico can read. By default, this is the
home directory of user uucp (/usr/spool/uucppublic). Remember that
uucico runs with the effective UID of UUCP, so you must permit the uucp
user or uucpg group to read from these directories.
WRITE
(L,M) Indicates which directories uucico can write to. By default, this is
/usr/spool/uucppublic, the home directory of user uucp. Remember that
uucico runs with the effective UID of UUCP, so you must permit the uucp
user or uucpg group to write to these directories.
NOREAD
(L,M) Indicates that files in the specified directories cannot be read. If a
directory is specified by both READ and NOREAD, files in that directory cannot
be read. The public directory can always be read (even if specified on
NOREAD).
NOWRITE
(L,M) Indicates that files in the specified directories cannot be written to. If
a directory is specified by both WRITE and NOWRITE, files in that directory
cannot be written to. The public directory can always be written to (even if
specified on NOWRITE).
PUBDIR
(L,M) Indicates the public directory. By default, this is the home directory
of user uucp (/usr/spool/uucppublic).
If you are going to change PUBDIR on your system, you need to have an
additional MACHINE entry for your local site. Consider this example:
uucp remote_site!/file1 local_site!˜/file1
An example might help to explain how the entries in the Permissions file work.
Suppose that the system named North in the sample network has the following
Permissions file.
LOGNAME=uwest MACHINE=west READ=/ WRITE=/ \
COMMANDS=uucp:mail NOREAD=/usr/private \
NOWRITE=/usr/private SENDFILES=yes REQUEST=yes \
The first entry in this file specifies the options that are in effect when a remote
system logs in as uwest. Because of the VALIDATE=west option, the only remote
system that can use this user ID is West. When West calls North and logs in as
uwest, it can read from and write to all directories except the ones starting with
/usr/private and can execute the commands uucp and mail on North's system.
This entry also includes the MACHINE=west option, meaning the options given
also apply when North has called West and control has been transferred to North's
uucico utility. Because REQUEST=yes and SENDFILES=yes, either system can
request or send working files.
The second entry specifies the options in effect when a remote system logs in with
the NUUCP user ID. Because MACHINE=OTHER, these options will also apply when
North has called any remote system except west (which has its own entry) and
control has been transferred to North's uucico. Files can only be read from or
written to the /usr/spool/uucppublic directory (no READ or WRITE options to
change the default). Either system can request files from the other, but working
files are only transferred from north when it calls the remote system.
Tip: Whenr a z/OS system or uucp login is specified, the name must be specified
in uppercase.
After you set up the configuration files, change directories and then issue:
cd /var/uucp
/usr/lib/uucp/uucc
A compiled configuration file is created in the /var/uucp directory using the uucc
command from /usr/lib/uucp. It contains all of the information specified in the
individual configuration files.
Rule: The configuration file must be owned by the uucp user ID. If you run uucp
from any other user ID, you must change the owner of the configuration file from
that user ID to uucp.
Do not edit the configuration file directly. If you need to change your
configuration, first edit the configuration files and then run uucc again.
($(uuname -l) will be replaced with the name of your system). If the directory is
not owned by uucp and uucpg, enter:
chown uucp:uucpg /usr/spool/uucp/$(uuname -l)
v Create working directories for remote systems. (If you are setting up your uucp
environment for the first time, see the Tip at the end of this step.) For each
remote system, enter:
mkdir -m 774 /usr/spool/uucp/system
$(uuname) will be replaced with a list of all systems defined in the Systems file
The cron facility can be used to run the UUCP daemons according to a fixed
schedule such as:
v Monday through Friday at 7:30 p.m.
v Each day at 8:00 a.m. and noon
v Every 15 minutes starting at midnight
If the UUCP daemons are running from cron and encounter an error, they send
mail to the user who ran the uucp or uux command that the daemons are
processing. The daemons log their status and errors in two files:
/usr/spool/uucp/ERRLOG is used to log errors and /usr/spool/uucp/LOGFILE is
used to log non-error status. Check those files if the daemons uucico or uuxqt do
not seem to be running correctly.
Tip: Do not issue the crontab command without any options. If you do, the system
will erase your current crontab entries and accept new crontab entries from the
terminal. If you accidentally enter crontab without any options, end it with the
INTERRUPT key, which by default is <Crtl-C>.
Example of schedules
Here are some examples of other schedules and their crontab entries:
1. Every day at 8:00 a.m. and noon:
0 8,12 * * * /usr/lib/uucp/uucico; /usr/lib/uucp/uuxqt;
where:
v 0 specifies what minute
v 8 and 12 specify 8 a.m. and noon
v * is every day of the month
v * is every day of the year
v * is every day of the week
2. Every fifteen minutes starting at midnight:
0,15,30,45 * * * * /usr/lib/uucp/uucico; /usr/lib/uucp/uuxqt;
There are many other scheduling possibilities. For more information, see the
crontab command in z/OS UNIX System Services Command Reference.
You can specify different crontab entries for different systems. Each of these
crontab entries will specify a command of the form
uucico -r1 -s site
Example: This sample crontab entry calls the system named North every hour on
the hour:
0 * * * * /usr/lib/uucp/uucico -r1 -s north
Example: This sample crontab entry calls the system named East at 12:00 noon and
7:00 p.m. each day from Monday to Friday:
0 12,19 * * 1-5 /usr/lib/uucp/uucico -r1 -s east
where testfile is the name of a file in the public UUCP directory and remote is
the name of the remote system.
3. Force a connection:
a. If the remote system calls your system, have the remote system
administrator attempt a connection.
b. If your system calls the remote system, force a connection with this
command:
/usr/lib/uucp/uucico -f -r 1 -s remote -x 5
Maintaining UUCP
To maintain UUCP, you need to:
v Read and remove log files periodically—check /usr/spool/uucp/LOGFILE.
v Use the uustat command to check the status file to ensure that files are
transferring to remote systems. Periodically update the configuration files to
reflect changes in your system.
For each remote system specified in the Systems configuration file, there is a
subdirectory in the /usr/spool/uucp directory named for the system (for example,
the subdirectory for a remote system named South is /usr/spool/uucp/south). This
subdirectory contains:
v File transfer requests for a remote system.
v Data files for file transfer requests for a remote system.
UUCP data files are created from:
v uucp with the -C option.
v uux requests whose arguments are files that are not on the system running the
requested command.
v Execute files, commands that a user on the remote system has requested be run
on your system. When you run uuxqt, it looks for files in those directories and
runs the commands indicated (if all of the permissions are correct).
v The .Xqtdir subdirectory, which acts as a working directory when uuxqt runs
remote commands. After finishing a command, uuxqt removes working files
from this directory.
z/OS is an EBCDIC platform. It has devices that are configured for EBCDIC; it also
has programs that are compiled to handle the EBCDIC encoding of characters. If
you implement Enhanced ASCII or exploit Unicode Services, the basic EBCDIC
nature of a z/OS platform remains. For example, the z/OS shell and utilities
continue to be EBCDIC programs. However, if C programs have been compiled as
ASCII, the EBCDIC nature can be partially hidden.
This topic discusses the conversion and tagging of files between various code
pages. Before Enhanced ASCII and Unicode Services were available, you could use
iconv to convert characters from one code page set to another. The converted text
is written to standard input (stdout). See z/OS XL C/C++ Programming Guide for
more information about the supported code sets.
C programs that have been compiled as ASCII use ASCII locales. These ASCII
locales are produced by using the -A option of localedef.
List of subtasks
This topic covers the following subtask:
Restriction: The conversion only applies to the portable subset of characters that
are associated with a locale. Only the EBCDIC IBM-1047 encoding of portable
characters is supported.
A subset of C headers and functions is provided in ASCII. For a list of all C/C++
runtime library functions that support Enhanced ASCII, see z/OS XL C/C++
Runtime Library Reference.
The only way to get to the ASCII version of functions and the external variables
environ and tzname is to use the appropriate IBM header files. ASCII applications
may read, but not update, environment variables using the environ external
variable. Updates to the environment variables using environ in an ASCII
application causes unpredictable results and might result in an abend. Language
Environment maintains two equivalent arrays of environment variables when
running an ASCII application, one with EBCDIC encodings and the other with
ASCII encodings. All ASCII compile units that use the environ external variable
must include <stdlib.h> so that environ can be mapped to access the ASCII
encoded environment strings. If <stdlib.h> is not included, environwill refer to the
EBCDIC representation of the environment variable strings.
To execute ASCII shell scripts and REXX execs, use spawn (BPX1SPN).
Before you begin: You need to have an overall understanding of the limitations of
Enhanced ASCII, as explained in Chapter 11, “Converting files between code
pages,” on page 279.
2. Assign the appropriate file tag for each file that is to be converted. Base your
choice on your particular situation.
_______________________________________________________________
3. Assign a coded character set identifier (CCSID) to each program or thread in
the shell. By default, the initial CCSID for every thread is IBM-1047 (EBCDIC).
v For entire programs written in C/C++, use the ASCII compiler to change it
to 819 (ISO8859-1 ASCII).
v For C/C++ threads, use the F_CONTROL_CVT subcommand of fcntl().
v For Assembler programs and threads, use the F_CONTROL_CVT
subcommand of the BPX1FCT callable service. F_CONTROL_CVT sets the
CCSID of the program associated with each opened file. (That is, the
program CCSID can be different depending on which file is chosen.)
v Use the mapping macro BPXYTHLI to set field Thliccsid. IBM no longer
recommends this method.
Files that are tagged can be converted between any CCSID of the program or user
and the CCSID of the file, if Unicode Services supports that conversion. Unlike
Enhanced ASCII, which affects conversion of regular file, pipes, and character
special files, an environment enabled for Unicode Services environment affects
regular files and pipes only. No character special support beyond that provided for
Enhanced ASCII is included.
For more information about Unicode Services, see z/OS Unicode Services User's
Guide and Reference.
Incomplete characters at the end of an I/O stream might cause problems. This
situation occurs, for example, when z/OS UNIX receives data that does not end on
a character boundary. z/OS UNIX tries to resolve this problem by caching the end
of this data for the next I/O operation. But unconverted data will not be hardened.
Consequently, an fsync operation will not cause a partial character to be written to
the file. Likewise, closing a file with a partial character held by z/OS UNIX causes
that partial character to be lost. Partial characters occur only when multibyte
characters sets are being converted.
Additionally, when certain multibyte character sets are being converted, a lseek
operation can cause the file offset to jump to a location in the file that is not on a
character boundary or that contains a different character set. These jumps can
cause a subsequent read or write operation to fail with an I/O error or a
conversion error. Sequential reading and writing is the preferred I/O method to
use when different character sets exist in the file.
Before you begin: You need to have an overall understanding of the limitations of
Unicode Services, as explained in “Considerations beyond that of Enhanced ASCII”
on page 282.
2. Assign the appropriate file tag for each file that is to be converted. Base your
choice on your particular situation.
_______________________________________________________________
3. Assign a coded character set identifier (CCSID) to each program or thread in
the shell. By default, the initial CCSID for every thread is IBM-1047 (EBCDIC).
List of subtasks
Subtasks Associated procedure
Ending a specified process “Steps for ending a specified process”
Shutting down z/OS UNIX “Steps for shutting down z/OS UNIX using
F BPXOINIT,SHUTDOWN=...” on page 288
If you require a high level of security in your z/OS system and do not want
superusers to have access to z/OS resources such as SYS1.PROCLIB, read the
following topics:
v “Comparing UNIX security and z/OS UNIX security” on page 333.
v “Establishing the correct level of security for daemons” on page 335.
Before you begin: You need to know which processes you want to end and
whether they are active.
Perform the following steps to end a specified process, where pppp is the process
identifier (pid).
1. Send a SIGTERM signal using the shell kill command or use the TERM
parameter of the MODIFY operator command. For example:
a. kill -s term pppp
b. F BPXOINIT,TERM=pppp
If the process is not ended, then go to Step 2. Otherwise, you have canceled the
process and you are finished.
_______________________________________________________________
2. Send a SIGKILL signal using the shell kill command or use the FORCE
parameter of the MODIFY operator command. For example:
a. kill -s kill pppp
b. F BPXOINIT,FORCE=pppp
If the process is still not ended, then go to Step 3. Otherwise, you have
canceled the process and you are all done.
_______________________________________________________________
3. Send a stronger SIGKILL signal using the shell kill command or use the
SUPERKILL parameter of the MODIFY operator command. For example:
v kill -K pppp
v F BPXOINIT,SUPERKILL=pppp
If the process is still not ended, then go to Step 4. Otherwise, you have
canceled the process and you are finished.
_______________________________________________________________
4. If the previous steps did not end the process, then use the CANCEL command.
Issue:
CANCEL jobname,a=asid
Example: The following example shows how to obtain the ASIDs for a user
with the TSO/E user ID JOE and then cancel the user's process that is running
the sleep 6000 command.
display omvs,u=joe
BPXO001I 17.12.23 DISPLAY OMVS 361
cancel joe3,a=1b
_______________________________________________________________
When you are done, you have ended the specified process.
where
v pid indicates the process identifier (PID) of the thread to be ended. The PID is
specified in decimal form as displayed by the D OMVS command.
v tid indicates the thread identifier (TID) of the thread to be ended. The TID is 16
hexadecimal (0-9,A-F) characters as displayed by the following command:
D OMVS,PID=pppppppp
v TERM= indicates the signal interface routine will be allowed to receive control
before the thread is ended.
v FORCE= indicates the signal interface routine will not be allowed to receive
control before the thread is ended.
Although abnormal termination of a thread typically causes a process to end,
using the MODIFY command to end a thread will not cause the process to end.
You will typically want to end a single thread when the thread represents a single
user in a server address space. Otherwise, random termination of threads can
cause some processes to hang or fail. If a thread in a process is hung, use the
MODIFY operator command to terminate the thread without ending the entire
process. Use the TERM keyword first. If that does not succeed, then use FORCE.
For example:
v To allow the signal interface routine to receive control before the thread is
ended:
F BPXOINIT,TERM=pppppppp.tttttttttttttttt
Issuing one of these commands synchronizes data to the file systems and possibly
unmounts or moves ownership of the file systems. If you use
SHUTDOWN=FILEOWNER, the system is disabled as a future file system owner
via move or recovery operations until z/OS UNIX has been restarted.
Chapter 12. Managing operations 287
Restriction: SHUTDOWN=FILEOWNER is valid only in a shared file system
configuration.
If you get message BPXM048I saying that the file system shutdown was
incomplete, a local mount might have been performed while the shutdown was in
progress. To identify the file systems that were not moved or unmounted, issue D
OMVS,F,O on the source system to see which file systems are still owned by this
system. You can try to move individual file systems by issuing the following
operator command for each file system in question:
SETOMVS FILESYS,FILESYSTEM=xxxxxxxx,SYSNAME=yyyyyyyy
In a shared file system configuration, the resulting system actions are more
complex, because they might involve the movement of file system ownership
between systems in the shared file system. For more information about the system
actions that might occur in a shared file system, see “Implications of shared file
systems during system failures and recovery” on page 206.
To shut down the system as part of JES maintenance without reIPLing the system,
see “Partial shutdowns for JES2 maintenance” on page 290.
You will shut down z/OS UNIX using the F BPXOINIT,SHUTDOWN=... system
command.
Before you begin: You need to notify users that the system is being shut down
and ask them to log off. If you do not shut down and quiesce the UNIX workload,
these critical system functions might be ended abnormally during the shutdown,
which might cause several failures on the system. As a result, the system might not
be shut down successfully.
1. Use the operator SEND command to send a note to all TSO/E users telling
them that the system will be shut down at a certain time. For example:
send ’The system is being shut down in five minutes. Log off.’,NOW
2. Use the wall command to send a similar note about the impending shutdown
to all shell users who are logged on. For example:
wall The system is being shut down in five minutes. Please log off.
Procedure
1. Prevent new TSO/E logons and shut down other z/OS subsystems (such as
CICS® and IMS™), following your typical procedures.
_______________________________________________________________
OMVSKERN is the user ID that is used for the kernel and daemons.
To display all processes (most daemons have recognizable names), issue:
D OMVS,A=ALL
or
F BPXOINIT,SHUTDOWN=FILESYS
_______________________________________________________________
7. Take down JES. At this point, there might still be a number of initiators that are
provided by WLM for use on fork and spawn. These initiators time out after 30
minutes on their own, but you can end them by issuing:
F BPXOINIT,SHUTDOWN=FORKINIT
_______________________________________________________________
Results
When you are done, you have ended all of the processes. You can do any of the
following:
v IPL
v Power® off
v Take down JES, restart JES, and then rebuild your environment. For example:
– Remount any file systems that you unmounted. To do all the mounts, you
must issue mount commands or construct a REXX exec or CLIST. If you are
using automount for user file systems, there will be less work involved.
– If you terminated the address spaces for TCP/IP and DFSS, you must restart
these.
– If you terminated daemons, log on to TSO as superuser and run /etc/rc from
a shell or from the ISHELL.
– Notify users that the system is once again available for UNIX processing.
After the forked processes have been terminated, you can end the colony address
spaces. Now JES2 can be shut down for maintenance. z/OS UNIX can be
reinitialized after JES2 has been restarted, and forked processes will start being
dubbed again. The file system colonies can then be restarted manually.
If you want to shut down the system as part of JES2 maintenance and do not want
to reIPL the system, issue F BPXOINIT,SHUTDOWN=FORKS as described in
“Partial shutdowns for JES2 maintenance” on page 290.
Only eligible running processes are shut down. Some processes might not be shut
down because they have registered as a permanent process. Additionally, some
applications might register to block a shutdown, which delays the shutdown
request until the blockers end or unblock. Also, an application exit can be set up to
be given control when a shutdown request is initiated in order to allow specific
shutdown actions to be taken. This might include initiating the shutdown of the
application or sending messages that indicate the specific steps that are required to
shut down the application.
If any blocking jobs or processes are active when a shutdown request is initiated,
the shutdown is delayed until all blocking jobs or processes either unblock or end.
If the delay exceeds a certain time interval, you will receive messages telling you
that the shutdown is delayed and which jobs are delaying the shutdown. At this
point, you can either attempt to end the jobs that are identified as blocking
shutdown or issue F OMVS,RESTART to restart the z/OS UNIX environment,
which will cause the shutdown request to be ended.
Successful shutdowns
The shutdown succeeds only if all non-permanent z/OS UNIX processes end, all
permanent processes are successfully checkpointed, and if all physical file systems
are successfully quiesced. Otherwise, the shutdown request will fail.
Nonpermanent processes within jobs that are not prepared for shutdown cause the
shutdown request to fail. These jobs are identified in messages so that you can
force these jobs to end. At this point, because most processes have been ended, you
should force the hung jobs to end and then try the shutdown again. Because some
jobs might have ended abnormally, JES spool resources might have accumulated
for these jobs; you will have to purge them using commands such as
$POJOBQ,READY.
Because some resources are tied to components outside of the scope of the kernel
(shared memory, mmap, shared libraries, for example), you must end any
application that is using any of these resources before z/OS UNIX can be ended,
including applications that are registered as permanent.
If a shutdown does not succeed, a critical z/OS UNIX resource might not have
been available during the shutdown, due to a prior system problem, such as latch
contention. If a resource such as the z/OS UNIX file system MOUNT latch could
not be obtained, the shutdown request to likely to stall and then fail.
Note:
1. After an F OMVS,SHUTDOWN request is accepted, jobs that attempt to use
z/OS UNIX services for the first time will be delayed until the system is
restarted. Terminating signals are sent to jobs that are already connected; these
jobs will be ended abruptly.
2. After F OMVS,SHUTDOWN has completed, you can shut down the system
completely via an IPL or by powering off.
Tip: You can completely restart and reinitialize the z/OS UNIX environment by
issuing F OMVS,RESTART. You can also use it to change the configuration of
z/OS UNIX services by specifying a different set of BPXPRMxx members when
z/OS UNIX is started. For more information about F OMVS,RESTART, see z/OS
MVS System Commands.
3. Using F OMVS,SHUTDOWN, the steps for shutting down z/OS UNIX are the
same whether or not the system is participating in a shared file system.
However, in a shared file system, the resulting system actions are more
complex because they might involve the movement of file system ownership
between systems in the shared file system. For more information about system
actions that might occur in a shared file system, see “Implications of shared file
systems during system failures and recovery” on page 206.
Those PTFs that are capable of being activated dynamically will have ++HOLD
REASON(DYNACT) included within their PTF. Additionally, any ++USERMOD or
++APAR provided from IBM will have explicit instructions provided by the IBM
Service Team indicating whether the ++Usermod or ++APAR can be dynamically
activated. Although a service item might be identified as being capable of dynamic
activation, the level of a given system might not be current enough to allow the
activation of the service item. The ++HOLD REASON(DYNACT) will identify the
service level required to activate the PTF. In order to properly activate the PTF,
follow the directions in the ++HOLD in the PTF.
To ensure that you activate only those service items that are of interest, it is
recommended that you additionally install these service items into a separate load
library from the LPALIB or LINKLIB libraries that are used for your normal install
process. You can copy (or clone) the SMP/E environment for the currently running
z/OS system and then install the applicable PTFs using the cloned SMP/E
environment and cloned target libraries. The applicable PTFs are the ones that
have been identified with ++HOLD REASON(DYNACT).
The SERV_LINKLIB statement identifies the target service library where the z/OS
UNIX modules that are normally loaded from SYS1.LINKLIB into the private area
of the OMVS address space are located.
v The dsname parameter identifies a 1-to-44 character value that represents a valid
data set name for the specified MVS load library. This library must be
APF-authorized. The alphabetic characters in the load library name must be
uppercase.
v The volser parameter identifies a 1-to-6 character value that represents a valid
volume serial number for the volume that contains the specified MVS load
library. The alphabetic characters in the volume serial number must be
uppercase.
Because you can set these new statements via SET OMVS, different target service
libraries can be used for any given F OMVS,ACTIVATE=SERVICE command
invocation.
The set of service items to be activated and the amount of ECSA and OMVS
address space storage consumed for those service items are indicated in messages
displayed by the F OMVS,ACTIVATE=SERVICE command. The issuer of the
command is then prompted on whether to proceed with the activation based on
this information.
Tip: The activation of a set of service items potentially causes the additional
consumption of both ECSA and OMVS address space storage that is permanent
regardless of whether the service items are deactivated. A dynamic activation that
involves fixes to modules in LPA resident load modules will cause additional
consumption of ECSA. Careful consideration should be given to ensure that this
additional ECSA storage consumption does not cause a problem for your system.
Only the service items that were activated when F OMVS,ACTIVATE=SERVICE was last
issued are backed off. You will see a list of service items to be deactivated and you
will be asked whether the deactivation should proceed.
Example: To display all the service items that were dynamically activated, issue:
D OMVS,ACTIVATE=SERVICE
The service items are listed in groups based on when they were activated. All
service items activated by a given F OMVS,ACTIVATE=SERVICE command are
listed together as one set of activated service items. The most recently activated set
of service items is listed first followed in descending order by the next most recent
activation set and so on. The most recent set of service items is the only service
items that are deactivated if a F OMVS,DEACTIVATE=SERVICE command is
issued.
You can dynamically change process-wide limits separately for each process. For
example:
SETOMVS PID=123,MAXFILEPROC=200
If a parameter is specified more than once with different values, in the parmlib
members, the first value that is specified is the first value that is used. For
example, if you specify SET OMVS=(AA,BB) where AA has a MAXPROCUSER=10
value and BB has a MAXPROCUSER=5 value, MAXPROCUSER =10 is used.
You can use the SETOMVS RESET command to dynamically add the
FILESYSTYPE, NETWORK, and SUBFILESYSTYPE statements without having to
reIPL. However, if you change the values, a reIPL will be necessary. For more
information, see “Dynamically adding FILESYSTYPE statements in BPXPRMxx” on
page 300.
To avoid specifying a value that is too low or too high, you can use a formula to
calculate the maximum values. The minimum value is sometimes the current
setting of the parameter and sometimes lower than that, as identified in the
description of each parameter.
Example: The following example shows you how to perform the calculations using
the IPCMSGNIDS parameter, which determines the highest number of unique
message queues in the system. To use SETOMVS IPCMSGNIDS=xxx to increase the
current setting, you must calculate the highest number that you can specify.
According to the description of IPCMSGNIDS in “IPCMSGNIDS and
IPCSEMNIDS” on page 299, the formula is:
MIN(20000,MAX(4096,3*initial value))
For this example, the current value of IPCMSGNIDS is 1000; the value of
IPCMSGNIDS at IPL is also 1000 (that is, 1000 is the initial value). Use the formula
in the following way:
1. Compare 4096 with 3 times 1000 to find the higher number (the MAX). 4096 is
the higher number.
2. Compare 20000 with 4096 to find the smaller number (the MIN). 4096 is the
smaller number.
To change to a number higher than 4096 (but lower than 20000), you will have to
change BPXPRMxx and reIPL.
MAXPROCSYS
The range that you can use has a minimum value of 5; the maximum value is
based on the following formula:
MIN(32767,MAX(4096,3*initial value))
The initial value is the MAXPROCSYS value that was specified during BPXPRMxx
initialization. You cannot use a value less than 5. If you want to use a value greater
than the current maximum (as calculated by the formula) but lower than the initial
maximum (32767), you will have to change the value in BPXPRMxx and reIPL.
MAXPTYS
The range's minimum value is 1 and the maximum is based on the following
formula:
MIN(10000,MAX(256,2*initial value))
The initial value is the MAXPTYS value that was specified during BPXPRMxx
initialization.
The initial value is the value that was specified during BPXPRMxx initialization. If
you want to use a value greater than the current maximum (as calculated by the
formula) but lower than the initial maximum (20000), you will have to change the
value in BPXPRMxx and re-IPL.
If you specify the SHRLIBMAXPAGES parameter, it will be accepted but will not
have any impact on the system. The value that you specify will never be reached,
because user-shared library objects are no longer supported.
The initial value is the value that was specified during BPXPRMxx initialization. If
you want to use a value greater than the current maximum (as calculated by the
formula) but lower than the initial maximum (20000), you will have to change the
value in BPXPRMxx and re-IPL.
For example, you could keep the system limits parameters that can be reconfigured
in parmlib member BPXPRMLI. When you need to change any of the limits, edit
the parmlib member and then issue SET OMVS. For example:
SET OMVS=(LI)
The following list shows examples of some of the more common configuration
changes, adding the file system and adding sockets.
1. “Steps for activating the HFS file system for the first time”
2. “Steps for activating a single sockets file system for the first time” on page 301
3. “Steps for activating a multiple socket file system for the first time with
Common INET” on page 302
4. “Steps for increasing the MAXSOCKETS value” on page 302
5. “Steps for adding another sockets file system to an existing CINET
configuration” on page 304
Steps for activating the HFS file system for the first time
Perform the following steps to activate the HFS file system for the first time.
1. Set up a root file system by putting the following statement in BPXPRMxx.
When you are done, you have activated the HFS file system for the first time.
This topic explains how to activate a single sockets file system for the first time. It
uses the TCP/IP Socket File System for network sockets and also brings up
support for local sockets.
Steps for activating a single sockets file system for the first time
Before you begin: You need to know what MAXSOCKETS value to use. The value
used in the example might be different from the value that you want to use.
Perform the following steps to activate a single sockets file system for the first
time.
1. Create a temporary BPXPRMtt member with the following statements:
/* Start Address Family AF_INET for Network Sockets /*
FILESYSTYPE TYPE(INET) ENTRYPOINT(EZBPFINI)
NETWORK TYPE(INET) MAXSOCKETS(64000)
DOMAINNAME(AF_INET) DOMAINNUMBER(2)
When you are done, you have activated a single sockets file system for the first
time.
Activating a multiple sockets file system for the first time with
Common INET (CINET)
About this task
You will activate multiple sockets file systems for the first time with Common
INET. In the example, two TCP/IP stacks are started.
Steps for activating a multiple socket file system for the first
time with Common INET
Before you begin: You need to know what MAXSOCKETS value to use. The value
used in the example might be different from the value that you want to use.
Perform the following steps to activate a multiple file system for the first time with
Common INET (CINET).
1. Create a temporary BPXPRMtt member with the following statements:
/* Start Address Family AF_INET for Common INET */
FILESYSTYPE TYPE(CINET) ENTRYPOINT(BPXTCINT)
NETWORK TYPE(CINET) MAXSOCKETS(64000)
DOMAINNAME(AF_INET) DOMAINNUMBER(2)
INADDRANYPORT(5000) INADDRANYCOUNT(100)
/* Start nultiple TCP/IP stacks under Common INET */
SUBFILESYSTYPE TYPE(CINET) NAME(TCPIP) ENTRYOINT(EZBPFINI) DEFAULT
SUBFILESYSTYPE TIME(CINET) NAME(TCPIP2) ENTRYPOINT(EZBPFINI)
_______________________________________________________________
2. Dynamically add the statements to BPXPRMtt.
SETOMVS RESET=(tt)
_______________________________________________________________
3. Restart TCP/IP.
S TCPIP
S TCPIP2
_______________________________________________________________
4. Add the statements in Step 1 to the BPXPRMxx member that is used on IPL.
_______________________________________________________________
When you are done, you have activated a multiple sockets file system for the first
time with Common INET.
Rule: The names used in the example, TCPIP and TCPIP2, must match those used
when configuring the associated products.
Before you begin: You need to know what MAXSOCKETS value you want to use,
and you must have specified either DOMAINNAME(AF_INET) or
DOMAINNAME(AF_INET6).
When you are done, you have increased the MAXSOCKETS value.
Tip: You can add support for AF_INET6 to a running system for the first time. To
do so, the NETWORK statement would specify DOMMAINNAME(AF_INET6) and
DOMAINNUMBER(19). TCPIP would have to be recycled for this to take effect.
You can add AF_INET6 in this way to an INET or as discussed in the next step to
a CINET configuration. You can also change the MAXSOCKETS value for a CINET
configuration with a similar procedure:
1. The TYPE() keyword of the NETWORK statement would specify the TYPE
name of the CINET INET PFS, which was "CINET" in the previous examples.
2. INADDRANYPORT cannot be changed.
3. INADDRANYCOUNT can be increased for DOMAINNAME(AF_INET).
INADDRANYCOUNT for AF_INET6 is ignored. The reserved port range for
CINET is shared across both address families and the values are taken from the
AF_INET statement. The maximum value allowed for INADDRANYCOUNT is
8000.
4. If you only want to increase MAXSOCKETS, and if INADDRANYCOUNT and
INADDRANYPORT were specified on the NETWORK statement used during
initialization, specify INADDRANYCOUNT and INADDRANYPORT the same
way for the SET OMVS. If you omit them from the NETWORK statement, the
default value of INADDRANYCOUNT=1000 is used.
5. Before INADDRANYCOUNT is increased, the PORTRANGE statement in the
TCP/IP profile might need to be modified to reserve the additional ports for
z/OS UNIX and the TCP/IP stacks recycled. For information about reserving
the additional ports, see z/OS Communications Server: IP Configuration Reference .
Perform the following steps to add another sockets file system to an existing
CINET configuration.
1. Create a temporary BPXPRMtt member with the following statements:
SUBFILESYSTYPE TYPE(CINET) NAME(TCPIP2) ENTRYPOINT(EZBPFINI)
_______________________________________________________________
2. Dynamically add the statements to BPXPRMtt.
SETOMVS RESET=(tt)
_______________________________________________________________
3. Start the TCPIP2 address space.
_______________________________________________________________
4. Update the SUBFILESYSTYPE value in the BPXPRMxx member that is used on
IPL.
_______________________________________________________________
When you are done, you have added another sockets file systems to an existing
Common INET configuration.
Tracing events
To provide problem data, events are traced. When the OMVS address space is
started, the trace automatically starts. The trace cannot be completely turned off.
The CTnBPXxx member to be used when the OMVS address space is initialized is
identified on the CTRACE parameter of the BPXPRMxx member. You also specify
the size of the trace buffers in the CTnBPXxx member used when the system is
IPLed. You can change the buffer size while z/OS UNIX is running. The buffer can
be 16 KB minimum to 32 MB maximum. If you need a different buffer size, change
buffer size (BUFSIZE) in a CTnBPXxx member and issue:
TRACE CT,ON,COMP=SYSOMVS,PARM=CTnBPXxx
An operator starts and stops tracing events in the z/OS UNIX system with the
commands:
TRACE CT,ON,COMP=SYSOMVS,PARM=CTnBPXxx
TRACE CT,OFF,COMP=SYSOMVS
The operator can resume full tracing, with the previously used CTnBPXxx parmlib
member or a different member, with the command:
TRACE CT,ON,COMP=SYSOMVS,PARM=CTnBPXxx
The PARM operand specifies the parmlib member with the tracing options.
or:
TRACE CT,nnnnk,COMP=SYSSMS
R X,OPTIONS=(ENTRY,EXIT,EXITA,CB,COMP=(PFS,CDM)),END
Attention: SMS trace buffers are allocated in every initiator running kernel
workloads. They are allocated in DREF ELSQA, which can cause a shortage of real
pages.
For information about how to set up and use a trace, and for diagnosis information
about interpreting a trace, see z/OS DFSMSdfp Diagnosis.
Tip: If you are re-creating a problem for IBM service, you should increase the
OMVS CTRACE buffer size to 8 MB.
Example: To increase the OMVS CTRACE buffer size to 8 MB, with the parmlib
member specifying the required options:
TRACE CT,8M,COMP=SYSOMVS,PARM=CTnBPXxx
As an alternative, you can change the parmlib member to specify the required
buffer size. After you capture the dump for the problem, you can reset the trace
buffer size to the original setting.
The command can be used to show information about a user ID, about the parmlib
members that are in effect, or about the current values of reconfigurable parmlib
member settings.
Example: To display the status of address spaces that the user ID JANES is using
and the processor resources used by each address space, the operator enters:
DISPLAY OMVS,U=JANES
For another example, see the one in “Steps for ending a specified process” on page
285.
If the system IPLed with the specification of OMVS=(XX,YY,ZZ), the output for the
D OMVS command is:
BPXO004I 10.17.23 DISPLAY OMVS 869
OMVS ACTIVE 000E OMVS=(XX,YY,ZZ)
The keyword OPTIONS lets you display the current configuration of the
BPXPRMxx statements that are reconfigurable via the SET OMVS or SETOMVS
command. The updated output from D OMVS,OPTIONS reflects any changes that
resulted from a SETOMVS or a SET OMVS= operator command invocation.
In this example, when the PID option is used to obtain the thread identifiers, the
output is:
D OMVS,PID=117440514
F BPXOINIT,TERM=117440514.0496624800000009
BPXM027I COMMAND ACCEPTED.
DISPLAY OMVS,L
BPXO051I 14.05.52 DISPLAY OMVS 904
OMVS 0042 ACTIVE OMVS=(69)
SYSTEM WIDE LIMITS: LIMMSG=NONE
CURRENT HIGHWATER SYSTEM
USAGE USAGE LIMIT
MAXPROCSYS 1 4 256
MAXUIDS 0 0 200
MAXPTYS 0 0 256
MAXMMAPAREA 0 0 256
IPCMSGNIDS 0 0 500
IPCSEMNIDS 0 0 500
IPCSHMNIDS 0 0 500
IPCSHMSPAGES 0 0 262144
IPCMSGQBYTES --- 0 262144
IPCMSGQMNUM --- 0 10000
IPCSHMMPAGES --- 0 256
SHRLIBRGNSIZE 0 0 67108864
SHRLIBMAXPAGES 0 0 4096
MAXUSERMOUNTSYS 15 20 100
MAXUSERMOUNTUSER 7 8 10
MAXPIPES 28 51 15360
An * displayed after a system limit indicates that the system limit was changed via
a SETOMVS or SET OMVS= command. For the sysplex-wide limits, the command
can be issued from any of the systems in the shared file system configuration
environment, and the change can also be caused by subsequent OMVS
initialization on the other systems.
The display output shows for each limit the current usage, high-water (peak)
usage, and the system limit as specified in the BPXPRMxx member. The displayed
system values might be the values as specified in the BPXPRMxx member, or they
might be the modified values resulting from the SETOMVS or SET OMVS
commands.
You can also use the DISPLAY OMVS,LIMITS command with the PID= operand to
display information about high-water marks and current usage for an individual
process.
The high-water marks for the system limits can be reset to 0 with the D
OMVS,LIMITS,RESET command. High water marks for process limits cannot be
reset.
d a,omvs
IEE115I 14.18.59 2011.339 ACTIVITY 491
JOBS M/S TS USERS SYSAS INITS ACTIVE/MAX VTAM OAS
00000 00007 00000 00029 00001 00000/00020 00006
OMVS OMVS OMVS NSW * A=000E PER=NO SMC=000
PGN=N/A DMN=N/A AFF=NONE
CT=000.572S ET=02.05.49
WKL=SYSTEM SCL=SYSTEM P=1
RGP=N/A SRVR=NO QSC=NO
ADDR SPACE ASTE=07F34380
DSPNAME=SYSIGWB1 ASTE=03DD5480
DSPNAME=SYSZBPXC ASTE=04EB1380
DSPNAME=SYSZBPXU ASTE=04EB1300
DSPNAME=HFSDSP04 ASTE=01837F80
DSPNAME=HFSDSP03 ASTE=01837D80
DSPNAME=HFSDSP02 ASTE=01837D00
DSPNAME=HFSDSP01 ASTE=03DD5200
DSPNAME=HFSDSPS1 ASTE=01837F00
DSPNAME=SYSZBPX3 ASTE=01837E00
DSPNAME=SYSZBPX2 ASTE=01EBE600
DSPNAME=BPXSMBIT ASTE=01837B80
DSPNAME=SYSZBPXX ASTE=07F39400
DSPNAME=SYSZBPX1 ASTE=07F39380
DSPNAME=BPXLATCH ASTE=01EBE400
The display output shows the kernel address space identifier (ASID) as A=nnnn
where nnnn is the hexadecimal ASID value. In this example, A=000E. The display
output also shows the data space names that are associated with the kernel
address space.
When the list of address spaces being dumped includes a dubbed address space or
the kernel (OMVS) address space, the CTRACE buffers are automatically included
in the dump and need not be explicitly added to a DUMP command or SLIP trap.
The display output shows the active processes, ASIDs, process identifiers, parent
process IDs, and states. Use this to obtain ASIDs of processes that you want to
dump.
This display might show latch contention, which could be the cause of the
problem. You should dump the address space of the process holding the latch. If
the latch is a file system latch, dump the file system data space SYSZBPX2 also.
SDUMP has a limit on how much storage it allows in a single dump. It is called
MAXSPACE. To determine the current value of MAXSPACE, issue:
D D,O
Taking dumps
To initiate the dump, enter this command:
DUMP COMM=(dname)
where dname is a descriptive name for this dump. You can specify up to 100
characters for the title of the dump. The system responds and gives you a prompt
ID. You reply by specifying the data to be included in the dump. If you specify the
operand CONT, the system will prompt you for more input.
In the following examples of replies you can give, rn is the REPLY number to the
prompt.
The data areas in the following reply contain system control blocks and data areas
generally necessary for investigating problems:
R rn,SDATA=(CSA,SQA,RGN,TRT,GRSQ),CONT
In the next reply, x’E’ is the OMVS address space. The other address space IDs
specified are those believed to be part of the problem. You can specify up to 15
ASIDs.
R rn,ASID=(E,3A,32),CONT
The file system data space, SYSZBPX2, is useful if the hang condition appears to be
due to a file system latch.
The work in progress when the failure occurred is lost and must be started from
the beginning.
If a file system type fails to initialize, the system normally issues message
BPXF006I. If the failing file system type was specified with the option to prompt
for restart (the default), the error that caused the problem can be corrected, and
then the prompt responded to. If it was specified with the option to not prompt for
restart, the system continues to run without that file system type, but requests to
use the files in any file systems of that file system type will fail.
In rare cases, the initialization of a file system type might fail due to a
programming or environmental error, such as a severe storage shortage in the
kernel address space. The failure can occur before the file system type is initialized,
and, on rare occasions, the BPXF006I message is not issued. In these cases, the
severe programming or environmental error should be addressed first. After the
severe condition that prevented the initialization of the file system type is resolved,
the operator can manually initialize the file system type with the SETOMVS
RESET=xx operator command.
Files added since the earlier file system was saved must be created again and then
added again.
If the physical file system owning the root fails, or if the root file system is
unmounted, the operator must restore the root file system. A superuser who is
defined with a home directory of /; (root) can also restore the file system. All work
in progress when the failure occurred is lost and must be started from the
beginning.
Example: To display IPC resources and which user ID owns the resource:
ipcs -w
Tip: To delete message queue IDs, use the ipcrm -q or ipcrm -Q command.
Another problem might occur when a user waits a long time for a resource such as
semaphores or a message receive. Removing a message queue ID or semaphore ID
brings any user in an IPC wait state out of the wait state.
Example: To display which users are waiting for semaphores and message queues:
ipcs -w
List of subtasks
Subtask Associated procedure
Making the Language Environment runtime “Steps for making the runtime library
library available through STEPLIB available through STEPLIB” on page 320
Controlling printing
Control printing by doing the following:
v Designate printers to be used for shell users and applications
v Set up default printers for each user
v Control output print separators
You can arrange for all printing to be done by one or two printers by assigning
one or more output classes for all users. Then you and the users can look at the
printer queues for those output classes to check for all output.
Designating printers
Tell the application programmers the destinations or symbolic names for printers
you specified in JES initialization statements. The dest option of the lp command
uses the same destinations as the DEST parameter in the OUTPUT JCL statement.
For information about DESTID, see z/OS JES2 Initialization and Tuning Reference.
To place a user's name and address in the print separator for forked processes,
specify the user's name and address in the WORKATTR segment of the RACF user
profile. See “Defining z/OS UNIX users to RACF” on page 59.
A code page for a character set determines the graphic character that is produced for
each hexadecimal code. The code page is determined by the programs and national
languages being used.
The z/OS UNIX Application Services can process data in the following code pages:
v Any of the EBCDIC Latin 1 Country-Extended Code Pages
v Japanese (Latin) Extended Code Page 01027, which defines single-byte
encodings for character set 01172 (Japanese Extended EBCDIC/PC Common)
v Japanese Combined Code Page 00939, which is the combination of code page
01027 and code page 00300. Code page 00300 (Japan [Kanji]–Host, DBCS) defines
DBCS encodings for character set 00370 (IBM Japanese Graphic Character Set,
Kanji)
Data intended for processing by the z/OS shell might require conversion to one of
the preceding code pages. This data might be encoded in:
v Latin 1 code page 00500, which is used for Systems Application Architecture®
(SAA).
v An ASCII code page, for example, for a file from a workstation. A source
program on a tape archive (TAR) tape might be stored in the ASCII code set.
v Code page 00293, which the z/OS XL C/C++ compiler can optionally use.
v Code page 00290, Japanese (Katakana) single-byte.
v Code page 00930, the Japanese combined code page (code page 0290 plus DBCS
code page 300).
For code page 00037, only two characters are different from code page 01047:
v Right square bracket (])
v Left square bracket ([)
Rule: If you have characters from the preceding list in your data, you must convert
from one code page to another when, for example, you are doing one of the
following:
Rule: You must specify the CONVERT operand in the TSO/E OCOPY, OGET,
OPUT, OGETX, and OPUTX commands to convert the data that the command is
copying. Copying can be from data sets or UNIX files and to data sets or UNIX
files.
Rule: DBCS data not in code page IBM-939 must be converted to IBM-939 with the
iconv command so that it can be processed in the z/OS UNIX environment.
Guideline: If the data is in a code page not supported by the shell, you can copy
the data with the OCOPY command first and then convert it using the iconv
command. Or you can convert the data with the TSO/E ICONV CLIST and then
copy it using the OCOPY command.
In particular, for the OMVS command, BPXFX100 is the default conversion table.
As shipped, FSUMQ000 is an alias for BPXFX100. To change the OMVS default
table, move the FSUMQ000 ALIAS to the new default, or rename the new default
table to FSUMQ000.
The source for these members is shipped in SYS1.SAMPLIB. If you need to change
them, see “Customizing code page conversion.”
Example: Issue:
OPUT WORKLOAD.TOTALS(OCT17) ’u/turbo/wkld/totals/oct17’ TEXT CONVERT(YES)
Result: The user ID TURBO copied a member from a PDSE into a file. The
partitioned data set member OCT17 was copied from the data set
TURBO.WORKLOAD.TOTALS to a text file with the path name
/u/turbo/wkld/totals/oct17. Data was converted from the z/OS UNIX
country-extended code page to code page 01047, using the default conversion table
because YES was specified. To use a different conversion table, specify its
name—for example, BPXFX311 for conversion from the ASCII conversion table. If
you do not want conversion, omit the CONVERT operand.
Each table is 1792 bytes long and contains the 8-bit codes that the system
substitutes for characters in the input data set or file. Each table contains nine
sections; you might have to change the data in all nine sections. Each member has
a TO and a FROM subtable:
v The TO subtable is used to translate data from another code page to 01047.
v The FROM subtable is used to translate data from code page 01047 to another
code page.
To avoid conflicts in the names of modules containing tables, begin your name
with letter K through Z; letters A through J are reserved for IBM use.
JES2 processing
In a JES2 multi-access spool (MAS) complex, a z/OS UNIX application might
experience the following situation:
v The system can convert the job on one system and interpret it on another. If
all systems do not have z/OS UNIX, the job processing can begin on a system
with z/OS UNIX installed and started, but continue on a system without z/OS
UNIX installed.
If a job requires z/OS UNIX or a file system, use a JES2 /*JOBPARM statement
with a SYSAFF keyword to direct the job to the correct system.
If you need to bring down JES2, there might still be a number of initiators that are
provided by WLM for use on fork and spawn. These initiators time out after 30
minutes on their own. To terminate the initiators, you can issue the following
operator command:
F BPXOINIT,SHUTDOWN=FORKINIT
For more information, see “Partial shutdowns for JES2 maintenance” on page 290.
JES3 processing
In a JES3 global or local configuration, a z/OS UNIX application might experience
the following situation:
v One system can complete conversion and interpretation and another system
can run the job. If all systems do not have z/OS UNIX, the job might be
assigned to a system without z/OS UNIX. In this case, the job will fail. To
prevent this problem, use a JES3 //*MAIN statement with a SYSTEM keyword
to direct the job to a system with z/OS UNIX.
When choosing a method for runtime library access, consider the following
questions:
v Can the Language Environment runtime library be placed in LNKLST, without
adversely affecting other applications?
However, sometimes the SCEERUN data set cannot be placed in LNKLST, because
other applications require the pre-Language Environment runtime libraries. In that
case, you can make the Language Environment runtime library available through
STEPLIB as described in “Steps for making the runtime library available through
STEPLIB.” In addition, you can use this approach to test new levels of the runtime
libraries.
Perform the following steps to make the runtime library available through
STEPLIB.
1. Add the SCEERUN data set on a STEPLIB DD statement to the OMVS startup
procedure found in PROCLIB.
Result: The STEPLIB data set is propagated to BPXOINIT and the /usr/sbin/init
program including all programs it invokes using fork or exec.
_______________________________________________________________
2. Add the SCEERUN data set to your TSO/E logon procedure by concatenating
it to the ISPLLIB DD statement (if it exists) and then concatenating it to the
STEPLIB DD statement (if it exists). You can also use the TSOLIB function to
add the SCEERUN data set.
Result: After you have added the SCEERUN data set, the TSO/E OMVS
command can begin to use it.
_______________________________________________________________
3. Add the following statement to the /etc/rc file:
export STEPLIB=hlq.SCEERUN
Result: Daemons started in /etc/rc will use the SCEERUN data set.
_______________________________________________________________
4. In /etc/profile, remove:
if [ -z "$STEPLIB" ] && tty -s;
then
export STEPLIB=none
exec sh -L
fi
When you are done, you have made the Language Environment runtime library
available through STEPLIB.
Tip: Place the SCEERUN2 data set in LNKLST, even though the SCEERUN data set
is accessed through STEPLIB. Because the SCEERUN data set does not contain
module names that conflict with pre-Language Environment runtime libraries,
adding it to LNKLST will not have any adverse effects.
For BPXBATCH processing, you still have to specify the SCEERUN data set on a
STEPLIB DD statement even though the RUNOPTS parameter has been set in the
BPXPRMxx member.
If the security product is called, it is still possible that access will be successful,
and that audit records will be created; for example, when the permission bits do
not grant access, but UNIXPRIV authority, or an access control list, does.
Tip: If your installation uses the IRRSXT00 exit to control access to the file system,
do not define the BPX.SAFFASTPATH profile.
Abends
z/OS UNIX services issues system completion codes: abend codes EC6 and 422.
All 422 abends and some EC6 abends might not be accompanied by an SVC dump,
because the IBM-supplied IEASLP00 parmlib member contains SLIP commands to
suppress the dumps.
Some abends are a normal result of a kill shell command, an exec shell command
or program function, or the ending of a process. Others are caused by errors.
Messages
z/OS UNIX issues messages with the following prefixes:
BPX Messages from the System Services component
FDBX Messages from the dbx debugger
FOM Messages from the Application Services component
FSUM Messages from the Shell and Utilities
Messages to the operator and system programmer have identifiers; messages from
the shell to the interactive user do not have identifiers.
Tip: You can change the file that is used to capture messages by calling the
oe_env_np (BPX1ENV) service and specifying _BPXK_JOBLOG with a different file
descriptor. Message capturing is turned off if the specified file descriptor is marked
for close on a fork or exec. Message capturing is process-related. All threads under
a given process share the same job log file, and any thread under that process can
initiate message capturing.
Multiple processes in a single address space can each have different files active as
the JOBLOG file. Some or all of them can share the same file, and some processes
can have message capturing active while others do not.
Guideline: When the file that is used as a job log is shared by several processes
(for example, by a parent and child), the file should be opened for append. If the
file is not opened, unpredictable results might occur. Only files that can be
represented by file descriptors can be used as job log files; MVS data sets are not
supported.
Messages that would normally go to the JESYSMSG data set are captured, but
messages that go to JESMSGLG are not captured.
Component identifiers
Table 32 lists the component identifiers that are used in dumps and symptom
strings.
Table 32. List of component identifiers that are used in dumps and symptom strings
Component identifier Code Module prefix
DF185 HFS physical file system GFU
SCPX1 SCPX4 SCPX6 z/OS UNIX System Services BPX FOM BOP
Formatting dumps
To format problem data in a stand-alone dump or SVC dump, use the interactive
problem control system (IPCS) OMVSDATA subcommand. OMVSDATA is not
useful in an SYSMDUMP dump or a core dump, which the system writes for an
application program, because these dumps do not contain the z/OS UNIX
programs or data structures.
Diagnosing problems
If the problem is in the shell or debugger, the system treats it as an application
problem.
If the _BPXK_MDUMP environment variable is not set, then you can specify a
dump by allocating a SYSMDUMP data set for the TSO/E session. The system
then does the following:
v Creates a file in the user's working directory.
v Names it coredump.pid, where pid is the process ID for the process being
dumped. It is in hexadecimal format.
v Writes a core dump in the file. The core dump is a SYSMDUMP dump.
You can dynamically request a SYSMDUMP by using the SIGDUMP signal. Use
the _BPXK_MDUMP environment variable to specify where the SYSMDUMP is to
be written to. You can also use F BPXOINIT,DUMP=pid to request a SYSMDUMP.
A SIGDUMP signal is then sent to the specified process. For both the SIGDUMP
signal and the F BPXOINIT,DUMP command, the _BPXK_MDUMP environment
variable must be set to an MVS data set name. If it is set to a UNIX file name or
defaulted to OFF, then both the SIGDUMP signal and the F BPXOINIT,DUMP
command might be ignored.
If you receive message BPXP006E indicating that z/OS UNIX is being initialized,
you can check the /etc/log file to see what the last command processed from
/etc/rc was. This might help you determine the cause of delay or hang.
The sample /etc/rc file that is shipped with z/OS UNIX includes the set -v -x
command. That command specifies that shell input lines are to be printed to
/etc/log as they are run, in addition to commands and their arguments.
Tip: Run TFS in a colony address space if more space is needed than can fit in an
address space. When it is run in a colony address space, you can use the STOP and
MODIFY commands. For more information, see “Running a physical file system in
a colony address space” on page 45.
Security considerations
If you require a high level of security in your z/OS system and do not want
superusers to have access to z/OS resources such as SYS1.PROCLIB, read these
sections:
v “Comparing UNIX security and z/OS UNIX security” on page 333.
v “Establishing the correct level of security for daemons” on page 335.
If you are using kernel services in full function mode, you might want to mount a
temporary file system over /tmp. If you do, it can be used as a high-speed file
system for temporary files. However, you cannot recover vi files if the system goes
down because vi writes temporary files to TMPDIR (/tmp by default). To recover
these files, use the exrecover command, which automatically runs from /etc/rc.
Edit SYS1.PARMLIB(BPXPRMFS), that is, add the mount statement to mount a file
system at the /tmp mount point. For example, you can add the following mount
statement under the FILESYSTYPE TYPE(TFS) definition:
MOUNT FILESYSTEM(’/TMP’)
MOUNTPOINT(’/tmp’)
TYPE(TFS)
PARM(’-s 10’)
The following example shows the mount command for a TFS. Typically this
specification would be in BPXPRMxx.
FILESYSTYPE TYPE(TFS) ENTRYPOINT(BPXTFS)
MOUNT FILESYSTEM(’/TMP’) TYPE(TFS)
MOUNTPOINT(’/tmp’)
PARM(’ -s 10’)
Note:
1. FILESYSTEM must be a unique name for the file system. Using the path name
of the mount point makes it easier to understand output produced by
commands such as df.
2. PARM specifies how much virtual storage the TFS can use. It can also be used
to specify other information as listed in “Parameter key options for the mount
statement and mount commands” on page 329. If PARM is omitted or is not
valid, the TFS defaults to 1 MB. If the mount request specifies a size in
megabytes that is too large for the address space, the request fails with an
EMVSERR (9D) error. Try the request again, using a smaller value.
3. MODE is either RDWR or READ.
4. To specify that the temporary files are to be written to a specified directory
instead of TMPDIR, use the TMP_VI environment variable.
Default: 0
–c <cache>
<cache> is the amount of buffer storage in MB that TFS uses in the 32-bit
address range to support a 64-bit TFS. This parameter is ignored for file
systems that are allocated in the 31-bit range. The default is calculated
based on the TFS block size such that the numbers of cache buffers is 256.
-ea count
Allows the TFS file system to automatically grow count times. The TFS
grows 1-K blocks each time it grows. For the default 4-K block size, the
TFS grows 4 MB. The extension occurs when the file system fills up, before
the file system full message.
Note: If the size specified for the file system size is too large, the
maximum file system size is used and a message is not issued. If the
extend factors will result in the file system size becoming larger than the
maximum size, the extend factors are ignored. A message is not issued and
the file system will not have extend capability.
-u <uid>
<uid> is the numeric UID that is to be assigned to the root directory of the
file system. The default is 0.
The storage administrator or system programmer can monitor the space in a file
system by mounting a file system with the FSFULL mount parameter. For example,
message BPXTF009E is displayed when the file system is 70 percent full. Another
message is issued when the file system is 80 and 90 percent full:
mount parm(’FSFULL(70,10)’)
For TFS that are run in a colony, you can use the MODIFY ZFS command to
change the default FSFULL value. This value applies to subsequent TFS mounts
that do not specify FSFULL.
where filesysname is the name of the file system to be extended. Each extension is 1
K blocks.
where number is the number of automatic or manual extends allowed for a file
system that is subsequently mounted without using the -ea or -em parameters.
Chapter 14. Managing the temporary file system (TFS) 331
Restriction: The sum of auto-extend and manual extend cannot exceed 500.
Lists of subtasks
Subtasks Associated procedure
Establishing the correct level of security for “Steps for preparing the security program for
daemon daemons” on page 337
Customizing the system for IBM-supplied “Steps for defining programs from load
daemons libraries to program control” on page 338
If you require a high level of security in your z/OS system and do not want
superusers to have access to z/OS resources such as SYS1.PROCLIB, read the
following sections:
v “Comparing UNIX security and z/OS UNIX security.”
v “Establishing the correct level of security for daemons” on page 335.
MVS, traditional UNIX, and z/OS UNIX systems manage user identities
differently. Table 34 on page 334 contrasts various aspects of security on these
systems.
UNIX level
If the BPX.DAEMON resource in the FACILITY class is not defined, your system
has UNIX-level security. In this case, the system is less secure.
This level of security is for installations where superuser authority has been
granted to system programmers. These individuals already have permission to
access critical data sets such as PARMLIB, PROCLIB, and LINKLIB. These system
programmers have total authority over a system.
Programs that run with superuser authority have daemon level authority. They can
issue MVS identity-changing services such as setuid(), seteuid() and __spawn()
without having first issued a successful _passwd() for the target user ID.
To use the UNIX level of security, assign UID(0) to the superuser. Also assign
UID(0) to the user ID used for running daemon programs; for example, inetd or
cron.
Kernel services that change a caller's z/OS user identity require the target z/OS
user identity to have an OMVS segment defined. If you want to maintain this extra
level of control at your installation, you will have to choose which daemons to
permit to BPX.DAEMON FACILITY. You will also have to choose the users to
whom you give the OMVS security profile segments. To accomplish this, see
“Steps for preparing the security program for daemons” on page 337.
“Steps for setting up enhanced program security” on page 343 explains how to set
up enhanced program security.
BPX.DAEMON
If the BPX.DAEMON resource in the FACILITY class is defined, your system has
z/OS UNIX security. Your system can exercise more control over your superusers.
This level of security is for customers with stricter security requirements who need
to have some superusers maintaining the file system but want to have greater
control over the z/OS resources that these users can access. Although
BPX.DAEMON provides some additional control over the capabilities of a
superuser, a superuser should still be regarded as a privileged user because of the
full range of privileges the superuser is granted.
The additional control that BPX.DAEMON provides involves the use of kernel
services such as setuid() that change a caller's z/OS user identity. Any user can
issue a setuid() which follows a successful __passwd() call to the same target user
ID. However, a user with daemon authority can issue setuid() without knowing
the target user's password or password phrase. With BPX.DAEMON defined, a
superuser process can run these types of change services and identity if the
following statements are true:
v The caller's user identity was permitted to BPX.DAEMON.
v All programs running in the address space have been loaded from a library that
is controlled by a security product. A library that is identified to RACF program
control is an example. You can identify individual files as controlled programs.
For more information, “Customizing the system for IBM-supplied daemons” on
page 338.
Programs that were loaded from MVS libraries do not need to be controlled
programs if BPX.DAEMON.HFSCTL has been set up. Only UNIX files are
checked for program control. For information about setting up
BPX.DAEMON.HFSCTL, see “Checking UNIX files for program control” on page
340.
Kernel services that change a caller's z/OS user identity require the target z/OS
user identity to have an OMVS segment defined. If you want to maintain this extra
level of control at your installation, you must choose which daemons to permit to
BPX.DAEMON. You will also have to choose the users to whom you give the
OMVS security profile segments. To accomplish this, see “Steps for preparing the
security program for daemons” on page 337.
Rule: You must use the name BPX.DAEMON. Substitutions are not allowed.
Tip: The system administrator must be defined to the daemon FACILITY class
so that if a daemon process fails, the system administrator can restart it. To
authorize a current RACF security administrator to be a superuser who can
restart daemons, issue:
PERMIT BPX.DAEMON CLASS(FACILITY) ID(RACFADM) ACCESS(READ)
_______________________________________________________________
2. If this is the first FACILITY class that the installation has defined, activate it.
SETROPTS CLASSACT(FACILITY)
SETROPTS RACLIST(FACILITY)
_______________________________________________________________
3. Give daemon authority to the kernel. Most daemons that inherit their identities
from the kernel address space are started from /etc/rc.
Example: To authorize the OMVSKERN user ID to BPX.DAEMON, issue:
PERMIT BPX.DAEMON CLASS(FACILITY) ID(OMVSKERN) ACCESS(READ)
SETROPTS RACLIST(FACILITY) REFRESH
_______________________________________________________________
4. Define a superuser with a user ID of BPXROOT on all systems so that daemon
processes can invoke setuid() for superusers.
ADDUSER BPXROOT DFLTGRP(OMVSGRP) OMVS(UID(0)
HOME(’/’) PROGRAM(’/bin/sh’))
NOPASSWORD
The NOPASSWORD option indicates that BPXROOT is a protected user ID that
cannot be used to enter the system by using a password or password phrase.
The user ID will not be revoked due to invalid logon attempts.
_______________________________________________________________
5. On the SUPERUSER statement in BPXPRMxx, specify the user ID that the
kernel will use when you need a user ID for UID(0).
Example:
SUPERUSER(BPXROOT)
If you do not specify the SUPERUSER statement, the default is BPXROOT.
The BPXROOT user ID should not be permitted to the BPX.DAEMON
FACILITY class profile. The BPXROOT user ID is used when a daemon process
invokes setuid() to change the UID to 0 and the user name has not been
previously identified by getpwnam() or by the _passwd() function. This action
prevents the granting of daemon authority to a superuser who is not defined to
BPX.DAEMON.
_______________________________________________________________
The syslogd daemon, which is used to route messages, is shipped with TCP/IP
and is documented in their library.
Rules:
v If you are defining BPX.DAEMON for a higher level of security, you need to
customize the system for IBM-supplied daemons. Many daemons require
BPX.DAEMON authority and must have all modules loaded in their address
spaces identified as being defined to program control.
v All modules loaded from LPA are considered to be controlled.
See the topic on protecting programs in z/OS Security Server RACF Security
Administrator's Guide
Perform the following steps to define programs from traditional load libraries to
program control.
1. Activate the RACF program control (both access control to load modules and
program access to data sets).
SETROPTS WHEN(PROGRAM)
_______________________________________________________________
2. Define one of the following profiles.
a. For a particular program, define a discrete RACF PROGRAM class profile:
RDEFINE PROGRAM membername ADDMEM(’datasetname’/volser/NOPADCHK) UACC(READ)
_______________________________________________________________
When you are done, you have defined a program from a load library to program
control.
Tips:
1. PROGRAM profile * provides the same function as PROGRAM profile **. If
you already have a PROGRAM profile * defined, do not create an ** profile.
Instead, issue the RALTER command against PROGRAM * with the same
operands shown in the RDEFINE PROGRAM example.
2. If you are running in a sysplex with a shared RACF data base and your system
libraries are also shared, then leaving the VOLSER off will allow you to use the
same RACF definitions on all systems in the sysplex.
3. Any time you add, change, or delete a profile in the PROGRAM class (with
RDEFINE, RALTER, PERMIT, or RDELETE), you must update the in-storage
copy of the PROGRAM profile.
SETROPTS WHEN(PROGRAM)
REFRESH
4. Daemons that are shipped by z/OS reside in the file system and are controlled
programs, so you do not need to define them to program control. For example,
suppose you have a daemon named server1. The file /bin/server1 would have
the sticky bit on. Member SERVER1 would reside in SYS1.LINKLIB and be
defined as a controlled program.
RDEFINE PROGRAM SERVER1
ADDMEM(’SYS1.LINKLIB’/’******’/NOPADCHK) UACC(READ)
SETROPTS WHEN(PROGRAM) REFRESH
Tip: You do not need to define the daemons that are shipped by z/OS if you
decide to define BPX.MAINCHECK, as discussed in “Using enhanced program
security” on page 342.
5. Daemons can load locales from the file system or from MVS load modules. If
they are loaded from MVS load libraries, then these modules must be marked
program-controlled. If they are loaded from the file system, the program control
extended attribute bit must be set. The locales shipped by IBM already have
this extended attribute bit set.
Example: To set the program control extended attribute in the file named proga,
issue:
extattr +p /user/sbin/proga
Tip: The attribute is turned off if there is any activity that can change the contents
of the file. If this happens, a system programmer with the appropriate privilege
will have to verify that the file is still correct. Then the programmer will have to
When you are done, you have set up the BPX.DAEMON.HFSCTL resource in the
FACILITY class.
Rule: If the specified program is going to be invoked as a job step program, you
must link-edit it with AC=1. For example:
c89 -Wl, AC=1
To avoid possible integrity problems, do not set AC=1 if the program will be run
in an APF-authorized environment but not as the job step program (such as DLL).
Tip: To find out whether the APF-authorized extended attribute of the UNIX file
was set, use the ls -E command.
Example: The following example shows the RACF command that is used to give
the necessary permission to user Ralph Smorg with user ID SMORG:
RDEFINE FACILITY BPX.FILEATTR.APF UACC(NONE)
PERMIT BPX.FILEATTR.APF CLASS(FACILITY) ID(SMORG) ACCESS(READ)
SETROPTS RACLIST(FACILITY) REFRESH
Tip: To find out if the shared library extended attribute has been set, use the ls -E
command.
Example: The following example shows the RACF command that was used to give
READ access to user Ralph Smorg with user ID SMORG:
RDEFINE FACILITY BPX.FILEATTR.SHARELIB UACC(NONE)
PERMIT BPX.FILEATTR.SHARELIB CLASS(FACILITY) ID(SMORG) ACCESS(READ)
SETROPTS RACLIST(FACILITY) REFRESH
To set the shared library attribute, issue the extattr command with the +l option.
Note: Once the ST_SHARELIB bit has been set for a module, any program,
whether or not it has read access to the BPX.FILEATTR.SHARELIB FACILITY, will
be able to load modules into the system shared library and use those that are
already loaded.
If the BPX.DAEMON resource in the FACILITY class has been defined, then
programs that are loaded from MVS libraries are checked for program control. The
checking is bypassed only if BPX.DAEMON.HFSCTL is defined and the user is
permitted to it.
Programs in files are controlled programs if they have the program control
attribute set. If a program that is not a controlled program is loaded, the address
space is marked dirty and cannot perform daemon activities. If an address space
was marked dirty, you can load a controlled program but it will not be able to do
any controlled functions such as setuid(). All BPX.SERVER and BPX.DAEMON
privileges are revoked, including the right to check passwords and password
phrases.
RACF supports program control. Other security products might not. If you are
using a security product that does not support program control, you might still
have BPX.DAEMON defined. In this case, the only situation that will mark an
address space dirty is a load from the file system where the program is not defined
to program control.
Additionally, if you run with enhanced program security and have the
BPX.DAEMON FACILITY class profile defined, you can use another FACILITY
profile to request that z/OS UNIX apply tighter security controls to your daemons.
Typically, with BPX.DAEMON defined, z/OS UNIX will work with RACF to
enforce a clean environment for any daemon. In this case, the daemon can run
only those programs defined to the RACF PROGRAM class or marked controlled
via the extattr shell command with the +p option.
For additional security, you can define FACILITY profile BPX.MAINCHECK. When
you do that, z/OS UNIX and RACF will require that the first program your
daemon executes must be defined to RACF using a PROGRAM profile with the
MAIN option for use of execute-controlled programs. If you define
BPX.MAINCHECK, then you need to move the first program that any daemon
executes from to an MVS library if it currently resides in the UNIX file system.
When you are done, you have set up enhanced program security.
Tips:
1. You can partially activate enhanced program security by defining the profile
before restarting OMVS or issuing a SET OMVS or SETOMVS command.
However, only address spaces that are started after enhanced program security
was enabled are affected. Use this partial enablement for testing purposes only.
2. Because the new RACF enhanced security checking requires a completely
controlled program environment, testing using dbx might be restricted because
it can cause the program environment to be considered uncontrolled. Testing a
trusted MAIN program under dbx might require that the RACF enhanced
security checking be set up in warning mode or that BPX.MAINCHECK be
undefined. Attempting to do otherwise might cause some privileged operations
to fail while under dbx control.
Guideline: Remain in warning mode until you have done at least one IPL, to
ensure that you have tested with all your daemons.
Rule: Before you can use the daemons, you have to permit each daemon to the
BPX.DAEMON FACILITY class profile and then ensure that the library that
contains the daemon is added to the program control profile.
Perform the following steps to customize the system for IP-supplied daemons.
1. Permit each daemon to BPX.DAEMON.
Example: Set up the syslogd daemon, which is in the SEZALOAD library:
PERMIT BPX.DAEMON CLASS(FACILITY) ID(syslogd) ACCESS(READ)
_______________________________________________________________
2. Add the library that contains the library to the program control profile.
Example: Define the SEZALOAD library to the PROGAM class:
RALT PROGRAM * ADDMEM(’tcpip.SEZALOAD’/’volser’/NOPADCHCK) UACC(READ)
Result: You have set up the syslogd daemon and then added the SEZALOAD
library to the program control profile. You can start using that daemon.
See “Customizing the system for IBM-supplied daemons” on page 338 for more
information about program control. z/OS Communications Server: IP Configuration
Guide also has more information.
_______________________________________________________________
When you are done, you have customized the system for IP-supplied daemons.
After it has been started, the inetd daemon monitors network sockets for services
listed in /etc/inetd.conf. That file tells the inetd daemon which services to support
and how to handle service requests. When inetd receives a request on one of these
sockets, it determines which service corresponds to that socket. Then it either
handles the service request itself or invokes the appropriate server. For more
information about the /etc/inetd.conf file, see the description of inetd in z/OS
UNIX System Services Command Reference.
For z/OS UNIX, inetd handles rlogin, telnet, rsch, rexec, and others. It uses a
configuration file in /etc/inetd.conf when handling the requests.
When you are done, you have customized the inetd daemon.
If you want to have the uucpd daemon run with a user ID other than OMVSKERN
(for example, UUCPD), you need to decide what the new user ID will be.
When you are done, you have customized the uucpd daemon so that it runs with
the UUCP user ID.
The NOPASSWORD option indicates that this is a protected user ID that cannot be
used to enter the system by using a password or password phrase. The user ID
will not be revoked due to invalid logon attempts.
Tips:
v For all the other setup steps required for rlogin, see “Setting up for rlogin” on
page 361.
v If you are writing or porting your own command to process login requests, the
shell interface to rlogin is the FOMTLINP module, which is documented in
Appendix B, “Modules for the login and logout functions,” on page 439.
FOMTLINP has many parameters that can be used to tailor the rlogin
processing. FOMTLINP is the login function and FOMTLOUT is the logout
function.
For more information about the rlogind daemon, see z/OS UNIX System Services
Command Reference.
Before customizing the cron daemon, you need to read either “Customizing the
cron daemon for the first time” or “Migrating from a previous release” on page
348 if you have mounted the root file system read-only.
When you are done, you have customized the cron daemon for the first time.
Guideline: If you are moving from a read/write root to a read-only root, you
should follow the steps in “Customizing the cron, uucp, and mail utilities for a
read-only root file system” on page 137. If you do not mount the root read-only,
the procedure described in “Steps for customizing the cron daemon” will still
work. However, if you are using a shared file system, mounting in read-only mode
is suggested.
When you are done, the cron daemon has been customized and can be started.
v It must be started by a user ID with READ permission to the BPX.DAEMON
resource profile in the FACILITY class. (For more information about
BPX.DAEMON, see “Setting up the UNIX-related FACILITY and SURROGAT
class profiles” on page 82 and “Establishing the correct level of security for
daemons” on page 335.)
v It is typically called from /etc/rc. The command is:
_BPX_JOBNAME=CROND /usr/sbin/cron &
As explained in “Using & at the end of a command” on page 352, using the & at
the end of a command starts the command in the background and the
_BPX_JOBNAME environment variable assigns a job name to the cron daemon.
v The cron daemon can only be started once because it will continue to run in the
background.
For more information about starting daemons, see “Starting daemons” on page
351.
Examples:
1. To run bigcopy.sh script at 11:00 p.m., issue:
at -f bigcopy.sh 23:00
Input consists of six fields, separated by blanks. All blank lines and any input
that contain a # as the first non-blank character is ignored. The first five fields
give a date and time in the following form:
v A minute, expressed as a number from 0 through 59.
v An hour, expressed as a number from 0 through 23.
v A day of the month, expressed as a number from 1 through 31.
v A month of the year, expressed as a number from 1 through 12.
v A day of the week, expressed as a number from 0 through 6 (with 0 standing
for Sunday).
Any of these fields can contain an asterisk (*) standing for all possible values.
For example, if you have an * as the day of the month, the job runs every day
of the month.
The sixth field of a crontab entry is a string that the shell executes at the
specified time.
Note:
1. crontab jobs do not run with the shell variable definitions that exist when
crontab was invoked. Also, login profiles are not run. The only environment
variables that are set are HOME, LOGNAME, PATH, SHELL, and TZ.
However, at jobs inherit the current environment variables.
2. To ensure that user IDs that share a UNIX UID have the correct settings, the
user's HOME and LOGNAME environment variables are set according to the
MVS identity of the user.
3. PATH is set to the system default. If you want to invoke commands or scripts
in other directories, you need to specify the full path name or set the PATH
variable in your crontab job.
4. The shell variable is set to /bin/sh.
Starting daemons
Daemons can be started by JCL and also by the shell. Some daemons such as inetd
can also be started by the shell. Interactive login shells, shell scripts run as
background jobs from a login shell, and batch jobs using BPXBATCH to run the
shell all can start daemons.
Many daemons can be started from the shell, both interactively and from shell
scripts. In general, processes started from the shell complete (either successfully or
with some error) before the parent shell itself exits. Any processes still running
receive a SIGHUP signal when the parent shell exits. The default action for
SIGHUP is to terminate the process. That is, when the shell exits, the system
terminates all running processes started by the shell.
Daemon processes are long-running and generally must continue to run even after
the invoking shell terminates. Those daemons started using the shell are therefore
written to ignore SIGHUP signals. They are also typically written to return control
to the shell immediately. If they did not return, the shell script would wait forever
for the daemon to exit.
Rules:
v When started from the shell, most daemons should not be placed in the
background environment. That is, an ampersand should not appear on the shell
command line that starts a daemon. Doing so exposes the background job
containing the daemon to SIGHUP and causes the daemon to terminate
unexpectedly when the shell script exits.
v Some daemons either do not protect themselves from the SIGHUP signal or do
not return to the shell immediately. You have to have those daemons start in the
background environment. To do this, add an ampersand character at the end of
the command line that starts the daemon.
v When starting daemons in the background environment, it is very important to
include a sleep command at the end of the script. This command gives the
background processes time to get started and set up to ignore SIGHUP so that
when the shell exits, the daemons keep running when the shell script completes.
The amount of time required can be determined empirically. A value of 5
seconds is suggested for a start.
A shell script that starts a more simple daemon called slowpoke that does not
return control immediately to the shell would look like this:
slowpoke &
sleep 5
exit
In summary, a shell script that starts the syslogd and cron daemons would look
like the following:
_BPX_JOBNAME=’SYSLOGD’ /usr/sbin/syslogd -f /etc/syslog.conf &
_BPX_JOBNAME=’CROND’ /usr/sbin/cron &
sleep 5
exit
However, system programmers might want the cron daemon process to have a job
name. To do this from a shell script, you can use the _BPX_JOBNAME
environment variable. (This can be done on the command line, or in a prior export
command.) The _BPX_JOBNAME variable assigns the job name to executed
programs, running in forked processes, but not to locally spawned processes. As a
result, the shell command
_BPX_JOBNAME=CROND /usr/sbin/cron
cannot assign the job name to the cron daemon. (It depends if the spawn is done
within the same address space.) But, the shell command
_BPX_JOBNAME=CROND /usr/sbin/cron &
will assign the job name to the cron daemon, because it is run with a fork/exec.
During initialization
Put the command in /etc/rc to start the daemon automatically during initialization.
For information about starting programs from /etc/rc, see “Customizing /etc/rc”
on page 229.
When UNIX systems are initialized (IPLed or restarted), the /etc/rc shell script is
run to perform system initialization functions and to start daemons. If a daemon
terminates, a superuser must restart the daemon.
The following explanation uses the syslogd daemon (which supplies logging
functions for programs) as an example of a daemon. Similar steps are required for
other daemons.
Example:
//SYSLOGD PROC
//SYSLOGD EXEC PGM=SYSLOGD,REGION=30M,TIME=NOLIMIT
// PARM=’POSIX(ON) ALL31(ON)/ -f /etc/syslogd.conf’
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
//SYSOUT DD SYSOUT=*
//SYSERR DD SYSOUT=*
//CEEDUMP DD SYSOUT=*
For this syslogd cataloged procedure to get control with superuser and daemon
authority, you must add an entry to the started procedures table, or define it in the
STARTED class.
Example:
DC CL8’SYSLOGD’ PROCEDURE NAME
DC CL8’OMVSKERN’ USER ID (to be used for SYSLOGD proc)
DC CL8’OMVSGRP’ GROUP NAME OR BLANKS FOR USER’S DEFAULT GROUP
DC XL1’00’ NOT TRUSTED
DC XL7’00’ RESERVED
For more information about the started procedure table, see z/OS Security Server
RACF System Programmer's Guide.
Whenever the syslogd daemon is deactivated, you can issue this command to
restart it.
Using BPXBATCH
You can use a cataloged procedure using BPXBATCH to invoke a daemon program
located in the file system.
Example:
//SYSLOGD PROC
//SYSLOGD EXEC PGM=BPXBATCH,REGION=30M,TIME=NOLIMIT,
// PARM=’PGM /usr/lpp/tcpip/sbin/syslogd -f /etc/syslogd.conf’
//* STDIN and STDOUT are both defaulted to /dev/null
//STDERR DD PATH=’/etc/log’,PATHOPTS=(OWRONLY,OCREAT,OAPPEND),
// PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
The JCL in the SYSLOGD PROC invokes BPXBATCH, which sets up the standard
file descriptors and environment variables before running /usr/lpp/tcpip/sbin/
syslogd.
For more information about the syslog daemon, see z/OS Communications Server: IP
Configuration Guide.
When you are done, you have set up and defined daemons.
If you determine that your program requires DAEMON authority, then you need
to do the following:
1. Document the requirement to assign a user ID to the daemon which has a UID
of 0.
2. Document the requirement to permit the daemon to the BPX.DAEMON
FACILITY class profile.
3. Document how to start the daemon from /etc/rc or as a started procedure.
4. The main program and all programs that it loads must be marked program
controlled in the file system or be loaded from an MVS program controlled
library. For more information about marking programs program-controlled, see
“Customizing the system for IBM-supplied daemons” on page 338. For more
information about placing your programs into MVS libraries, see “Moving
z/OS UNIX executables into the LPA” on page 385. This section describes steps
to move a program into LPA; similar steps can be followed to move a program
into a system linklist library or a step library. If you decide to use MVS
libraries, you need to also see “Steps for defining programs from load libraries
to program control” on page 338.
Example: To verify that the DAEMONU daemon was properly defined with an
OMVS segment, issue:
LU DAEMONU OMVS
You should now see that the UID is 0. (The UID for all daemons must be 0, which
gives superuser authority to the daemon.)
OMVS INFORMATION
----------------
GID= 0000000500
In the output, the UID is 500. (Installations can choose the GID values for their
groups.)
Pathname : /usr/sbin/daemon1
Link count . . . . : 2
Set UID bit . . . : 0
Set GID bit . . . : 0
Sticky bit . . . . : 1
...
In the line for the sticky bit, 1 indicates that the sticky bit is
on.
The z/OS UNIX shell Issue
ls -l
Rules:
1. If the daemon module resides in the file system, the file containing the daemon
module must have the program control extended attribute set.
2. If the program does have the extended attribute set, you still need to verify that
the file system that it resides in is not mounted with the NOSETUID option. Do
one of the following:
v Check the MOUNT statement in BPXPRMxx.
If the "Ignore SETUID" value is set to 1, loading modules from this file
system will mark your address space dirty. For more information about dirty
address spaces, see “Handling dirty address spaces” on page 342.
Tip: If you use an external link, the MVS program defined by the external link
does not have to be part of the file name of the program that was invoked via
either exec() or spawn().
When you are done, you have created an external link that can be used to access
an MVS load library.
Perform the following steps to find the module that was not defined to program
control.
1. Search the RACF database for a list of the modules that are defined to program
control.
Example: Issue the following TSO/E command:
SEARCH CLASS(PROGRAM) NOMASK
Result: You will see output similar to the following:
CEEOLVD
CEEOV
CEEPLPKA
CEEZ24
DAEMON
EDCUCSNM
EDCUEYI1
EDC$EUEY
...
The * covers any module name in the libraries displayed in the output of the
RLIST command. If a VOLSER is displayed with a library name, make sure that
the VOLSER is also correct.
_______________________________________________________________
4. Gather data about which programs need to be defined to program control by
using SLIP. The complete details are in z/OS Security Server RACF Diagnosis
Guide.
Example:
SLIP SET,IF,ACTION=TRACE,LPAMOD=(ICHRFR00,xxxxx),J=jobname,
TRDATA=(STD,REGS,zzzzzz),ML=100,END
_______________________________________________________________
5. Because this SLIP produces GTF records, you must start GTF. Be sure that you
specify PARM TRACE=SLIP. Then use IPCS to format the data with the
GTFTRACE IPCS command. You will see output similar to the following:
SLIP S+U ASCB.... 00FAF580 CPU..... 0001 JOBN.... INETD8
.....
GENERAL PURPOSE REGISTER VALUES
0-3..... 7FFEB744 7FFEB748 00000000 007F2978
4-7..... 0000000C 007F0738 00000004 007F24D8
8-11.... 00000000 7FFEB6A8 80E2323E 007F2978
12-15... 00000000 7FFEB6A8 80E23616 0000000C
...
_______________________________________________________________
6. Look for a SLIP S+U entry where R15 has a value of 0000000C. Then look at
that entry to identify the module and library that needs to be defined to
program control.
_______________________________________________________________
You know you are done when you have identified the module and library that
needs to be defined to program control.
CLASS NAME
----- ----
FACILITY BPX.DAEMON
...
USER ACCESS ACCESS COUNT
---- ------ ------ -----
...
DAEMONU UPDATE 000007
...
The output shows that daemon (DAEMONU in this example) has UPDATE
permission to BPX.DAEMON.
To check whether BPX.SERVER has been properly defined with READ or higher
permission, issue:
RLIST FACILITY BPX.SERVER AUTHUSER
CLASS NAME
----- ----
FACILITY BPX.SERVER
...
USER ACCESS ACCESS COUNT
---- ------ ------ -----
...
SERVERU UPDATE 000007
...
The output shows that BPX.SERVER has been properly defined with READ or
higher permission.
Example: Assuming that your server needs to process requests from user ID
ANONYMOS, issue:
RLIST SURROGAT BPX.SRV.ANONYMOS AUTHUSER
CLASS NAME
----- ----
SURROGAT BPX.SRV.ANONYMOS
...
USER ACCESS ACCESS COUNT
---- ------ ------ -----
...
SERVERU READ 000007
...
From the output, you can verify that the user ID that you are running your server
on (in this example, it is SERVERU) has READ or higher permission to the
BPX.SRV.userid SURROGAT class profile.
The z/OS UNIX system does not use the .rhosts file that many UNIX systems use.
It indicates the remote hosts and users who can access your system without
specifying a password or password phrase. Either a password or password phrase
is always required to rlogin to a z/OS UNIX system.
When you are done, you can issue the rlogin command to log in from a remote
UNIX system.
If there are problems on the server side, you might get the following messages:
v Resource temporarily unavailable. In this case, inetd will try initializing the
service every three minutes.
v service unavailable. This typically means that the port assignment is not correct.
Use the TSO NETSTAT INTERVAL command to verify that OMVS issued a
LISTEN for port 513. If 513 is not there, then inetd cannot find the port
assignment for 513 in /etc/services or hlq.ETC.SERVICES. You will need to
establish the connection between TCP/IP and z/OS UNIX by defining port 513
in /etc/services (if this file is to be used) or in the hlq.ETC.SERVICES data set,
where hlq is the prefix defined by DATASETPREFIX in the TCP/IP profile
("TCPIP" by default). If /etc/services is defined, it is used instead of
hlq.ETC.SERVICES.
List of subtasks
Subtasks Associated procedure (see . . .)
Setting up servers “Steps for setting up servers” on page 370
Defining servers to process users without “Steps for defining servers to process users
passwords without passwords or password phrases” on
page 372
This section is intended for the application developer who is designing and
developing servers that use z/OS UNIX. The section describes:
v Setting up the clients with the appropriate security; see “Setting up threads and
security” on page 366.
v Controlling access to resources; see “Checking authority to use protected
resources” on page 367.
v Using the RACF client ACEE support; see “Limitations of RACF client ACEE
support” on page 367.
The term unauthorized refers to applications that are not APF-authorized and do
not run in supervisor state or in a system storage protection key.
A server that uses the pthread_security_np() service can customize the RACF
identity of a thread. This server initiates a thread that processes the client's request.
If the server customizes the thread that is initiated for the client with the client's
RACF identity, any resource access decisions to RACF-protected resources are
made using the client's RACF identity and authorizations.
Depending on the trust you place in a server, you have the option of enforcing
whether to use both the server's RACF identity and the RACF identity of the client
in resource access control decisions on z/OS.
Potentially, for additional security checking, two audit records can be produced to
audit the client accessing the resource and the server accessing the resource on
behalf of the client.
If you choose to implement this additional security checking, you might need to
authorize the identity that is associated with the server to the resource profiles that
protect the resources accessed by the server on behalf of its clients.
If your server controls access to resources by checking and authenticating both the
server's RACF identity and client's RACF identity, treat servers you do not trust as
Without the appropriate authority set up at the installation, your server will not
run. Documentation that accompanies these services tells the security administrator
the kind of RACF definitions to set. For example, if the server uses the z/OS UNIX
convert_id_np() callable service, the server must have READ access or higher to
the IRR.RDCERUID FACILITY class profile.
Additionally, you can choose whether to extend the enhanced program security
protection to your UNIX daemons and servers that do not make use of RACF
execute-controlled programs. You would enable this function by defining the
profile BPX.MAINCHECK to RACF in the FACILITY class. Again, you would need
to ensure that the initial program executed by your daemon or server resides in an
MVS library and you would need to define it to RACF as a PROGRAM with the
MAIN attribute.
Kernel services that change a caller's z/OS user identity require the target z/OS
user identity to have an OMVS segment defined. If you want to maintain this extra
level of control at your installation, you will have to choose which daemons to
permit to the BPX.DAEMON FACILITY class. You will also have to choose the
users to whom you give the OMVS security profile segments. To accomplish this,
refer to “Steps for preparing the security program for daemons” on page 337.
“Steps for setting up enhanced program security” on page 343 explains how to set
up enhanced program security.
BPX.SERVER
If the BPX.SERVER (or BPX.DAEMON) FACILITY class is defined, your system has
z/OS UNIX-level security. In this case, the system is more secure than a traditional
UNIX system.
This level of security is for customers with very strict security requirements who
need superusers to maintain the file system but who do not want these users to
have the authority to change their identities to access existing MVS resources. To
accomplish this, take the additional steps described in “Defining servers to use
thread-level security.”
Example: To start DATASRVR, issue the following command from the MVS
console:
S DATASRVR
If the DATASRVR daemon is deactivated, you can also issue this command to
restart it.
<userid> is the MVS user ID of the user that the server will act as a surrogate of.
See “Defining servers to use thread-level security” on page 369 for the steps to
authorize a server to act as a surrogate for client user IDs.
Some servers have the requirement to process user requests that come from generic
user IDs representing anonymous users. In order for servers to process requests for
thread-level security without passwords or password phrases, follow the steps
shown below.
When you are done, you have defined a server to process users without passwords
or password phrases.
You can monitor performance, use of resources, and the use of system resources by
users and programs. Use the information that is collected to tune the system.
Tuning the system might improve performance and reduce resource consumption.
See z/OS MVS System Management Facilities (SMF) for the full contents of SMF
records provided for z/OS UNIX and for information about how to obtain the
records.
This section also provides information about file system lookups, which can use
significant resources on systems with hierarchical files.
You can monitor the file system activity of various classes of users by
postprocessing SMF type 30 records. This type of monitoring might be helpful in
forecasting DASD and other system resource requirements. If key jobs appear to be
doing many lookups, your installation might be able to reduce this processing
overload. To reduce the overload, reorganize the file system so that key files are
closer to the root of the file system.
Applications can reduce lookup activity by using the chdir command to change
the working directory and specifying only the file name when opening a file.
If a user runs the OMVS command with the SHAREAS option or sets the
environment variable _BPX_SHAREAS to YES, two or more processes might be
running in the same address space. In this case, SMF provides process
identification only for the first process in the address space. However, resource
consumption is accumulated for all processes that are running.
With an exec that follows a setuid(), the exec processing no longer creates a
substep. Instead, the initiator stops the old job (ending type 30 record). Then a new
job is started with the user ID that was established on the setuid().
The CPU time for each syscall is accumulated for the process and saved in field
SMF30OST. The number of requested z/OS UNIX syscalls is reported in field
SMF30OSC. Data for SMF30OST and SMF30OSC is only collected when parmlib
option SYSCALL_COUNTS is set to YES.
When SYSCALL_COUNTS is set to NO, the CPU time and the count of syscalls is
not accumulated. If you always run with SYSCALL_COUNTS=NO, both
SMF30OST and SMF30OSC are always reported with a value of zero.
HFS file systems are quiesced when they are backed up by the
hierarchical storage manager (HMS). Any non-zFS system can also
be quiesced by programs that call the BPX1QSE (quiesce) callable
service. Any file system might be quiesced during certain sysplex
operations such as when a file system is moved within a shared file
system configuration.
4 After the file system is unquiesced (that is, resumed).
5 After the file system is unmounted. Unmount records provide the
following I/O data summarized for the entire mountable file
system:
v Directory reads
v Read and write callable services requested
v Read and write EXCP counts
v Total bytes read and bytes written
Unmount records also provide the following I/O data summarized for the entire
mountable file system:
v Directory reads
v Read and write callable services requested
v Read and write EXCP counts
v Total bytes read and bytes written
While z/OS UNIX is being started or restarted, jobs are not processed. After the
start or restart process has been completed, jobs will begin processing again. An
operator message tells the system operator that jobs are waiting for z/OS UNIX to
become available again.
The system operator can also use the D OMVS,A=DUBW command to show which
jobs are in wait status. When the BPXO040I message is displayed in response, the
PID field shows a ''-" instead of a PID value and the STATE field is set to D,
indicating that the job is waiting to be dubbed. For example:
*10.52.00 STC00010 *BPXP022E ONE OR MORE JOBS ARE WAITING FOR UNIX SYSTEM
* SERVICES AVAILABILITY.
- 10.52.10 d omvs,a=dubw
00 10.52.12 BPXO040I 10.52.10 DISPLAY OMVS 266 C
OMVS 000E SHUTDOWN
USER JOBNAME ASID PID PPID STATE START CT_SECS
TC 0022 - 0 1D---- .001
Defining exits
The kernel defines the four process start and end exits at kernel initialization time
by means of the CSVDYNEX service.
Rule: When you are adding exit routines to an exit, certain exit attributes are
required.
For BPX_PREPROC_TERM:
v AMODE=31
v REENTRANT=REQ
v PERSIST=IPL
v ABENDNUM=10000
v ABENDSCONSEC=YES
v FASTPATH=NO,KEY=0
Example: To add the DUBEXIT exit routine to the BPX_PREPROC_INIT exit via a
PROGxx member:
EXIT ADD
EXITNAME(BPX_PREPROC_INIT)
MODNAME(DUBEXIT)
Example: To remove the DUBEXIT exit routine from the BPX_PREPROC_INIT exit:
SETPROG EXIT,DELETE,EXITNAME=BPX_PREPROC_INIT,MODNAME=DUBEXIT,FORCE=YES
List of subtasks
Subtasks Associated procedure
Caching UID and GID information in VLF “Steps for caching UID and GID information
in VLF” on page 385
Moving an executable in the file system into “Steps for moving an executable in the file
the LPA system into the LPA” on page 385
Setting process limits “Steps for setting process limits in z/OS
UNIX” on page 397
Changing process limits “Steps for changing the process limits for an
active process” on page 400
To reduce this overhead and improve performance, you can do one of the
following:
v Put the SCEELPA data set in the LPA list. Because the SCEERUN data set has
many modules that are not reentrant, you cannot place the entire data set in the
link pack area using the LPALIST member of SYS1.PARMLIB. However, you can
take advantage of a SCEELPA data set that contains a subset of the SCEERUN
modules – those that are reentrant, reside above the line, and are heavily used
by z/OS UNIX.
To improve performance, put the SCEERUN data set in the link list (LNKLSTxx
member). Then use the LPALSTxx member to place the SCEELPA data set in the
LPA list. You can also add additional modules to the LPA, using the dynamic
LPA capability (SET PROG=). For more information about LPALSTxx and
LNKLSTxx, see z/OS MVS Initialization and Tuning Reference.
Example: If space allows, load the entire load library into dynamic LPA.
SYS1.PARMLIB(PROGxx)
. . .
LPA ADD MASK(*) DSNAME(CBC.SCCNCMP)
. . .
LNKLST ADD NAME(LLZB) DSNAME(CEE.SCEERUN)
LNKLST ADD NAME(LLZB) DSNAME(CEE.SCEERUN2)
. . .
For more information about the PROGxx parmlib member, see z/OS MVS
Initialization and Tuning Reference.
Rule: Your primary Language Environment level must be the default level for the
release, and you must be using the default compiler. To verify your Language
Environment primary level, check that the library name (for example,
CEE.SCEERUN) appears first in the linklist concatenation in the LNKLSTxx
member of SYS1.PARMLIB.
Perform the following steps to cache UID and GID information in VLF.
1. Add these VLF options to the COFVLFxx member of SYS1.PARMLIB.
CLASS NAME(IRRUMAP)
EMAJ(UMAP)
CLASS NAME(IRRGMAP)
EMAJ(GMAP)
CLASS NAME(IRRSMAP)
EMAJ(SMAP)
_______________________________________________________________
2. Start VLF, specifying the updated member.
Example: In this example, the updated member is COFVLF33.
START VLF,SUB=MSTR,NN=33
_______________________________________________________________
When you are done, you have cached GID and UID information in VLF.
Because VLF is started after RACF and OMVS, you might get a message from
RACF during the IPL saying that running without VLF will cause slower
performance. If VLF is being started, you can ignore this message.
For information about updating the VLF parmlib member COFVLFxx, see
“COFVLFxx” on page 41.
Guideline: One thing to consider when you analyze which executables belong in
LPA is that modules with the sticky bit on are not eligible for local spawn(). If your
executable is normally invoked by spawn(), either by the shell or by another
application, turning on the sticky bit forces spawn() processing to execute the
program in a spawned child address space. In cases where local spawn() would be
used if the sticky bit were not on, this reduces the benefit of loading the executable
from the LPA.
Steps for moving an executable in the file system into the LPA
Before you begin: You need to know how long the executable or DLL name is.
Perform the following steps to move an executable in the file system into the LPA.
1. Select one of the following actions, depending on how long the executable or
DLL name is.
_______________________________________________________________
When you are done, you have moved an executable in the file system into the
LPA.
Because most executables in the file system today are program objects (new load
module format), they must be bound into PDSE libraries. So, SYSLMOD DD
should point to a PDSE (Data Set Name Type = Library).
Use an SMP/E USERMOD to link any IBM-supplied programs from a UNIX file
system into another library, such as when loading it into LPA. Doing so
automatically keeps the two copies of the module at the same level when service is
installed. It also provides a record of modifications to your systems. See SMP/E for
z/OS User's Guide for more information about SMP/E usermods.
Also, not all modules are eligible for LPA. Modules placed in LPA must be both
reentrant and executable. For more information about PROGxx, see z/OS MVS
Initialization and Tuning Reference.
Executables that have the ST_SHARELIB extended attribute turned on are called
system shared library programs. They are an optimal way of sharing large executables
across many address spaces in the system. These executables are shared on a
megabyte boundary to allow for the sharing of a single-page table (similar to LPA).
The storage used in the user address space to establish the mapping to the shared
library region is from the high end of private storage; in most cases, it does not
interfere with the virtual storage used by the application program.
Guideline: The amount of storage that is carved out of the high end of private
storage of each address space that loads a system shared library object is based on
the value of the SHRLIBRGNSIZE parameter in the BPXPRMxx parmlib member. If
this value is set too high, the storage set aside for the mapping of the shared
library region might interfere with the private storage requirements of each of
these address spaces. For this reason, the value specified for SHRLIBRGNSIZE
should be the minimum size that is required to contain all of the shared library
programs that are to be used on the system. Note that z/OS UNIX attempts to
See “Defining UNIX files as shared library programs” on page 341 for information
about setting the ST_SHARELIB extended attribute.
For limit MaxSharePages, the first warning message appears at 60% to warn the
installation when copy-on-write (COW) processing for fork() is about to be
disabled (which occurs at a usage of 62.5%). This message is replaced when the
next limit is reached or removed from the console when the limit falls under 60%.
Tip: If you have a few users who need a large number of processes, use the
PROCUSERMAX keyword in the OMVS segment to set the process limit for these
users.
For example, assume that your system supports 600 TSO/E users and has enough
capacity for 20 additional users. Rather than adding more TSO/E work, you want
See the BPXPRMxx topic in z/OS MVS Initialization and Tuning Reference for a
complete description of each BPXPRMxx statement. For more detail on ESQA and
other storage requirements for MVS, see “Evaluating virtual memory needs” on
page 17.
Resulting nice() values can range from 0 to 39, with 0 being the highest priority
and 39 being the lowest. With all three services, appropriate privileges are required
to increase the priority of one or more processes.
Priority values (-20 to 19) and nice() values (0 to 39) are mapped one-to-one such
that nice() values are always 20 higher than priority values. All processes start with
a priority value of 0 and a nice() value of 20.
priority value nice value
(setpriority and chpriority) (nice)
---------------------------- ----------
-20 A 0
. | higher priority .
. | .
. | .
0 -- start here 20
. | .
. | .
. | lower priority .
+19 V 39
If your installation plans to support the cron daemon, setpriority() support might
be needed. cron allows interactive users to schedule work to run in the
background at various times in the future. Normally, this background work should
run at a lower priority than other interactive work. By default, cron uses
setpriority() to lower the priority of batch work it starts. The return code is not
checked, so if the setpriority() call fails, the batch work runs at the same priority as
other forked children. This could become a problem if background work started by
cron begins to affect the responsiveness of foreground interactive work. In this
Installations that are running in goal mode to exploit MVS workload manager can
enable nice(), setpriority(), and chpriority() support using the PRIORITYGOAL
statement in the BPXPRMxx parmlib member. They must specify a service class for
each possible priority value (-20 to 19). If fewer than 40 service classes are
specified, the last service class is propagated to all remaining priority values. The
same service class can be specified several times. All service classes specified must
appear in your current service policy.
System-wide limits, which are limits that apply to every process, are set in the
BPXPRMxx member of SYS1.PARMLIB. You can display limits defined in
BPXPRMxx by using the operator commands D OMVS,OPTIONS and D
OMVS,LIMITS.
v Limits associated with an MVS application derive their value from MVS. The
soft and hard limit might be different when an MVS unit of work is dubbed.
v Limits for processes initiated by z/OS UNIX that cause an identity change, such
as telnet, rlogin or a daemon process using setuid or exec, are created with the
same hard and soft limits.
Process limits are limits that apply to individual processes. You can set some
process limits by using the RACF user profile segment. Some process limits, such
as the disk space, allow for a file or the size of a dump are set in BPXPRMxx.
v You can control the amount of resources used by specified z/OS UNIX users by
setting individual limits for these users, as described in “Setting limits for users”
on page 68. These limits apply to all users except for those with a UID of 0.
Normally, when a process is initially dubbed, the soft limit is inherited from
MVS and the hard limit is set in the BPXPRMxx parmlib member.
For more information about UID(0) superuser authority, see “Obtaining security
information about users” on page 65. Users with UID(0) will still have a limit
but they can change it while other users can only change their soft limits.
v You can set limits on a process for resources such virtual storage space after you
know which resources the application will need, and how the operating system
affects application limits. For information about the types of processes and how
they are created, see “Setting process limits in z/OS UNIX” on page 395.
v You can use the RACF ADDUSER and ALTUSER commands to specify the
ASSIZEMAX limit on a per-user basis. See the topic on limiting the use of
Before setting process limits as described in “Setting process limits in z/OS UNIX”
on page 395, you need to understand how z/OS UNIX applications interact with
the operating system and take into consideration all services that affect that
resource. Then you can decide what soft and hard limits the application needs. For
an explanation soft and hard limits, see “What are hard limits?” and “What are
soft limits?.”
z/OS UNIX mechanisms that affect limits are setrlimit(), inheritance from the
parent and spawn inheritance structure (BPXYINHE), identity change, and
dubbing. Any process can raise the soft limits to the hard limits. A superuser can
raise both the hard and soft limits. A fork/spawn child inherits the same limits
unless the parent changed the limits in the spawn inheritance structure or there is
an identity change. The SETOMVS operator command can also affect these
settings.
MVS limits are the soft limits provided to z/OS UNIX processes when z/OS UNIX
services are invoked using TSO login, STC, or JCL. At the first request for a kernel
service, the system dubs the program as a z/OS UNIX process. When a traditional
MVS unit of work is first dubbed, the soft limits are normally obtained from MVS.
The hard limit is normally obtained from BPXPRMxx if it is higher than the soft
limit.
New processes that are created by a dubbed user receive the same soft and hard
limits as the parent process if the installation has not changed the process limits
and an identity change has not occurred.
Spawn() can also cause an identity change. A spawned child that was created with
a different identity than the parent using InheUserid or _BPX_USERID sets the
hard and soft limits to the z/OS UNIX values for the new identity. A forked child
with no identity change inherits the settings of the parent.
Resources values that processes receive when they are dubbed a process use the
RACF profile to determine the hard limit if it is higher than the soft (current) limit.
It is also used when processes are initiated by a daemon process using an exec
after setuid(). In this case, both the RLIMIT_AS hard and soft limits are set to the
address-space-size value.
The only time MEMLIMIT or ASSIZE from the OMVS segment is used to define
these limits for inheritance is with a spawn with identity change or an exec after
setuid. For more details, see “What happens when an identity change occurs?.”
Setuid() alone or child processes created by either fork or spawn after a setuid
retains the limits behavior of the previous identity.
When the same limit is not defined in the OMVS segment, the system will honor
IEFUSI even if the parent requests a change using the inheritance structure (Inhe).
After a limit has been defined for a parent identity by the security administrator,
that limit is trusted before other system components only if it is higher than the
MVS limits. When a limit is defined in the OMVS segment:
v The system ignores requests by IEFUSI to change the limit in the OMVS segment
if the limit in the OMVS segment is higher than the limit set in IEFUSI. The
OMVS segment is in control of ASSIZE and MEMLIMIT. If the OMVS segment
value is lower than IEFUSI, then IEFUSI sets hard and soft limits for both
MEMLIMIT and ASSIZE. IEFUSI is in control of ASSIZE and MEMLIMIT.
v If the OMVS segment is in control of ASSIZE and MEMLIMIT for the parent, the
system also ignores requests by IEFUSI to change limits for child processes that
were created by that identity. In this case, the child is created with the parent's
current limits. If IEFUSI is in control of ASSIZE and MEMLIMIT for the parent,
the child's MEMLIMIT and ASSIZE will be set by IEFUSI. In both cases, if
IEFUSI is active in the system and is attempting to control limits for an OMVS
address space, the inheritance structure (Inhe) is ignored for MEMLIMIT and
ASSIZE.
For more information about APIs that affect process limits, see z/OS UNIX System
Services Programming: Assembler Callable Services Reference.
Process-level limits are defined in the BPXPRMxx parmlib member. Table 39 lists
the BPXPRMxx statements that you can use to set process-level limits.
Table 39. Process-level limits that can be defined in BPXPRMxx
Process-level limits
MAXASSIZE MAXFILEPROC MAXPROCSYS
MAXCORESIZE MAXPIPEUSER MAXQUEUEDSIGS
MAXCPUTIME MAXPROCUSER MAXTHREADS
Table 40 lists the hard limits that can be defined in the RACF user profile.
Table 40. Hard limits that can be defined in the RACF user profile. This table lists the hard
limits that can be defined in the RACF user profile.
Hard limit Description
ASSIZEMAX The maximum address space size (RLIMIT_AS) for the z/OS
UNIX user.
CPUTIMEMAX The maximum CPU time (RLIMIT_CPU) for the z/OS UNIX
user.
You also need to have planned the system-wide limits that will affect all z/OS
UNIX users. For more information, see “Defining system limits” on page 29.
When you are done, you have set process limits in z/OS UNIX.
Note: Limits defined in the RACF user profile or modified by the IEFUSI
installation exit override limits defined by z/OS UNIX processes.
Because z/OS UNIX limits are normally inherited from MVS, the IEFUSI exit has
already had a chance to modify the region size and MEMLIMIT for TSO, batch,
and started task. The exit does not have to be called again during OMVS
subsystem processing. z/OS UNIX processes such as telnet and rlogin do not have
a chance to change the limits, so IEFUSI is not needed to control those limits.
Rule: If you install your own IEFUSI exit, update your SMFPRMxx parmlib
member to exclude OMVS work and use z/OS UNIX to control the process limit.
Specify:
SUBSYS(OMVS,NOEXITS)
Started subtasks such as OMVS, BPXOINIT, and colony address spaces fall under
SUBSYS STC. These address spaces might be subject to IEFUSI limitations if
IEFUSI exits are allowed for SUBSYS STC. IBM strongly recommends that you
always set REGION=0 and MEMLIMIT=NOLIMIT for OMVS, BPXOINIT, and
colony address spaces.
Message IEE968I is issued when the SET SMF= command is processed because
z/OS UNIX does not support the SSI Notify function. You can ignore this message.
After a hard limit is defined in the user RACF profile, the parents' hard and soft
values for that limit will override IEFUSI, MVS, and z/OS UNIX changes in any
child processes or executed programs. An executed or spawned process after an
identity change always set hard and soft limits to the OMVS limit of the new
398 z/OS V2R1.0 UNIX System Services Planning
identity. Other processes exhibit this behavior only if the value in the user RACF
profile was higher than the value provided by MVS when the process was dubbed.
For more information about the IEFUSI installation exit, see “Using the IEFUSI step
initiation exit” on page 424 and z/OS MVS Installation Exits.
You can display the RACF limit using the following RACF command:
LU user NORACF OMVS
For more information about how to obtain security information for users, see
“Obtaining security information about users” on page 65. You can obtain the
information if the security administrator has set up field-level access for users for
the OMVS segment of the RACF user profile as described in “Setting up field-level
access for the OMVS segment of a user profile” on page 66.
Example: Issue:
ps
Example: Issue:
ulimit -a
MAXFILEPROC 6 7 256
MAXFILESIZE --- --- NOLIMIT
MAXPROCUSER 3 4 NOLIMIT
MAXQUEUEDSIGS 0 1 1000
MAXTHREADS 0 0 200
MAXTHREAD 0 0 1000
IPCSHMNSEGS 0 0 500
MAXCORESIZE --- --- 4194304
MAXMEMLIMIT 0 0 16383P
If you do not specify the PID, the display will show the system-wide limits
To change the MEMLIMIT of a specific process (or to be more exact, to change the
MEMLIMIT value of the ASID that the process is running in), use the SETOMVS
command.
Perform the following steps to change the process limits for an active process.
1. Display information about the current parmlib limits for a process with the ID
nnn.
Example: Issue:
d omvs,limits,pid=nnn
Result: You will get a display similar to the following:
MAXFILEPROC 6 7 256
MAXFILESIZE --- --- NOLIMIT
MAXPROCUSER 3 4 NOLIMIT
MAXQUEUEDSIGS 0 1 1000
MAXTHREADS 0 0 200
MAXTHREADTASKS 0 0 1000
IPCSHMNSEGS 0 0 500
MAXCORESIZE --- --- 4194304
MAXMEMLIMIT 0 0 16383P
_______________________________________________________________
2. Change the high memory limit, MEMLIMIT, in the address space containing
PID nnn.
Example: Issue:
SETOMVS PID=nnn, memlimit=16M
Result: You will get a message that the SETOMVS command was successful.
_______________________________________________________________
3. Check that the limit has been changed.
Example: Issue:
D OMVS,LIMITS,PID=nnn
Result: You will see a display similar to the following:
BPXO051I 16.44.40 DISPLAY OMVS 283 C
OMVS 000D ACTIVE OMVS=(6F)
USER JOBNAME ASID PID PPID STATE START CT_SECS
MEGA MEGA1 0020 0050331651 33554434 1CI--- 16.31.46 .051
LATCHWAITPID= 0 CMD=sh -L
PROCESS LIMITS: LIMMSG=NONE
CURRENT HIGHWATER PROCESS
USAGE USAGE LIMIT
MAXFILEPROC 6 7 256
MAXFILESIZE --- --- NOLIMIT
MAXPROCUSER 3 4 NOLIMIT
MAXQUEUEDSIGS 0 1 1000
MAXTHREADS 0 0 200
MAXTHREADTASKS 0 0 1000
IPCSHMNSEGS 0 0 500
MAXCORESIZE --- --- 4194304
MAXMEMLIMIT 0 0 16M *
_______________________________________________________________
When you are done, you have changed the process limit.
Reference information
For more information, see the following:
v “Defining z/OS UNIX users to RACF” on page 59
v “Storing user-specific information in OMVS segments” on page 62
v “Setting limits for users” on page 68
v “Steps for obtaining security information about users” on page 65
Guideline: Because spawn() uses system resources that require the user's private
storage, excessive use might lead to storage shortages in the user's address space.
Another consideration is the placement of files in the file system hierarchy. Files
deep in the hierarchy require several lookups each time they are opened.
Normally, a TSO/E transaction starts when a user enters a command and ends
when the command is completed. After the TSO/E command completes, a TGET
WAIT is issued, indicating that the current transaction has completed and a new
transaction will start when there is more work to be done.
In effect, TSO/E users in the shell environment can experience response times of
up to 20 seconds, often with little service consumption. Response times under 20
seconds occur only when users immediately enter the next command.
When setting up for sockets, your two choices are INET and CINET (Common
INET). These are network sockets, and this topic describes those sockets in detail.
Local network sockets (AF_UNIX), which do not have network connectivity, are
also available, but are not discussed. INET and CINET are file systems that are in
the AF_INET and AF_INET6 family of sockets. This topic helps you decide which
file system is best for you to use and describes how to set it up. It contains
examples that are based on an assumed sample configuration. You will need to
modify the examples based on the requirements for your installation.
You can use CINET configured with just one stack, but this configuration will not
run as efficiently as INET. “Choosing between INET or CINET” on page 407
provides background information that you may need.
List of subtasks
Subtask Associated procedure
Customizing BPXPRMxx for CINET systems “Steps for customizing BPXPRMxx for
CINET” on page 411
socket
stack
IP network
socket
stack stack
IP network IP network
For the example in Figure 47, you would have the two SUBFILESYSTYPE
statements to define the two stacks shown in the illustration.
Both this topic and z/OS Communications Server: IP Configuration Guide contain
information about running one TCP/IP stack and multiple TCP/IP stacks
To use the single transport provider support, see the following example of the
statements that should be in the BPXPRMxx member of SYS1.PARMLIB.
FILESYSTYPE TYPE(INET)
ENTRYPOINT(EZBPFINI)
NETWORK DOMAINNAME(AF_INET)
DOMAINNUMBER(2)
MAXSOCKETS(64000)
TYPE(INET)
Tip: To use the single transport provider support, change the MAXSOCKETS value
to 64000.
IBM Communications Server for z/OS supports the AF_INET6 address family,
which allows socket applications to use the IPv6 APIs. See z/OS Communications
Server: IPv6 Network and Application Design Guide for more information about IPv6
APIs.
If you want to use the single transport provider support with both AF_INET and
AF_INET6 address families, the following excerpt shows an example of the
statements that should be in the BPXPRMxx member.
FILESYSTYPE TYPE(INET)
ENTRYPOINT(EZBPFINI)
NETWORK DOMAINNAME(AF_INET)
DOMAINNUMBER(2)
MAXSOCKETS(64000)
TYPE(INET)
NETWORK DOMAINNAME(AF_INET6)
DOMAINNUMBER(19)
MAXSOCKETS(64000)
TYPE(INET)
Tip: You can activate AF_INET6 without recycling z/OS UNIX by adding this
NETWORK statement to a running configuration with the SETOMVS RESET=()
operator command. Specify a BPXPRMxx member that contains just this one
statement. However, the TCP/IP stack would have to be stopped and restarted in
order to pick up the new definition. You can specify a separate MAXSOCKETS
value for AF_INET6 or default to the value specified for AF_INET. In either case,
each family has its own separate maximum.
OEAIX5 OEAIX10
OEAIX7 OEAIX6
OEAIX8 OEAIX9
Figure 48. Multiple transport provider support with two z/OS UNIX systems
When the CINET function processes a socket request that requires it to select only
a particular transport based on an input IP address from a user, CINET uses its
copy of each transport's IP configuration to select the correct transport to process
the user's request. Copies of the IP configurations are maintained by CINET
internally and are only used for prerouting a socket call to the correct transport.
The transport that is selected performs all of the official transport functions, such
as IP routing, once the socket request reaches the transport from CINET.
For example, IBM's TCP/IP may refresh its routing tables as part of the OBEYFILE
command. Message BPXF207I is issued to the hardcopy log whenever CINET
You can display the network routing information for all the active transport
providers being used by CINET prerouter by using the CINET operand of the
DISPLAY OMVS operator command. For example:
D OMVS,CINET=ALL
Transport providers
The transport providers are specified with the SUBFILESYSTYPE statements in
BPXPRMxx or specified with the SETOMVS command. The default transport
provider is one of the following:
v The transport provider specified as the default on the SUBFILESYSTYPE
statement in BPXPRMxx.
v If DEFAULT was not specified, the transport provider from the first
SUBFILESYSTYPE statement will become the default transport provider while it
is active.
v If DEFAULT was not specified, the first SUBFILESYSTYPE transport provider
specified is not active, and no other stacks are active, then the first transport
provider activated becomes the default. The selection of default transport
providers can become unpredictable if stacks are stopped and restarted while the
specified default transport provider and the first SUBFILESYSTYPE transport
provider are inactive.
When you are done, you have customized BPXPRMxx for CINET sockets
processing.
Note:
1. If you want to use IPv6, add the following NETWORK statement:
NETWORK TYPE(CINET) DOMAINNAME(AF_INET6) DOMAINNUMBER(19)
After the default transport provider is assigned, the following actions are taken on
sockets calls unless transport affinity has been established. (For more information,
see “Transport providers” on page 410)
v getsockname(): If there is a single transport provider that has been connected or
bound to, that transport provider is used. Otherwise, the default transport
provider is used.
v gethostname() or gethostid(): The request is always to be routed to the default
transport provider.
v getsockopt() or setsockopt(): If there is a single transport provider that has been
connected or bound to, that transport provider is used. Otherwise, the default
transport provider is used.
v Route selection: When an application program makes a request that could be
sent to any of a number of transport providers (for example, a datagram
sendto() request, connect() request or bind2addrsel() request), the CINET
prerouter examines its internal routing table information and decides which
transport provider to send the request to. If matching host routes or network
routes are found, then following criteria is applied to select the best route in
order:
1. If the route is an implicit and NON-DVIPA route, then it is selected to route
the request regardless of the interface state (active or inactive).
2. If the route is an implicit and DVIPA route, then it is selected to route the
request only if the interface is active.
3. If the route is a non-implicit route (DVIPA or NON-DVIPA), then it is
selected to route the request only if the interface is active.
4. If there are multiple matching non implicit routes, then the route with better
route type and routing metric is selected to route the request.
5. If no matching host routes are found, the CINET prerouter looks for most
specific matching network route.
6. If there are multiple specific matching network routes, then the route with
better route type and routing metric is selected to route the request.
7. If there are no matching host or network routes, then active best default
route is selected to route the request.
Note:
1. If there is more than one transport provider that maintains a route to the
destination with the same route type and routing metrics, then the transport
provider specified as the default is chosen.
2. When looking for default routes, if more than one transport provider
maintains a default route, then the transport provider with the better route
type and routing metric is chosen. If there are no active default routes, then
the default transport provider is chosen to route the request.
.
Port reservation information for port 0, INADDR_ANY binds is required for the
AF_INET domain with a CINET configuration. Specify this information on the
INADDRANYPORT and INADDRANYCOUNT parameters on the NETWORK
statement for AF_INET in BPXPRMxx. This also includes the port 0,
IN6ADDR_ANY binds for AF_INET6.
If you are running a CINET configuration and you specify the INADDRANYPORT
and INADDRANYCOUNT parameters, you must specify the same values to each
transport provider that is specified on the SUBFILESYSTYPE statement.
Refer to the documentation for that transport provider to determine how the port
reservation information is specified. For IBM's z/OS Communications Services, use
the PORTRANGE profile statement.
If the transport provider does not support the port reservation requirement, you
must still specify INADDRANYPORT and INADDRANYCOUNT to process port 0,
INADDR_ANY binds. In this case, you should specify a high port number for
INADDRANYPORT (for example, 4000) to improve the probability that the port
will be available on the transport provider. If the port is not available on any of the
transport providers connected to z/OS UNIX, a port 0, INADDR_ANY bind will
fail with an ERRNO of EADDRINUSE.
Sockets created from accept() are associated with just the one transport on which
the connection arrived.
The desired transport is specified with the PARM= keyword and must be 1 to 8
uppercase characters. This is the same value that would be specified for
_BPXK_SETIBMOPT_TRANSPORT. If PARM= is not supplied, or is blank, then
the address space's transport affinity will be reset to no transport selected. This
can also be specified as PARM=&VAR, where VAR is a PROC keyword that is
passed in from the Start command or is a static system symbol.
BPXTCAFF sets transport affinity for an address space for the duration of that
address space or job. This affinity persists over job steps within the job, persists
over UNIX process termination and re-dubbing, and applies to all UNIX
processes running within that address space. BPXTCAFF is intended for use
with non-C or POSIX(OFF) programs where the
To set transport affinity for a TSO address space, you can also invoke
BPXTCAFF from TSO/E by issuing:
TSO CALL ’SYS1.LINKLIB(BPXTCAFF)’ ’TPNAME’
To set transport affinity for an address space using a REXX procedure, you can
invoke BPXTCAFF from REXX by issuing:
/* REXX */
Address Linkmvs BPXTCAFF ’TPNAME’
Exit rc
BPXTCAFF makes a call to BPX1PCT(PC#SetIbmOptCmd) with an Arg value of
1 specified to achieve transport affinity for a persistent address space. For more
details, see BPX1PCT in z/OS UNIX System Services Programming: Assembler
Callable Services Reference.
Restriction: A BPXTCAFF job step must not be used with z/OS UNIX address
spaces that are set up for the NFS or DFS clients. The z/OS UNIX services that
are needed by BPXTCAFF are not available when the colony is started from the
BPXPRMxx member. However, z/OS UNIX cannot finish initialization until the
colonies are initialized, so the system will hang. The technique described in
Step 5 sets up affinity for NFS or DFS clients.
5. Use the PARM= parameter of the z/OS UNIX colony address space. To set
transport affinity for the NFS Client or DFS Client, use the PARM= keyword of
the EXEC statement that starts BPXVCLNY in the colony address space
procedure as follows:
//MVSCLNT EXEC PGM=BPXVCLNY,TIME=1440,PARM=TP(TPNAME)
where the PARM=value is the following:
v All in uppercase
v Starts with "TP("
v TPNAME is the left-aligned, 1-to-8-character name of the desired transport
If PARM= is specified and does not conform to these rules, the colony is
terminated by an EC6 abend with a reason code of 11BE8039. When CINET is
configured on the system and the specified transport is not configured under
CINET, the colony is terminated by an EC6 abend with a reason code of
11BE803A. In either case, the colony can be restarted after the procedure is
corrected by replying to the operator prompt that is issued.
Tip: The _BPXK_SETIBMOPT_TRANSPORT environment variable does not
work in a z/OS UNIX colony address space because it does not start under
Language Environment.
6. Specify a transport name when a socket is created.
Individual sockets can be created with transport affinity by passing the
transport name directly to the BPX1SOC callable service. This specific socket
affinity will override any process-level affinity that has been established. This
This topic explains the format of the resolver data sets and files when they are
stored in the z/OS UNIX file system.
Host information
Host information not obtained from a domain name server can be obtained from
local host tables. If you want to know what the options are for creating local host
tables and how the tables are searched, refer to z/OS Communications Server: IP
Configuration Guide.
Service information
Figure 49 shows an extract of the services file. You can copy the sample service
information from /usr/lpp/tcpip/samples/services into your tcpip.ETC.SERVICES
data set or /etc/services file. See z/OS Communications Server: IP Configuration
Reference for more information about the syntax rules for /etc/services and
ETC.SERVICES.
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp
chargen 19/tcp
Protocol information
You can copy the sample protocol information from /usr/lpp/tcpip/samples/
protocol into your tcpip.ETC.PROTO data set or /etc/protocol file.
Resolver information
The TCPIP.DATA data set is the only one of the TCP/IP data sets for which a
unique copy is needed for each transport provider. This is because the
TCPIPJOBNAME statement identifies the TCP/IP address space and the
HOSTNAME statement identifies the host name of the TCP/IP address space.
The system processes this information during the initial request for service. It
accepts either format for the information supplied regardless of the source selected.
When they are mixed, only the last domain or DOMAINORIGIN data is used and
up to 16 name server's addresses are used for initialization. However, if you set up
/etc/resolv.conf to supply resolver information, you must specify the
DATASETPREFIX information in /etc/resolv.conf unless you have also set up
/etc/services, /etc/protocol, and /etc/hosts files.
Any mix of MVS data sets and z/OS UNIX files can be used. For example, you
could use the TCPIP.DATA information from SYS1.TCPPARMS, the service and
protocol information from ETC.SERVICE and ETC.PROTO and use the /etc
directory in the z/OS UNIX file system to record hosts names and addresses of the
z/OS UNIX hosts file.
List of subtasks
Subtasks Associated procedure
Modifying the accounting information for the “Steps for modifying accounting
OMVS and BPXOINIT address spaces information” on page 420
Checking job names and accounting “Steps for activating the IEFUJI exit for
information using IEFUJI OMVS work” on page 422
To weigh central processor time or I/O or both, use the fields in SMF type 30
records to isolate the resources used. Record type 30 also includes the user
identification fields:
v UID
v GID
v Process ID (PID)
v Parent process ID (PPID)
v Process group ID (PGID)
v Session ID (SID)
For detailed file system and file open and close activity data, look in SMF record
type 92.
When you perform the accounting, one other major factor to be aware of is that
the exec() family of functions typically causes step termination and a new substep
is started. The new substep still has the same step number, but the substep number
is incremented. Therefore, accounting applications must look for substep_number
in addition to job name, job_start_time, and step_number.
The kernel creates other address spaces, such as BPXOINIT, and forks other
programs—for example, /etc/init. The kernel and all its child processes use the
same account number. BPXOINIT is the source of the account number propagated
to the /etc/rc and daemons.
The IEFUAV exit is only passed control when the IEFUAV exit is activated for
subsystem OMVS (or all subsystems). This environment typically describes the
environment in which a daemon determines the identity of a client, sets up the
security environment, and passes the routine control.
In the case of a fork(), spawn(), or exec() where the accounting data is provided by
a superuser, the IEFUAV exit is not passed control.
Perform the following steps to modify account information by putting the IEFJOBS
DD statement in the MSTJCLxx member.
1. Put an IEFJOBS DD statement in the MSTJCLxx member. The statement must
point to a data set called SYS1.STCJOBS, which is an FB 80 data set. For
example:
//MSTJCL01 JOB MSGLEVEL=(1,1),TIME=1440
// EXEC PGM=IEEMB860,DPRTY=(15,15)
//STCINRDR DD SYSOUT=(A,INTRDR)
//TSOINRDR DD SYSOUT=(A,INTRDR)
//IEFPDSI DD DSN=SYS1.PROCLIB,DISP=SHR
//IEFJOBS DD DSN=SYS1.STCJOBS,DISP=SHR
//IEFPARM DD DSN=SYS1.PARMLIB,DISP=SHR
//SYSUADS DD DSN=SYS1.UADS,DISP=SHR
//SYSLBC DD DSN=SYS1.BRODCAST,DISP=SHR
_______________________________________________________________
2. Create a data member in the SYS1.STCJOBS data set that has the same name as
the started procedure.
When you are done, you have modified the accounting information in both OMVS
and BPXOINIT address spaces.
If the _BPX_ACCT_DATA environment variable and the account data was not
specified in the spawn inheritance structure for _spawn only, then the account data
passed to the exit is the same as the account data of the parent of the
forked/spawned address space.
Checking job names and accounting information using the IEFUJI exit
Use the IEFUJI installation exit to check job names, accounting information, or
both. You will have to customize your system setup in order to activate the IEFUJI
installation exit for z/OS UNIX services. (The OMVS, BPXOINIT and BPXAS
address spaces have a subsystem type of STC. Other address spaces that are
started by BPXOINIT have a subsystem type of OMVS.)
See z/OS MVS Installation Exits for more information about the IEFUJI installation
exit.
If the IEFUJI exit sets a return code indication that the user should not be able to
continue, the initiator will try again. An attempt is made to fork the address space
again and if the IEFUJI exit sets the same return code, then reason code 0BFC0434
is set and the address space is terminated.
v 0BFC0434 (issued from module BPXPRJSR)
v Reason code 0434 - JrJsrint (Internal error from BPXPRJSR)
If users are running in the shell, they might see the following message:
FSUM7726 cannot fork - reason code 0bfc0434
The account data that is on the job card for the BPXAS procedure is propagated
from the BPXOINIT job. If a BPXOINIT job is defined in SYS1.STCJOBS and the
SYS1.STCJOBS data set is set up so that it is used during IPL, then an installation
can define account data there that will be propagated to the BPXAS procedure.
The BPXOINIT job is started and the account data is saved in SWA blocks in
internal text format. Then, later, when the first BPXAS procedure is started, z/OS
UNIX reads the account data that was saved in the SWA blocks and adds the
account data to the default job card that it builds. The default job card looks like
the following:
//BPXYOEJS JOB(acct-data),MSGLEVEL=(0,0),REGION=54M,TIME=60
z/OS UNIX takes the account data and reconstructs the internal text to a format
that can be placed on a JCL statement. The account data is reconstructed by
placing quotes around each account data field and then parentheses around the
account data. As a result, the account data might look different than it did when it
was defined on the BPXOINIT job. For example, if BPXOINIT had the account data
defined as (AA,BB), then when z/OS UNIX adds it to the BPXYOEJS job card, the
account data is reconstructed as (’AA’,’BB’).
If the IEFUSI exit does not change any of the region limit values, then the region
value is propagated from parent to child, overriding the 54M value. If the region
limit value is changed, then the region value is not propagated. The value set by
the IEFUSI exit is used instead.
If the IEFUSI exit sets a return code indication that the user should not be able to
continue, the initiator will try again. An attempt is made to fork the address space
again and if the IEFUSI exit sets the same return code, then reason code 0BFC0434
is set and the address space is terminated.
v 0BFC0434 — issued from module BPXPRJSR
v Reason code 0434 - JrJsrint - Internal error from BPXPRJSR
If users are running in the shell, they might see the following message:
Restriction: JES attributes for a job with a job name assigned with
_BPX_JOBNAME cannot be displayed by job display commands under JES2 or
JES3.
For more information about IBM Health Checker for z/OS, see IBM Health Checker
for z/OS: User's Guide.
Note:
1. The scope of _BPXK_DISABLE_SHLIB scope is process-wide.
2. In a multiple process address space each process must disable system
shared libraries to prevent SHRLIBREGSIZE bytes from being allocated
from the caller's region. All processes in the same address space share
the same region.
3. The _BPXK_DISABLE_SHLIB setting is propagated on both fork and
spawn from the parent to the child process.
4. The z/OS UNIX spawn (BPX1SPN), exec (BPX1EXC and BPX1ATX) and
oe_env_np (BPX1ENV) services have support for
_BPXK_DISABLE_SHLIB.
The timeout value used is the SMF settings for JWT/TWT/SWT. The
_BPXK_TIMEOUT variable is ignored when PWT is set to SMF. It is
honored when BPXPRMxx PWT is set to ENV or SMFENV.
_BPXK_UNICODE_TECHNIQUE
Specifies the Unicode Services conversion technique to use for the I/O
translation operation. Setting or unsetting this variable has no effect after
translation for a file starts. If _BPXK_UNICODE_TECHNIQUE is not
specified, the Unicode Services default applies. Any eight of the following
characters techniques can be specified. Do not specify spaces or commas.
For more information, see z/OS Unicode Services User's Guide and Reference.
R Roundtrip
E Enforced subset
C Customized subset
L Language Environment behavior
M Modified for special use
0-9 User-defined conversions
_BPXK_UNICODE_MAL
Specifies the Unicode Services substitution action to take for the translation
operation when a source character is malformed. Setting or unsetting this
variable has no effect after translation for a file begins.
_BPXK_UNICODE_SUB must be YES for this option to apply. For more
information, see z/OS Unicode Services User's Guide and Reference.
The FOMTLINP module is the interface used by rlogin and telnet in z/OS UNIX.
In UNIX programs, rlogin calls the login command; for the z/OS shell, rlogin calls
this module. For z/OS UNIX, rlogin checks passwords and password phrases.
**********************************************************************
*
* Function:
* --------
*
* This routine is attach_exec()ed to or spawn()ed to from a
* non-superuser caller (unless UID 0 is logging on).
*
* It receives an open master and slave pseudo-TTY pair as input.
* It sets up file descriptors 0/1/2 as usual, sets up several
* environment variables, fork/exec()s /bin/fomtlinc to do the utmpx
* recording, and than exec()s to the shell.
*
* Parameters:
* ----------
*
* 1:IN argc -- usual main() parameter
*
* = 17 -- normal version
*
*
*
* 2:IN argv -- usual main() parameter
*
* note: all arguments are the usual NULL-terminated C/370
* strings
*
* max
* len argument description
* --- -------- -------------------------------------------
*
* 15 argv[0] = program name
*
* "fomtlinp"
*
*
* 16 argv[1] = magic number string (to prevent accidental
* invocation from shell command line)
*
* "*4OurhrEa)R0,H/h" (required value)
* 47 argv[2] = message catalog name for catopen()
*
* Empty string means use the default message
* catalog ="fomcmcat.cat".
*
* catopen() will supply the full path
* name by looking at any inherited settings
**********************************************************************
*
* Function:
* --------
*
* This function uses the utmpx
* functions to locate and remove the caller’s USERID from the utmpx
* file. This routine is a SETUID program, so that it can write to the
* utmpx file.
*
* note: This routine removes the caller’s session from the utmpx file
* whenever it is called. If this routine is called erroneously
* (when the user is not really logging off) it will go ahead and
* remove the session from the utmpx file. This will destroy the
* integrity of the utmpx file.
* Parameters:
* ----------
*
* 1:IN argc -- usual main() parameters
*
* 2:IN argv -- usual main() parameters
*
* argv[0] = program name ("fomtlinc")
*
* argv[1] = exit status (as a %d-coded integer value)
*
* argv[2] = (not used)
*
* argv[3] = (not used)
*
* argv[4] = debug level (as a %d-coded integer = 0 to 5)
*
* others -- test only arguments follow
*
If you experience difficulty with the accessibility of any z/OS information, please
send a detailed message to [email protected] or to the following mailing
address:
IBM Corporation
Attention: MHVRCFS Reader Comments
Department H6MA, Building 707
2455 South Road
Poughkeepsie, NY 12601-5400
USA
Accessibility features
Accessibility features help a user who has a physical disability, such as restricted
mobility or limited vision, to use software products successfully. The major
accessibility features in z/OS enable users to:
v Use assistive technologies such as screen readers and screen magnifier software
v Operate specific or equivalent features using only the keyboard
v Customize display attributes such as color, contrast, and font size.
Each line starts with a dotted decimal number; for example, 3 or 3.1 or 3.1.1. To
hear these numbers correctly, make sure that your screen reader is set to read out
punctuation. All the syntax elements that have the same dotted decimal number
(for example, all the syntax elements that have the number 3.1) are mutually
The dotted decimal numbering level denotes the level of nesting. For example, if a
syntax element with dotted decimal number 3 is followed by a series of syntax
elements with dotted decimal number 3.1, all the syntax elements numbered 3.1
are subordinate to the syntax element numbered 3.
Certain words and symbols are used next to the dotted decimal numbers to add
information about the syntax elements. Occasionally, these words and symbols
might occur at the beginning of the element itself. For ease of identification, if the
word or symbol is a part of the syntax element, it is preceded by the backslash (\)
character. The * symbol can be used next to a dotted decimal number to indicate
that the syntax element repeats. For example, syntax element *FILE with dotted
decimal number 3 is given the format 3 \* FILE. Format 3* FILE indicates that
syntax element FILE repeats. Format 3* \* FILE indicates that syntax element *
FILE repeats.
The following words and symbols are used next to the dotted decimal numbers:
v ? means an optional syntax element. A dotted decimal number followed by the ?
symbol indicates that all the syntax elements with a corresponding dotted
decimal number, and any subordinate syntax elements, are optional. If there is
only one syntax element with a dotted decimal number, the ? symbol is
displayed on the same line as the syntax element, (for example 5? NOTIFY). If
there is more than one syntax element with a dotted decimal number, the ?
symbol is displayed on a line by itself, followed by the syntax elements that are
optional. For example, if you hear the lines 5 ?, 5 NOTIFY, and 5 UPDATE, you
know that syntax elements NOTIFY and UPDATE are optional; that is, you can
choose one or none of them. The ? symbol is equivalent to a bypass line in a
railroad diagram.
v ! means a default syntax element. A dotted decimal number followed by the !
symbol and a syntax element indicates that the syntax element is the default
option for all syntax elements that share the same dotted decimal number. Only
one of the syntax elements that share the same dotted decimal number can
specify a ! symbol. For example, if you hear the lines 2? FILE, 2.1! (KEEP), and
2.1 (DELETE), you know that (KEEP) is the default option for the FILE keyword.
In this example, if you include the FILE keyword but do not specify an option,
default option KEEP will be applied. A default option also applies to the next
higher dotted decimal number. In this example, if the FILE keyword is omitted,
default FILE(KEEP) is used. However, if you hear the lines 2? FILE, 2.1, 2.1.1!
Note:
1. If a dotted decimal number has an asterisk (*) next to it and there is only one
item with that dotted decimal number, you can repeat that same item more
than once.
2. If a dotted decimal number has an asterisk next to it and several items have
that dotted decimal number, you can use more than one item from the list,
but you cannot use the items more than once each. In the previous example,
you could write HOST STATE, but you could not write HOST HOST.
3. The * symbol is equivalent to a loop-back line in a railroad syntax diagram.
v + means a syntax element that must be included one or more times. A dotted
decimal number followed by the + symbol indicates that this syntax element
must be included one or more times; that is, it must be included at least once
and can be repeated. For example, if you hear the line 6.1+ data area, you must
include at least one data area. If you hear the lines 2+, 2 HOST, and 2 STATE,
you know that you must include HOST, STATE, or both. Similar to the * symbol,
the + symbol can only repeat a particular item if it is the only item with that
dotted decimal number. The + symbol, like the * symbol, is equivalent to a
loop-back line in a railroad syntax diagram.
IBM may not offer the products, services, or features discussed in this document in
other countries. Consult your local IBM representative for information on the
products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may
be used instead. However, it is the user's responsibility to evaluate and verify the
operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you
any license to these patents. You can send license inquiries, in writing, to:
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law: INTERNATIONAL
BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION “AS IS”
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Some states do not allow disclaimer of express or implied warranties in
certain transactions, therefore, this statement may not apply to you.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those Web
sites. The materials at those Web sites are not part of the materials for this IBM
product and use of those Web sites is at your own risk.
Licensees of this program who wish to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged, should contact:
Site Counsel
IBM Corporation
2455 South Road
Poughkeepsie, NY 12601-5400
USA
The licensed program described in this information and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement, or any equivalent agreement
between us.
All statements regarding IBM's future direction or intent are subject to change or
withdrawal without notice, and represent goals and objectives only.
If you are viewing this information softcopy, the photographs and color
illustrations may not appear.
COPYRIGHT LICENSE:
This book primarily documents intended Programming Interfaces that allow the
customer to write programs that use z/OS UNIX.
Trademarks
IBM, the IBM logo, and ibm.com® are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions worldwide.
Other product and service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the Web at "Copyright and
trademark information" at www.ibm.com/legal/copytrade.shtm.
Adobe and the Adobe logo are either registered trademarks or trademarks of
Adobe Systems Incorporated in the United States and/or other countries.
UNIX is a registered trademark of The Open Group in the United States and other
countries.
Notices 451
452 z/OS V2R1.0 UNIX System Services Planning
Glossary
This glossary includes terms and definitions for ensuring that users can access only those
z/OS UNIX System Services. resources of a computer system for which
they are authorized.
The following cross-references are used in this
access control list (ACL)
glossary:
In computer security, a list associated
1. See refers the reader from a term to a with an object that identifies all the
preferred synonym, or from an acronym or subjects that can access the object and
abbreviation to the defined full form. their access rights.
2. See also refers the reader to a related or
access list entry token (ALET)
contrasting term.
A token that serves as an index into an
access list.
To view glossaries for other IBM products, go to
www.ibm.com/software/globalization/ access method
terminology. A technique for moving data between
main storage and input/output devices.
3270 pass-through mode
A mode that lets a program running in a access method services (AMS)
shell environment send and receive a data A multifunction utility named IDCAMS
stream or issue TSO/E commands. that is used to manage catalogs, devices,
and both VSAM and non-VSAM data
sets.
absolute address
access mode
An address that, without the need for
A form of access permitted for a file.
further evaluation, identifies a storage
location or a device. access permission
A group of designations that determine
absolute path name
the users who can access a particular file
A string of characters used to refer to an
and how the users can access the file. The
object, starting at the highest level (or
access permissions are read, write, and
root) of the directory hierarchy. The
run (execute).
absolute path name must begin with a
slash (/), which indicates that the path accessible
begins at the root. Pertaining to an object for which a client
has a valid designator or handle.
absolute value
The numeric value of a number regardless accessor environment element (ACEE)
of its algebraic sign (positive or negative). A control block that contains a description
of the current user's security environment,
access The ability to read, update, or otherwise
including user ID, current connect group,
use a resource. Access to protected
user attributes, and group authorities. An
resources is usually controlled by system
ACEE is constructed during user
software.
identification and verification.
access ACL
account
An access control list (ACL) that provides
An entity that contains a set of
protection for a file system object.
parameters that define the
access authority application-specific attributes of a user,
One of a range of possible authority which include the identity, user profile,
levels that control access to protected and credentials.
resources.
ACEE See accessor environment element. .
access control
ACL See access control list.
In computer security, the process of
Glossary 455
before a character tells the system to binary file
ignore any special meaning the character A file format that does not consist of a
might have. sequence of printable characters (text).
backup binder
Pertaining to a system, device, file, or See linkage editor.
facility that can be used in the event of a
block special file
malfunction or loss of data.
A file that provides a low level block
base address access to an input or output device.See
An address that is used as a reference also character special file.
point for resolving symbolic references to
Boolean
locations in storage.
Characteristic of an expression or variable
base address register that can only have a value of true or false.
See base register.
BPAM See basic partitioned access method.
base name
brace Either of the characters left brace ({) and
The last element to the right of a full path
right brace (}). When an object is enclosed
name.
in braces, the left brace immediately
base register precedes the object and the right brace
A general purpose register that the immediately follows it.
programmer chooses to contain a base
bracket
address.
Either of the characters left bracket ([) and
basic mode right bracket (]).
A central processor mode that does not
break condition
use logical partitioning.
In the TTY subsystem, a character
basic partitioned access method (BPAM) framing error in which the data is all
An access method that can be used to zeros.
create program libraries in direct access
break statement
storage for convenient storage and
A C or C++ control statement that
retrieval of programs.
contains the keyword break and a
batch A group of records or data processing semicolon (;). It is used to end an iterative
jobs brought together for processing or or a switch statement by exiting from it at
transmission. any point other than the logical end.
Control is passed to the first statement
Pertaining to a group of jobs to be run on
after the iteration or switch statement.
a computer sequentially with the same
program with little or no operator action. breakpoint
A marked point in a process or
batch job
programmatic flow that causes that flow
A predefined group of processing actions
to pause when the point is reached,
submitted to the system to be performed
usually to allow debugging or
with little or no interaction between the
monitoring.
user and the system.
build To convert a product from source code to
batch mode
a binary or executable software product.
The condition established so that batch
processing can be performed. built-in shell command
A command that is implemented as part
batch processing
of a shell program. Certain commands are
A method of running a program or a
built into the shell in order to improve
series of programs in which one or more
the performance of shell scripts or to
records (a batch) are processed with little
access the shell's internal data structures
or no action from the user or operator.
and variables.
byte (B)
A string that represents a character and
Glossary 457
child A node that is subordinate to another code point
node in a tree structure. Only the root A unique bit pattern that represents a
node is not a child. character in a code page.
child process coded character set identifier (CCSID)
A process that is created by a parent A 16-bit number that includes a specific
process and that shares the resources of set of encoding scheme identifiers,
the parent process to carry out a request. character set identifiers, code page
identifiers, and other information that
child resource
uniquely identifies the coded
A secured resource, either a file or library,
graphic-character representation.
that uses the user list of a parent resource.
A child resource can have only one parent collating element
resource. The smallest entity used to determine the
logical ordering of strings. A collating
child segment
element consists of either a single
In a database, any segment that is
character, or two or more characters
dependent on another segment above it
collating as a single entity. The value of
(its parent) in the hierarchy.
the LC_COLLATE category in the current
choice An option in a pop-up window or menu locale determines the current set of
used to influence the operation of the collating elements.
system.
collating sequence
CINET A specified arrangement used in
See Common INET. sequencing.
classification rule colony address space
A rule used by the workload manager An address space in which a physical file
component of z/OS to assign a service system (PFS) can be initialized. The
class. address space can be viewed as a logical
extension to the kernel address space.
client A software program or computer that
requests services from a server. column
A vertical arrangement of characters or
client process
other expressions. Columns are positioned
A process that requests services from a
side by side on a page or display.
server process.
command
client/server
A statement used to initiate an action or
Pertaining to the model of interaction in
start a service. A command consists of the
distributed data processing in which a
command name abbreviation, and its
program on one computer sends a request
parameters and flags if applicable.
to a program on another computer and
awaits a response. The requesting command alias
program is called a client; the answering An abbreviation of a long command line
program is called a server. or a new name for a command. [OSF]
close To end processing by ending the command history
connection between the file and a An automatic listing of previously issued
program. commands.
code page command interpreter
A particular assignment of code points to See command language interpreter
graphic characters. Within a given code
command language interpreter
page, a code point can have only one
A program that reads commands and
specific meaning. A code page also
changes them into computer instructions.
identifies how undefined code points are
handled..
Glossary 459
mathematically formal notation, or in a elements of which are to be loaded into
machine-readable language. adjoining main storage locations.
condition code control statement
A code that reflects the result of a In programming languages, a statement
previous input/output, arithmetic, or that is used to interrupt the continuous
logical operation. sequential processing of programming
statements. Conditional statements such
condition variable
as IF, PAUSE, and STOP are examples of
An object that allows a thread to suspend
control statements.
execution when it finds an untrue
condition, and to resume execution when controlled program
another thread makes the condition true. A RACF function with which an
installation can control who can run
configuration
RACF-controlled programs.
The machines, devices, and programs that
make up a system, subsystem, or controlling process
network. A session leader that has control of a
terminal.
configure
To describe the interconnected controlling terminal
arrangement of the devices, programs, The active workstation from which the
communications, and optional features process group for that process was
installed on a system. started. Each session may have at most
one controlling terminal associated with
conformance document
it, and a controlling terminal is associated
A document provided by an implementer
with exactly one session.
(such as IBM) that contains
implementation details as described in the conversational
current POSIX.1 standard. Pertaining to a program or a system that
conducts a dialog with a terminal user,
connection
alternately receiving and transmitting
In data communication, an association
data.
established between entities for conveying
information. conversion
The process of changing from one form of
constant
representation to another. Changing a
A language element that specifies an
code point that is assigned to a character
unchanging value. Constants are classified
in one code page to its corresponding
as string constants or numeric constants.
code point in another code page is an
constant field example of conversion.
A field defined by a display format to
conversion table
contain a value that does not change.
A table that contains a set of characters
context that can be replaced with alternative
The address space for a process, hardware characters.
registers, and related kernel data
Coordinated Universal Time (UTC)
structures.
The international standard of time that is
control block kept by atomic clocks around the world.
A storage area used by a program to hold
copy To read data from a source, leaving the
control information.
source data unchanged, and to write the
control character same data elsewhere.
A character whose occurrence in a
counter
particular context initiates, modifies, or
A register or storage location used to
stops a control function.
accumulate the number of occurrences of
control section (CSECT) an event.
The part of a program specified by the
programmer to be a relocatable unit, all
Glossary 461
data set debugger
The major unit of data storage and A tool used to detect and trace errors in
retrieval, consisting of a collection of data computer programs.
in one of several prescribed arrangements
decimal
and described by control information to
Pertaining to a system of numbers to the
which the system has access. See also file.
base 10. The decimal digits range from 0
data space through 9.
A separate area of addressable storage
declaration
that contains only data. A data space can
In the C and C++ languages, a description
hold up to 2 gigabytes of data.
that makes an external object or function
data stream available to a function or a block
The commands, control codes, data, or statement.
structured fields that are transmitted
default
between an application program and a
Pertaining to an attribute, value, or option
device such as printer or
that is assumed when none is explicitly
nonprogrammable display station.
specified.
data structure
default access control list (default ACL)
In Open Source Initiative (OSI), the
A template used to generate access
syntactic structure of symbolic expressions
control lists (ACLs) for the files within a
and their storage allocation characteristics.
directory. A default ACL is not used to
data type verify permissions.
In programming languages, a descriptor
default ACL
of a set of values together with a set of
See default access control list.
permitted operations. A data type
determines the kind of value that a default directory
variable can assume or that a function can The directory name supplied by the
return. operating system if none is specified.
database (DB) definition
A collection of interrelated or A declaration that reserves storage and
independent data items that are stored can provide an initial value for a data
together to serve one or more object or define a function.
applications.
descriptor
DB See database. A small, unsigned integer that a UNIX
system uses to identify an object
DBCS See double-byte character set.
supported by the kernel. Descriptors can
DD See device driver. represent files, pipes, sockets, and other
I/O streams.
See data definition.
device A piece of equipment. Devices can be
DD statement
workstations, printers, disk drives, tape
See data definition statement.
units, or remote systems.
ddname
device driver (DD)
See data definition name.
A program that provides an interface
deadlock between a specific device and the
Unresolved contention for the use of application program that uses the device.
resources.
DFSMS (Data Facility Storage Management
deallocate Subsystem)
To release a resource that is assigned to a An operating environment that helps
specific task. automate and centralize the management
of storage. To manage storage, the storage
debug To detect, diagnose, and eliminate errors
management subsystem (SMS) provides
in programs.
the storage administrator with control
Glossary 463
dynamic LPA enforced lock
See dynamic link pack area. A type of lock that a process holds on a
region of a file preventing any other
dynamic storage
process from accessing that region with
An area of storage that is explicitly
read or write system calls. In addition, the
allocated by a program or procedure
create command is prevented from
while it is running.
truncating the files.
entry An element of information in a table, list,
EBCDIC queue, or other organized structure of
See Extended Binary Coded Decimal data or control information.
Interchange Code.
entry point
EBCDIC character The address or label of the first
Any one of the symbols included in the instruction processed or entered in a
EBCDIC set. program, routine, or subroutine.There
might be a number of different entry
editor program
points, each corresponding to a different
A computer program designed to perform
function or purpose.
such functions as rearrangement,
modification, and deletion of data in environment
accordance with prescribed rules. The settings for shell variables and paths
that are set when the user logs in. These
effective group ID
variables can be modified later by the
The current group ID, but not necessarily
user.
the user's own ID. For example, a user
logged in under a particular group ID environment variable
might be able to change to another group A variable that defines an aspect of the
ID. The ID to which the user changes operating environment for a process. For
then becomes the effective group ID. example, environment variables can
define the home directory, the command
element
search path, the terminal in use, or the
The smallest unit in a table, array, list, set,
current time zone.
or other structure. Examples of an
element are a value in a list of values and EOF See end-of-file.
a data field in an array.
epoch The time and date corresponding to 0 in
ELPA See extended link pack area. an operating system's clock and
time-stamp values. For most versions of
empty string
the UNIX operating system, the epoch is
A character array whose first element is a
00:00:00 GMT, 01 January 1970. System
null character.
time is measured as the number of
emulation seconds past the epoch.
The use of software, hardware, or both by
equivalence class
one system to imitate another system. The
A grouping of characters or character
imitating system accepts the same data,
strings that are considered equal for
runs the same programs, and achieves the
purposes of collation. For example, many
same results as the imitated system.
languages place an uppercase character in
enclave the same equivalence class as its
A transaction that can span multiple lowercase form, but some languages
dispatchable units (service request blocks distinguish between accented and
and tasks) in one or more address spaces unaccented character forms for the
and is reported on and managed as a purpose of collation.
unit.
error condition
end-of-file (EOF) The state that results from an attempt to
A code that signals that the last record of run instructions in a computer program
a file has been read. that are not valid or that operate on data
that is not valid.
Glossary 465
file name floating-point number
A name assigned to identify a file. A real number represented by a pair of
distinct numerals. The real number is the
file offset
product of the fractional part, one of the
The byte position in the file where the
numerals, and a value obtained by raising
next I/O operation begins.
the implicit floating-point base to a power
file owner indicated by the second numeral.
The user who has the highest level of
floating-point register (FPR)
access authority to a file, as defined by
A register used to manipulate data in a
the file.
floating-point representation system.
file permission bit [I][A]
Information about a file that is used,
fold To translate the lowercase characters of a
along with other information, to
character string into uppercase.
determine whether a process has read,
write, or execute permission to a file. The foreground
use of file permission bits is described in In multiprogramming, the environment in
file access permissions. which high-priority programs are run.
file pointer foreground process group
An identifier that indicates a structure A group whose member processes have
containing the file name. privileges that are denied to background
processes when the controlling terminal is
file system
being accessed. Each controlling terminal
A collection of files and certain attributes
can have only one foreground process
associated with those files.
group.
file system owner
foreign cell
The system that coordinates sysplex
A cell other than the one to which the
activity for a particular file system.
local machine belongs. A foreign cell and
file tag its binding information are stored in
A file attribute that identifies the either Global Directory Service (GDS) or
character set of the text data within a file the Domain Name System (DNS).
and indicates whether the file is eligible
fork To create and start a child process.
for automatic conversion.
forked address space
File Transfer Protocol (FTP)
An address space created by a fork
In TCP/IP, an application layer protocol
function. A forked address space is
that uses TCP and Telnet services to
perceived by MVS to be a batch job.
transfer bulk-data files between machines
or hosts. formatted file
A file that is arranged with particular
filter A command that reads standard input
characteristics, such as line spacing,
data, modifies the data, and sends it to
headings, and number of characters and
standard output. A pipeline usually has
lines per page.
several filters.
FPR See floating-point register.
FIPS See Federal Information Processing
Standard. free space
The total amount of unused space in a
fixed-length record
page, data set, file, or storage medium.
A record whose length is established as
Free space is the space that is not used to
an attribute of the file in which it is
store records or control information.
stored, and cannot be changed. Every
record in such a file has the same length, FRR See functional recovery routine.
which is specified by the record length
FTP See File Transfer Protocol.
attribute (LRECL) of the file.
fully qualified name
flag An indicator or parameter that shows the
A qualified name that includes all names
setting of a switch.
Glossary 467
program's reaction to specific external HSM See hierarchical storage management.
events, such as an interrupt handler.
Huffman coding
hardware (H/W) A character-coding technique to compress
The physical components of a computer data.
system.
header
i-node The internal structure that describes the
System-defined control information that
individual files in the UNIX file system.
precedes user data.
An i-node contains the node, type, owner,
header file and location of a file.
See include file.
i-node number
HFS See hierarchical file system. A number specifying a particular i-node
file in the file system.
hierarchical file system (HFS)
A system for organizing files in a I/O See input/output.
hierarchy, as in a UNIX system.
IAR See instruction address register.
hierarchical storage management (HSM)
ID See identifier.
A function that automatically distributes
and manages data on disk, tape, or both identifier (ID)
by regarding devices of these types and A sequence of bits or characters that
potentially others as levels in a storage identifies a user, program, device, or
hierarchy that range from fast, expensive system to another user, program, device,
devices to slower, cheaper, and possibly or system.
removable devices. The objectives are to
IEEE See Institute of Electrical and Electronics
minimize access time to data and
Engineers.
maximize available media capacity.
if statement
High Level Assembler
A conditional statement that specifies a
An IBM licensed program that translates
condition to be tested and the action to be
symbolic assembler language into binary
taken if the condition is satisfied.
machine language.
include file
high-level language (HLL)
A text file that contains declarations that
A programming language that provides
are used by a group of functions,
some level of abstraction from assembler
programs, or users.
language and independence from a
particular type of machine. index A table that contains key values or
referrences for locating information in an
high-order
indexed file.
The most significant; leftmost. For
example, bit 0 in a register is the informational message
high-order bit. A message that provides information
about the system and is not the result of
Hiragana
an error condition. This message does not
One of the two common Japanese
require a response.
phonetic alphabets (the other is katakana).
The symbols are cursive or curvilinear in inherit
style. Hiragana syllables are typically To copy resources or attributes from a
used in the representation of native parent to a child.
Japanese words and grammatical
initial program load
particles.
The process of loading the operating
history file system and other basic software into main
A file in which a record is kept of shell storage.
commands that are executed.
input Data entered for processing or storage.
HLL See high-level language.
Glossary 469
IP socket job step
The port that is concatenated with the The execution of a computer program
Internet Protocol (IP) address. explicitly identified by a job control
statement. A job may specify that several
IPC See interprocess communication.
job steps be executed. [A]
IPCS See Interactive Problem Control System.
jump In the running of a computer program, a
ISO See International Organization for departure from the implicit or declared
Standardization. order in which instructions are being run.
ISPF See Interactive System Productivity justify To align text so that the margins are even
Facility.
item The data in one line of an indexed field.
Kanji A graphic character set consisting of
symbols used in Japanese ideographic
alphabets. Each character is represented
JCL See job control language.
by 2 bytes.
JES See Job Entry Subsystem.
Katakana
JES2 An MVS subsystem that receives jobs into A Japanese phonetic syllabary used
the system, converts them to internal primarily for foreign names and place
format, selects them for execution, names and words of foreign origin.
processes their output, and purges them
Kerberos
from the system. In an installation with
A network authentication protocol that is
more than one processor, each JES2
based on symmetric key cryptography.
processor independently controls its job
Kerberos assigns a unique key, called a
input, scheduling, and output processing.
ticket, to each user who logs on to the
JES3 An MVS subsystem that receives jobs into network. The ticket is embedded in
the system, converts them to internal messages that are sent over the network.
format, selects them for execution, The receiver of a message uses the ticket
processes their output, and purges them to authenticate the sender.
from the system. In complexes that have
kernel The part of an operating system that
several loosely coupled processing units,
contains programs for such tasks as
the JES3 program manages processors so
input/output, management and control of
that the global processor exercises
hardware, and the scheduling of user
centralized control over the local
tasks.
processors and distributes jobs to them
using a common job queue. kernel address space
The address space containing the MVS
job control language (JCL)
support for z/OS UNIX services. This
A command language that identifies a job
address space can also be called the
to an operating system and describes the
kernel.
job's requirements.
keyboard
Job Entry Subsystem (JES)
An input device consisting of various
An IBM licensed program that receives
keys that allows the user to input data,
jobs into the system and processes all
control cursor and pointer locations, and
output data that is produced by those
control the dialog with the workstation.
jobs.
keyword
job name
One of the predefined words of a
The name of the job as identified to the
programming language, artificial
system. For an interactive job, the job is
language, application, or command.
assigned the name of the workstation at
which the job was started; for a batch job, keyword parameter
the name is specified in the command A parameter that consists of a keyword
used to submit the job. followed by one or more values.
Glossary 471
linkage editor logical operator
A computer program for creating load A symbol, such as AND, OR, or NOT,
modules from one or more object that represents an operation on logical
modules or load modules by resolving expressions.
cross-references among the modules and,
logical record
if necessary, adjusting addresses.
A group of logically related fields.
literal A symbol or a quantity in a source Portions of the same logical record may
program that is itself data, rather than a be located in different physical records,
reference to data. and several logical records or parts of
several logical records may be located in
LLA See library lookaside.
one physical record.
load To bring all or part of a computer
logically partitioned mode
program into memory from auxiliary
A capability provided by the Processor
storage so that the computer can run the
Resource/System Manager (PR/SM™) that
program.
allows a single processor to run multiple
load module operating systems using separate sets of
A program in a form suitable for loading system resources, or logical partitions.
into main storage for execution.
login name
loader A program that copies an executable file A string of characters that uniquely
into main storage so that the file can be identifies a user to the system.
run.
logon The process of connecting to a computer
local Pertaining to a device, file, or system that system, network, or terminal session
is accessed directly from a user's system,
loop A sequence of instructions performed
without the use of a communication line.
repeatedly.
locale A setting that identifies language or
low-order
geography and determines formatting
The least significant, or rightmost,
conventions such as collation, case
example. For example, in a 32-bit register
conversion, character classification, the
(0 through 31), bit 31 is the low-order bit.
language of messages, date and time
representation, and numeric LP See licensed program.
representation.
LPA See link pack area.
lock A mechanism with which a resource is
LZ See Lempel-Ziv.
restricted for use by the holder of the
lock.
log in To connect to a computer system or machine instruction
network by entering identification and A binary number that directs the
authentication information at the operation of a processor. Compilers and
workstation. assemblers convert source instructions to
machine instructions.
logger A functional unit that records events and
physical conditions, usually with respect magic number
to time. A numeric or string constant in a file that
indicates the file type.
logical mount
A mount that attaches a file system to the main function
root directory or to a directory of another A function that has the identifier main.
file system so that the files and directories Each program must have exactly one
on the file system can be referenced. The function named main. The main function
attached file system can consist of a file or is the first user function that receives
many files and directories. control when a program starts to run.
main program
The first program unit to receive control
when a program is run.
Glossary 473
named pipe numeric
A pipe that an application opens by name Pertaining to any of the digits 0 through
in order to write data into or read data 9.
from the pipe. Using a named pipe
numeric constant
facilitates communication between a
A constant that expresses an integer, a
sending process and a receiving process.
real number, or a complex number.
network
In data communication, a configuration in
which two or more locations are object code
physically connected for the purpose of Machine-executable instructions, usually
exchanging data. generated by a compiler from source code
written in a higher level language. Object
Network File System (NFS)
code might itself be executable or it might
A protocol, developed by Sun
require linking with other object code
Microsystems, Incorporated, that allows a
files.
computer to access files over a network as
if they were on its local disks. object file
A member file in an object library.
newline character (NL)
A control character that causes the print object library
or display position to move down one An area on a direct access storage device
line. used to store object programs and
routines.
NFS See Network File System.
object module
NL See newline character.
A set of instructions in machine language
node In communications, an end point of a that is produced by a compiler or
communication link or a junction assembler from a subroutine or source
common to two or more links in a module and can be input to the linking
network. Nodes can be processors, program. The object module consists of
communication controllers, cluster object code.
controllers, terminals, or workstations.
object program
Nodes can vary in routing and other
A fully compiled or assembled program
functional capabilities.
that is ready to be loaded into the
NUL See null character. computer. An object program consists of
object modules.
NULL In the C and C++ languages, a pointer
that does not point to a data object. OMVS
The portion of a RACF profile that
null character (NUL)
contains information about users of z/OS
A control character with the value of X'00'
UNIX System Services, such as attributes.
that represents the absence of a displayed
or printed character. OMVS segment
The portion of a RACF profile that
null string
contains logon information for z/OS
A character or bit string with a length of
UNIX users and groups.
zero.
open file
null value
A file that is currently associated with a
A parameter position for which no value
file descriptor.
is specified.
open system
null wide-character code
A system that complies with
A wide-character code with all bits set to
industry-defined interoperability
zero.
standards. An open system can be
null-terminated connected to other systems complying
Pertaining to a character string that ends with the same standards.
with a zero byte.
Glossary 475
partitioned data set (PDS) physical file
A data set on direct access storage that is A database file that describes how data is
divided into partitions, called members, to be presented or received from a
each of which can contain a program, part program and how data is actually stored
of a program, or data.See also sequential in the database. A physical file contains
data set. one record format and one or more
members.
partitioned data set extended (PDSE)
A data set that contains an indexed physical file system (PFS)
directory and members that are similar to The part of the operating system that
the directory and members of partitioned handles the actual storage and
data sets (PDSs). manipulation of data on a storage
medium.
password phrase
A string consisting of mixed-case letters, physical unit (PU)
numbers, and special characters, In SNA, one of three types of network
including blanks, that is used to control addressable units (NAUs). A PU exists in
access to data and systems. each node of an SNA network to manage
and monitor, at the request of a system
path In a network environment, the route
services control point logical unit
between any two nodes.
(SSCP-LU) session, the resources (such as
path name attached links and adjacent link stations)
A name that specifies all directories of a node.
leading to a file plus the file name itself.
PID See process ID.
pattern matching
pipe An interprocess communication
The specification of a pattern of characters
mechanism that connects an output file
for search purposes.
descriptor to an input file descriptor.
PDS See partitioned data set. Usually the standard output of one
process is connected to the standard input
PDSE See partitioned data set extended.
of another, forming a pipeline.
performance
pipeline
A measure of a system's ability to
A direct, one-way connection between
perform its functions, including response
two or more processes.
time, throughput, and number of
transactions per second. pointer
A data element or variable that holds the
period The symbol ".". The term dot is used for
address of a data object or a function.
the same symbol when referring to a Web
address or file extension. This character is polling
named <period> in the portable character Interrogation of devices for such purposes
set. as avoiding contention, determining
operational status, or determining
permanent storage
readiness to send or receive data.
A storage device whose contents cannot
be modified. port An end point for communication between
applications, generally referring to a
permission
logical connection. A port provides
The ability to access a protected object,
queues for sending and receiving data.
such as a file or directory. The number
Each port has a port number for
and meaning of permissions for an object
identification.
are defined by the access control list.
To modify a computer program that runs
PFS See physical file system.
on a given system to enable it to run on a
PGID See process group ID. different system.
phase A distinct part of a process in which port number
related operations are performed. The part of a socket address that
identifies a port within a host.
Glossary 477
processor between two or more devices or systems
In a computer, the part that interprets and in a communication network.
executes instructions. Two typical
PSW See program status word.
components of a processor are a control
unit and an arithmetic logic unit. PU See physical unit.
production system
A system on which application programs
qualified name
that are already developed and tested run
A data name explicitly accompanied by a
on a regular basis.
specification of the class to which it
profile belongs in a specified classification
A file containing customized settings for a system.
system or user.
qualifier
program A modifier that makes a name unique.
A prepared sequence of instructions to the
query In interactive systems, an operation at a
system to accomplish a defined task. In
workstation that elicits a response from
POSIX.2, a program encompasses
the system.
applications written in the shell command
language, complex utility input queue A data structure for processing work in
languages, and high-level languages which the first element added to the
(HLLs). queue is the first element processed. This
order is referred to as first-in first-out
program CCSID
(FIFO).
In Enhanced ASCII, a 16-bit value that
identifies the current character set of text quiesce
strings within a program. To end a process or shut down a system
after allowing normal completion of
program check
active operations.
A condition that occurs when
programming errors are detected by a quotation mark
processor during execution. The characters " and '.
program control quote To mask the special meaning of certain
An RACF function with which an characters, causing the characters to be
installation can control who runs taken literally.
RACF-controlled programs.
program counter
RACF See Resource Access Control Facility.
See instruction address register.
RACF-indicated
program status word (PSW)
Pertaining to a data set for which the
An area in storage used to indicate the
RACF indicator is set on. If a data set is
order in which instructions are executed,
RACF-indicated, a user can access the
and to hold and indicate the status of the
data set only if a RACF profile or an
computer system.
entry in the global access checking table
prolog A user-written definition of an application exists for that data set.
program, record, or table. A prolog is
RACF-protected
used for documentation.
Pertaining to resources that are defined to
prompt RACF. A data set that is RACF-protected
A message or a displayed symbol that by a discrete profile must also be
requests information or user action. The RACF-indicated.
user must respond to allow the program
RE See regular expression.
to proceed.
read lock
protocol (PPTP)
A lock that prevents any other process
A set of rules controlling the
from setting a write lock on any part of
communication and transfer of data
the protected area.
Glossary 479
Resource Access Control Facility (RACF) root user
An IBM licensed program that provides A system user who operates without
access control by identifying users to the restrictions. A root user has the special
system; verifying users of the system; rights and privileges needed to perform
authorizing access to protected resources; administrative tasks.
logging unauthorized attempts to enter
routine
the system; and logging accesses to
A program or sequence of instructions
protected resources.
called by a program. Typically, a routine
restore has a general purpose and is frequently
To return to an original value or image, used.
for example, to restore data to main
row A horizontal arrangement of characters or
storage from auxiliary storage.
other expressions.
restricted shell
RRN See relative record number.
A facility that provides controlled, limited
access to specified users. run To cause a program, utility, or other
machine function to be performed.
resume
To continue execution of an application runtime library
after an activity has been suspended. A library that is loaded dynamically and
used during execution time.
retrieve
To locate data in storage and read it so
that it can be processed, printed, or
SA See system administrator.
displayed.
SAF See System Authorization Facility.
return code
A value returned by a program to SBCS See single-byte character set.
indicate the result of its processing.
Scalable Parallel 2 (SP2)
Completion codes and reason codes are
IBM's parallel UNIX system: effectively
examples of return codes.
parallel AIX systems on a high-speed
return statement network.
A control statement in a programming
scheduler
language that contains the word "return"
A computer program that performs
followed by an optional expression and a
functions such as scheduling, initiation,
semicolon.
and termination of jobs.
return value
SDSF See System Display and Search Facility.
See return code.
SDUMP
reverse solidus
See system dump.
See backslash.
search path
rollback
A list of directories searched by the shell
The process of restoring data that was
when a command path name is not
changed by an application program or
specified.
user.
security
root The UNIX definition for a directory that is
The protection of data, system operations,
the base for all other directories.
and devices from accidental or intentional
root directory ruin, damage, or exposure.
The directory that contains all other
security administrator
directories in the system.
A programmer who manages, protects,
root file system and controls access to sensitive
The basic file system onto which all other information.
file systems can be mounted. The root file
system contains the operating system files
that run the rest of the system.
Glossary 481
signal handler source file
A subroutine or function that is called A file of programming code that is not
when a signal occurs. compiled into machine language.
signal mask source language
A collection of signals that are currently A programming language acceptable as
blocked from delivery to a process. input to a translator.
single precision source module
The use of one computer word to See source program.
represent a number, in accordance with
source program
the required precision.
A set of instructions that are written in a
single-byte character set (SBCS) programming language and must be
A coded character set in which each translated into machine language before
character is represented by a 1-byte code. the program can be run.
A 1-byte code point allows representation
source statement
of up to 256 characters.
A statement written in the symbols of a
slash The character /, also known as forward programming language. For example,
slash. This character is named <slash> in COBOL, RPG, and DDS statements are
the portable character set. source statements.
SLIP See Serial Line Internet Protocol. SP2 See Scalable Parallel 2.
SMF See System Management Facilities. space A site intended for storage of data, such
as a location in a storage medium.
SMF record
A collection of information about capacity spawn A function in which a calling process (the
and system management that is written to parent process) creates a new process
a Systems Management Facility (SMF) called a child process. The child process
data set. Each SMF record includes inherits attributes from the parent process.
information about the system's A new program is specified and starts
configuration, paging activity, and running in the child process.
workload.
spec See specification.
SMIT See System Management Interface Tool.
special character
socket An identifier that an application uses to A character other than a digit, a letter, or
uniquely identify an end point of one of these characters: $, #, @, ., or _. For
communication. The user associates a example, the following characters are
protocol address with the socket by special characters: *, +, and %.
associating a socket address with the
special file
socket.
A file that provides an interface to input
software or output devices. There is at least one
The programs, procedures, rules, and special file for each device attached to the
associated documentation pertaining to computer.
the operation of a system.
specification (spec)
sort To rearrange some or all of a group of A document that describes, in a complete,
items, based upon the contents or precise, verifiable manner, the
characteristics of those items. requirements, design, behavior, or
characteristics of a system or system
source A system, a program within a system, or
component, for the purpose of developing
a device that makes a request to a target.
or validating the system.
source code
square bracket
A computer program in a format that is
See bracket.
readable by people. Source code is
converted into binary code that can be SRB See service request block.
used by a computer.
stack An area in memory that typically stores
Glossary 483
structure supplementary group ID
A class data type that contains an ordered A process attribute that is used when file
group of data objects. Unlike an array, the access permissions are determined.
data objects within a structure can have
symbol table
varied data types.
A list of symbol names and their
stub A protocol extension procedure that associated values, usually in an object or
connects with the library but remains executable file, which gives the names of
outside the library. external symbols and their addresses.
subcommand symbolic link
A request for an operation that is within A type of file that contains a pointer to
the scope of work requested by a another file or directory.
previously issued command.
synchronous
subdirectory Occurring with a regular or predictable
A directory contained within another time relationship.
directory in a file system hierarchy.
synchronous transmission
subprogram A method of transmission in which the
A program that is called by another sending and receiving of data is
program, such as a subshell. controlled by timing signals.
subroutine syntax The rules for the construction of a
A sequence of instructions within a larger command or statement.
program that performs a particular task.
sysplex
A subroutine can be accessed repeatedly,
A set of z/OS systems that communicate
can be used in more than one program,
with each other through certain
and can be called at more than one point
multisystem hardware components and
in a program.
software services.
subscript
sysplex-aware
An integer or variable whose value selects
In zFS, pertaining to a physical file
a particular element in a table or array.
system that handles file requests for
subshell mounted file systems locally instead of
An instance of the shell program started shipping function requests through z/OS
from an existing shell program. UNIX.
substring sysplex CDS
A part of a character string. See sysplex couple data set.
suffix A character string attached to the end of a sysplex couple data set (sysplex CDS)
file name that helps identify its file type. A couple data set (CDS) that contains
sysplex-wide data about systems, groups,
superuser
and members that use cross-system
See root user.
coupling facility (XCF) services. All
superuser authority systems in a sysplex must be connected to
The unrestricted ability to access and the sysplex CDS.
modify any part of the operating system,
Sysplex Timer®
usually associated with the user who
An IBM unit that synchronizes the
manages the system.
time-of-day (TOD) clocks in processors.
supervisor
system
The part of a control program that
A computer and its associated devices
coordinates the use of resources and
and programs.
maintains the flow of processor
operations. system administrator (SA)
The person who controls and manages a
computer system.
Glossary 485
Time Sharing Option (TSO) Transmission Control Protocol (TCP)
A base element of the z/OS operating A communication protocol used in the
system with which users can interactively Internet and in any network that follows
work with the system. the Internet Engineering Task Force (IETF)
standards for internetwork protocol. TCP
Time Sharing Option Extensions (TSO/E)
provides a reliable host-to-host protocol in
A licensed program that is based on Time
packet-switched communication networks
Sharing Option (TSO). With TSO/E, MVS
and in interconnected systems of such
users can interactively share computer
networks.
time and resources.
Transmission Control Protocol/Internet Protocol
time stamp
(TCP/IP)
The value of an object that indicates the
An industry-standard, nonproprietary set
system time at some critical point in the
of communication protocols that provides
object's history.
reliable end-to-end connections between
timeout applications over interconnected networks
A time interval that is allotted for an of different types.
event to occur or complete before
trap A special statement used to catch signals
operation is interrupted.
within the z/OS shell.[OSF]
TMP See Terminal Monitor Program.
truncate
token The basic syntactic unit of a computing To shorten a field, value, statement, or
language. A token consists of one or more string.
characters, excluding the blank character
TSO See Time Sharing Option.
and excluding characters within a string
constant or delimited identifier. TSO/E See Time Sharing Option Extensions.
token number tty See terminal type.
A nonnegative integer that represents the
tuning
name of a token.
The process of adjusting an application, a
touch To set a flag in a window that indicates system, or system control variables to
that the information in the window could operate in a more efficient manner.
differ from the that displayed on the
terminal device.
UI See user interface.
trace To record data that provides a history of
events occurring in the system. underscore character
A character used in each position of an
track A circular path on the surface of a disk or
entry field to indicate its length. This
diskette on which information is
indicator of entry field length is used on
magnetically recorded and from which
display devices that do not have the
recorded information is read.
underscore attribute.
transactional
undub
Pertaining to an application program that
To make an address space unknown to
is divided into segments, where each
MVS.
segment typically requests an I/O
operation with a terminal user, giving up unformatted file
control to other application program A file that is arranged without such
segments for the duration of the I/O characteristics as a certain number of
operation. characters and lines per page, line
spacing, and headings.
transient
Pertaining to a program or subroutine union A variable that can hold any one of
that does not reside in main storage. several data types, one data type at a
time.
transmission
The sending of data from one place for
reception elsewhere.
Glossary 487
Virtual Storage Access Method (VSAM) boundaries in which an application
An access method for direct or sequential program or information is displayed or in
processing of fixed-length and which a dialog is presented.
variable-length records on disk devices.
word A fundamental unit of storage that refers
The records in a VSAM data set or file
to the amount of data that can be
can be organized in logical sequence by a
processed at a time. Word size is a
key field (key sequence), in the physical
characteristic of the computer architecture.
sequence in which they are written on the
See also halfword.
data set or file (entry sequence), or by
relative-record number. work area
That portion of central storage that is
Virtual Telecommunications Access Method
used by a computer program to hold data
(VTAM)
temporarily.
An IBM licensed program that controls
communication and the flow of data in an working directory
SNA network. The active directory. When a file name is
specified without a directory, the current
VLF See virtual lookaside facility.
directory is searched.
volume
working storage
A discrete unit of storage on disk, tape or
See temporary storage.
other data recording medium that
supports some form of identifier and workstation
parameter list, such as a volume label or A terminal or microcomputer at which a
input/output control. user can run applications and that is
usually connected to a mainframe or a
VS See virtual storage.
network.
VSAM
write To output characters to a file, such as
See Virtual Storage Access Method.
standard output or standard error. Unless
VTAM otherwise stated, standard output is the
See Virtual Telecommunications Access default output destination for all uses of
Method. the term write. [POSIX.2]
write access
In computer security, permission to write
wait A state allowing a parent process to
to an object.
synchronize with the execution of an exit
issued by a child process. write lock
A lock that prevents any other process
white space
from setting a read lock or a write lock on
A sequence of one or more characters,
any part of the protected area.
such as the blank character, the newline
character, or the tab character, that belong write to log (WTL)
to the space character class. A system service used to send messages
to the system log or hardcopy log.
wide character
A character whose range of values can write to operator with reply (WTOR)
represent distinct codes for all members A system service used to send messages
of the largest extended character set to an operator console informing the
specified among the supporting locales. operator of errors and system conditions
that might need correcting. A response is
wildcard character
required.
A special character such as an asterisk (*)
or a question mark (?) that can be used to WTL See write to log.
represent one or more characters. Any
WTOR
character or set of characters can replace
See write to operator with reply.
the wildcard character.
window
An area of the screen with visible
Glossary 489
490 z/OS V2R1.0 UNIX System Services Planning
Index
Special characters /dev/random
special character file 153
__BPXK_UNICODE_MAL environment variable 435 /dev/ttypNNNN
__BPXK_UNICODE_SUB environment variable 436 specifying 153
__IPC_MEGA option for shmat() 18 /dev/urandom
__MAP_MEGA option for mmap() 18 special character file 153
_BKXK_FORCE_CANCEL environment variable 433 /dev/zero
_BPX_ACCT_DATA environment variable 420, 429 special character file 153
_BPX_BATCH_SPAWN environment variable 429 /etc
_BPX_BATCH_UMASK environment variable 429 installing service into 160
_BPX_JOBNAME environment variable 229, 429 /etc directory
customizing 84 customizing configuration files 44, 237
_BPX_PTRACE_ATTACH environment variable 430 putting USERIDALIASTABLE in 38
_BPX_SHAREAS environment variable 430 /etc file system
benefits and side effects of using 402 explanation of 115
improving performance with 402 migrating the 12
shared address space 402 /etc/complete.tcsh
_BPX_SPAWN_SCRIPT environment variable 430 customizing 237
improving performance of shell scripts 402 /etc/csh.cshrc
_BPX_TERMPATH environment variable 431 customizing 236
_BPX_UNLIMITED_OUTPUT environment variable 431 /etc/csh.login
_BPX_USERID environment variable 431 customizing 235
_BPXK_AUTOCVT environment variable 431 national code page customization
using 280 for z/OS shell 249
_BPXK_CCSIDS environment variable 432 /etc/inetd.conf
_BPXK_DAEMON_ATTACH environment variable 432 customizing for rlogin 362
_BPXK_DISABLE_SHLIB environment variable 432 /etc/init
_BPXK_INITTAB_RESPAWN environment variable 433 customizing 227
_BPXK_JOBLOG environment variable 434 /etc/init.options
setting the 323 copying from /samples 44
_BPXK_MDUMP environment variable 434 customizing 227
dynamically requesting a SYSMDUMP 325 /etc/inittab
used in diagnosing problems 324 and the /etc/rc file 229, 232
_BPXK_PCCSID environment variable 434 copying from /samples 44
_BPXK_SETIBMOPT_TRANSPORT environment variable 414, customizing 232, 234
434 /etc/log
_BPXK_SUID_FORK environment variable 435 and /usr/sbin/init 227
_BPXK_TECHNIQUE environment variable 435 /etc/passwd
_BPXK_TIMEOUT environment variable 435 explanation of 218
_BPXK_UNICODE_TECHNIQUE environment variable 435 /etc/profile
_BPXK_WLM_PROPAGATE environment variable 436 customizing 219, 223
_C89_CLIB_PREFIX variable 240 national code page customization
_CEE_ENVFILE environment variable 436 for Japanese 250
_CEE_ENVFILE_S environment variable 436 for z/OS shell 248
_map_init 19 Simplified Chinese 250
_map_service 19 /etc/rc
_server_init() 86 and the /etc/inittab file 229, 232
/// copying from /samples 44
placeholder in mount processing (ZFS and HFS) 118, 123 customizing 231
/dev directory sample file 231
explanation of 115 /samples/init.options
/dev/console 155 copying to /etc/init.options 227
/dev/fd/n /samples/profile
special character file 154 sample of 219
/dev/fdn /tmp directory
special character file 154 explanation of 115
/dev/null managing the 327
special character file 153 /u directory
/dev/operlog 155 suggested file system structure 116
/dev/ptypNNNN /usr/sbin
specifying 153 specifying for superusers 226
Index 493
BPXISETD REXX exec c89 utility
converting /etc symbolic link to directory 160 customizing 239
BPXISETS REXX exec setting up to work with compiler 241
converting /etc to symbolic link 160, 180 tuning 384
BPXISHFS sample job using the c89 versions of the c89 command names 241
role in installation process 12 caching UID and GID information in VLF
BPXISJCL steps for 385
converting /etc in background 160 CANCEL command
BPXISMKD 137 ending
BPXISYS1 REXX exec processes 287
using the 178 canonical mode 8
BPXISYS2 REXX exec 179 cataloged procedure
BPXISYSR sample job BPXOINIT 55
creating sysplex-wide root 175, 179 daemons 351
BPXISYSS sample job 181 defining to RACF 90
BPXISYZR sample job initializing the kernel 45
creating sysplex-wide root 175, 179 OMVS 55
BPXISYZS sample job 181 CBC.SCCNCMP
BPXISZFS sample job loading into LPA 384
role in installation process 12 CBPDO installation
BPXMKDIR REXX exec 137 explanation of process 11
BPXOINIT address space security requirements for 88
modifying accounting information for 420 setting up BPXOINIT 12
BPXOINIT started procedure cc command
adding 55, 56 customizing 239
cataloged procedure 55 changing process limits for active processes
CBPDO installation 12 steps for 400
BPXP006E 325 character conversion table
BPXPRMLI parmlib member convert code page 317
keeping reconfigurable parameters in 300 customizing 318
BPXPRMXX (sample member) 23 character special file
BPXPRMxx parmlib member creating 152
changing values without reIPLing 26 CheckSchedEnv() WLM interface 86
customizing 23 CHECKSUM
CINET 411 used to improve TCP/IP performance 6
INET 408 Chinese, Simplified
customizing for a shared file system 185 customizing
dynamically adding filetypes to 300 for the z/OS shell 247
dynamically changing values of 297 CHOWN.UNRESTRICTED 73
parameters for common INET (CINET) using 77
INADDRANYCOUNT 413 chpriority()
INADDRANYPORT 413 enabling 391
setting limits for users 68 CICS/ESA (Customer Information Control System/ESA) 319
sharing 22 CINET (common INET)
specifying the initial values in IEASYSxx parmlib binding to a specific socket 413
member 23 connecting to a specific socket 414
switching to different members 300 customizing BPXPRMxx member 411
syntax checker 23 displaying network routing information 409
BPXTAMD module name setting up for sockets 406
customizing in FILESYSTYPE 27 specifying parameters in BPXPRMxx member
BPXTCAFF 414 INADDRANYCOUNT 413
BPXTCINT module name starting sockets processing 411
customizing in FILESYSTYPE 27 transport affinity 414
BPXTFS module name using specific transports 413
customizing in FILESYSTYPE 27 CINET file system type
BPXTUINT module name customizing in FILESYSTYPE 27
customizing in FILESYSTYPE 27 CINET operand of DISPLAY OMVS 409
BPXWH2Z tool classification rules
used to migrate HFS file systems to zFS 117 defining 21
byte range lock manager (BRLM) 211 code page
initializing 182 conversion 316
customizing 318
national 247
C code page 00037 316
code page 00290 316
c++ command
code page 00293 316
customizing 239
code page 00930 316
Index 495
customization (continued) DFSMS 5
tcsh shell 215 managing file systems with 132
electronic mail 244 messages 322
environment variables 217 tracing events 305
uucpd daemon 346 DFSMSdfp
verifying setup choices 51 SMS (System Managed Storage) 15
z/OS shell 215, 217 System Managed Storage (SMS) 15
environment variables 217 DFSMSdss
customizing COPY DATASET command 144
z/OS shell DFSMShsm
Japanese 247 backing up files 144
Simplified Chinese 247 Dialcodes file, UUCP 268
Dialers file, UUCP 268
direct mount 148
D directory
auditing accesses to 103
D OMVS, SER
controlling access to 91
displaying serialization data 309
file system 114
D OMVS,A=DUBW
directory default ACL 97
showing jobs in wait status 380
inheritance 99
D OMVS,ACTIVATE=SERVICE 297
dirty address space
D OMVS,Sockets 309
defining modules to program control 338
daemon
explanation of 342
appropriate privileges for 335
loading modules from the file system 358
authorizing to use delegated resources 432
dirty environment
cron
explanation of 342
customizing 347
loading modules from the file system 358
starting from the shell 351
DisconnectServer() WLM interface 86
customizing
display
inetd 345
information about processes
rlogind 346
ps shell command 305
customizing system for 338
DISPLAY command 305
defining a service class for 21
DISPLAY OMVS command
description of 4
displaying
IP-supplied 344
current PFSes 300
preparing security program for 337
transport providers 409
restarting 351
Distributed File System (DFS)
security considerations for 335
exporting considerations 213
security procedures 354
double-byte data
setup problems 355
converting 317
starting 351
driving system 157
starting from the shell 351
dump
starting in background environment 351
formatting 324
sticky bit, checking the 357
how to take a 308
syslogd
dynamic LPA 383
starting from the shell 351
uucpd
customizing 346
data set E
changing automounted 170 EBCDIC Latin 1 country-extended code page 316
protecting 94 EBCDIC Latin 1/Open Systems Interconnection code page
dbx 1047 316
enhanced security checking 344 electronic mail 255
debug customizing
APF-authorized programs 83 tcsh shell 244
with BPX.SERVER authority 83 customizing in the shell 244
defining Enhanced ASCII
groups 71 enabling 36
z/OS UNIX users 59 limitations of 280
delegated resources (RACF) 432 setting up 280
DeleteWorkUnit() WLM interface 86 using 279
Devices file, UUCP 268 enhanced program security
DFS (Distributed File System) dbx 344
exporting considerations 213 setting up 343
DFS Client environment
colony address space 45 dirty
DFSMDss explanation of 342
backing up files 146 loading modules from the file ssytem 358
Index 497
FACILITY class (continued) file descriptor
BPX.SERVER specifying 154
defining 85 file descriptor not available message 31
setting up for servers 369 file security packet (FSP)
setting up security for servers 368 and RACF 94
BPX.SHUTDOWN definition of 94
defining 85 file system
BPX.SMF /dev
defining 85 explanation of 115
BPX.SRV.userid /etc
defining 85 explanation of 115
BPX.STOR.SWAP migrating 12
defining 85 /tmp
BPX.SUPERUSER explanation of 115
defining 85 /u
BPX.UNLIMITED.OUTPUT explanation of 116
defining 86 /var
BPX.WLMSERVER explanation of 115
defining 86 allocating the root 119
FACILITY class profiles back-level sysplex
setting up 82 moving to a 205
failure backing up 144
file system 155, 312 BPAM access 133
file system type 312 changing mount mode 143
kernel 312 copying 144
recovering from 312 creating 116
System Services 312 defining 26
fastpath support for SAF expanding the 134
disabling 322 failure 155
enabling 322 in-memory
fcntl() service managing 327
used in file locking 151 increasing size of 133
FDBX messages 322 installing products into 161
field level access installing service into 157
OMVS segment of RACF user profile 66 managing 114, 132
FIFO special file 152 mounting 121, 123
file HFS 122
accessing 93 mounting, using symbolic links 211
auditing accesses to 103 multivolume support 146
changing nonprivileged mount 124
group 93 MAXUSERMOUNTSYS 124
owner 93 MAXUSERMOUNTUSER 124
character special nonprivileged unmount 124
creating 152 MAXUSERMOUNTSYS 124
checking for program control 340 MAXUSERMOUNTUSER 124
controlling access to 91 organization 404
description 5, 113 placement of files 404
in file system 5, 113 planned shutdown 287
locking 151 privileged mount 123
parallel sysplex 211 privileged unmount 123
obtaining security information for 94 recovering from root problems 155
permission bits reducing size of 133
changing 93 remounting 143
removing from directories 134 root
special 152 restoring a 155
transferring setting up the 119
UUCP 255 slow response time 134
transferring, by all users 77 steps for mounting 125
UUCP sysplex
Devices 268 mounting using NFS Client Mount 212
Dialcodes 268 moving in a 204
Dialers 268 transporting the 159
Permissions 268 unmounting
Systems 264 in a non-sysplex environment 134
file default ACL 97 in sysplex 186
inheritance 99 file system clients 203
file system owner 203
Index 499
inetd daemon 256 ISPTLIB
customizing 345 ISPF ddname 48
Infoprint Server for the z/OS shell 252, 256
alternate version of lp command 315
Information Management System/ESA (IMS/ESA)
batch message processing (BMP) program 319
initialization
J
Japanese
diagnosing hangs during 325
customizing
initializing 45
for the z/OS shell 247
inode
displaying messages 251
mounting file systems 121
issuing messages 252
installation
seeing help panels 252
hardware 6
setting ISPF for 252
preparing RACF 54
Japanese (Latin) extended code page 01027 316
RACF, preparing for 54
Japanese combined code page 00939 316
security program, preparing the 337
JES2
security requirements for 88
relation to z/OS UNIX 319
system parmlib members 20
JES2 maintenance
installation exit
partial shutdown of z/OS UNIX 290
BPX_IMAGE_INIT (process image initiation exit) 380
JES3
BPX_PREPROC_INIT (preprocess initiation) 380
relation to z/OS UNIX 319
BPX_PREPROC_TERM (preprocess termination exit) 380
job control language (JCL)
IEFUJI 421, 422
couple data set format utility 181
IEFUJV 424
job name
IEFUSI 424
checking 422
monitoring process activity 381
job names
preprocess initiation (BPX_PREPROC_INIT) 380
rules used when generating 425
preprocess termination exit (BPX_PREPROC_TERM) 380
jobs
process image initiation exit (BPX_IMAGE_INIT) 380
displaying status of pending 380
installing 11
scheduling 347
internal routing table 409
JoinWorkUnit() WLM interface 86
Interprocess Communication (IPC)
JRENVDIRTY reason code 358
managing 313
IOEFSCM module name
customizing in FILESYSTYPE 27
IPCMSGNIDS statement K
dynamically changing 299 kernel 45
IPCS checking status of 16
in formatting dumps 324 displaying address space 308
IPCSEMNIDS statement displaying status of 305
dynamically changing 299 failure 312
IPCSHMGPAGES statement taking dump of a 308
dynamically changing 299 keyboard
IPCSHMNIDS statement navigation 445
dynamically changing 299 PF keys 445
IPv4 shortcut keys 445
setting up 28
IPv6
setting up 28
ISPBTCH 118
L
l extended attribute 96
ISPF 6
language
customizing the menu 48
customizing
managing zFS file systems 116
for the z/OS shell 247
setting to display Japanese 252
Language Environment
shell 10
runtime library (SCEERUN)
tasks 10
putting in LNKLST 384
ISPF TSO Command Table (ISPTCM)
putting into LLA 384
customizing 50
runtime routines 383
ISPMLIB
SCEERUN
ISPF ddname 48
using 319
for the z/OS shell 252, 256
SCEERUN2
ISPPLIB
using 319
ISPF ddname 48
selecting previous compilers 240
for the z/OS shell 252, 256
UNIT=SYSDA 240
ISPTCM (ISPF TSO Command Table)
using STEPLIB to export 403
customizing 50
using the same compiler 240
Index 501
messages (continued) mounting (continued)
FSUM 322 zFS data sets 117
IGD 322 considerations for 118
writing to job log multilevel security
using _BPXK_JOBLOG 323 automount issues 163
migrating HFS file system 103
/etc file system 12 using 102
migrating to new releases 11 zFS file system 103
minimum mode multiple sockets
determining 16 activating for first time 302
explanation of 15 multithreaded server 366
switching to full function mode 15 MVS Message Service (MMS)
mixed-case password and password phrase activating 251
support for 53
MKDIR keyword
defining multiple mount points 29
mkdir shell command 150
N
national code page
MKDIR TSO/E command 150
customizing 247
MKNOD TSO/E command
navigation
specifying pseudo-TTY files with 153
keyboard 445
mmap() 18
nested ACEE
MMAPAREAMAX 68
creating 432
MMAPAREAMAX statement
NETSTAT command (TSO command) 309
specifying in BPXPRMxx 31
netstat command (z/OS UNIX command) 309
MMAPSIZE parameter 32
network
mode
connections for z/OS UNIX 7
goal
UCP 257
running in 19
Network File System (NFS) 6
MODIFY command
assigning UIDs and GIDs 69
ending processes 285
BPAM access 133
ending threads 287
customizing in FILESYSTYPE 27
FORCE parameter 286
managing files 116
SUPERKILL parameter 286
mounting data sets 163
TERM parameter 286
NETWORK statement
module
customizing in BPXPRMxx 28
not defined to program control 358
NFS Client
monitor
colony address space 45
processing 375
defining colony address spaces 57
shell processing 375
mounting in a sysplex 212
mount
using supplemental groups for remote communication 59
direct 148
nice()
mount authority 123
enabling 391
MAXUSERMOUNTSYS 124
prioritizing kernel work 19
MAXUSERMOUNTUSER 124
NOAUTOMOVE parameter in BPXPRMxx 186
privileged mount 123, 124
non-canonical mode 8
privileged unmount 123, 124
non-sysplex aware file systems 203
mount authorization 123
non-sysplex aware for read-only 203
MOUNT command
NONEMPTYMOUNTPT statement
AUTOMOVE options 207
customizing in BPXPRMxx 36
mount mode
nonprivileged mount 124
remounting 143
MAXUSERMOUNTSYS 124
mount point
MAXUSERMOUNTUSER 124
defining multiple 28, 29
nonprivileged unmount 124
mount processing
MAXUSERMOUNTSYS 124
/// used as placeholder 118, 123
MAXUSERMOUNTUSER 124
MOUNT statement
Notices 449
customizing in BPXPRMxx
NUUCP user ID
defining multiple mount points 28
for ServerPac and CBPDO installation 261
mounting 123
file systems
logical 119
root 155 O
in a shared file system 164 OBROWSE TSO/E command
NFS data sets 163 putting in ISPF menu 48
restrictions 127 OEDIT TSO/E command
security considerations 123 putting in ISPF menu 48
user file systems directly 148
Index 503
problems
re-creating for IBM service 305
R
process RACF (Resource Access Control Facility)
child 3 classes
displaying information about 309 activating 41
displaying status of 305 description of 5
ending 285, 287 establishing 53
group ID (PGID) GIDs, caching 384
accounting for 419 installing 54
parent 3 UIDs, caching 384
process activity user profile, OMVS segment
monitoring 380 field level access 66
tuning 389 verifying users 58
process ID (PID) RACF user profile
used for dump naming 324 customizing
process image initiation exit (BPX_IMAGE_INIT) 380 for z/OS shell 219
process limits raw mode 8
changing 400 RDEFINE RACF command
displaying 399 defining a field profile with 66
explanation of 392 reason codes 322
setting 396 JRENVDIRTY 358
steps for 397 recovery
using IEFUSI exit 398 file system 312
processing file system type 312
z/OS UNIX System Services 312
managing 315 remote locations
relation to other processing 319 executing commands from, with UUCP 255
PROCUSERMAX 68 remote system
PROFILE PLANGUAGE setting 252 UUCP
program access to data sets (PADS) 343 configuring communication with 262
program control creating working directories 273
checking in UNIX files 340 report class
defining modules to 338 defining 20
dirty address space 342 Resource Measurement Facility (RMF) 5
enhanced program security 342 defining 90
finding modules not defined to 358 Resource Measurement Facility (RMF) Monitor III Gatherer
using sanction lists 340 defining 90
program control extended attribute resource name
in files 64 RESTRICTED.FILESYS.ACCESS 74
marking files with the 339 SHARED.IDS 74
setting 84 SUPERUSER.FILESYS.ACLOVERRIDE 74
program security SUPERUSER.FILESYS.MOUNT 73
setting up 343 SUPERUSER.FILESYS.PFSCTL 73
PROGxx member SUPERUSER.FILESYS.QUIESCE 73
tuning 384 SUPERUSER.FILESYS.USERMOUNT 75, 124
protected resources SUPERUSER.FILESYS.VREGISTER 73
checking authority for using 367 SUPERUSER.IPC.RMID 73
protected user ID SUPERUSER.PROCESS.GETPSENT 73
defining 69 SUPERUSER.PROCESS.KILL 73
ps shell command SUPERUSER.PROCESS.PTRACE 73
displaying processes with 305 SUPERUSER.SETPRIORITY 73
pseudo-TTY resources
specifying 153 collecting usage data 375
ptrace response time
debugging TSO/E 404
APF-authorized programs 83 restarting
programs with BPX.SERVER authority 83 daemons 351
public UUCP directory 259 RESTRICTED.FILESYS.ACCESS 74
PWT BPXPRMxx statement 36 return code 322
EMVSPFSFILE 312
EMVSPFSPERM 312
REXX exec
Q BPXISETS
QuerySchedEnv() WLM interface 86 converting /etc to symbolic link 180
BPXISYS1 178
BPXISYS2 179
rlogin
problem determination 362
Index 505
SET OMVS command (continued) shell (continued)
for a process 297 improving performance of
executing MOUNT, FILESYSTYPE, SUBFILESYSTYPE, and using _BPX_SHAREAS 402
NETWORK statements 298, 300 using _BPX_SPAWN_SCRIPT 402
RESET operand 298 initialization of 215
switching to different BPXPRMxx members invoking the 215
dynamically 300 automatically 215
set-group-ID with OMVS command 215
of executable file setting up 215
creating 93 starting daemon from the 351
set-user-ID starting in background environment 351
of executable file supplying installation-provided shell 217
creating 93 SHMEMMAX parameter 32, 68
SETOMVS command shortcut keys 445
activating sanction lists 106 shutdown
changing values of BPXPRMxx parameters 297 partial 290
for a process 297 planned 287, 293
SYNTAXCHECK operand 23 shared file system implications 209
SETOMVS RESET command shutting down
changing values of BPXPRMxx parameters 297 partial, for JES2 maintenance 290
dynamically adding physical file systems to system before an IPL 293
BPXPRMxx 300 shutting down z/OS UNIX
SETOMVS SYNTAXCHECK command 26 using F BPXOINIT,SHUTDOWN 288
SETOMVS SYNTAXCHECK=parmlibmember 28, 29 SID (session ID)
setpriority() accounting for 419
enabling 391 SIGDUMP signal 325
prioritizing kernel work 19 signal
SETROPTS RACF command SIGDUMP 325
activating field access with 66 Simplified Chinese
Setup Verification Program (SVP) 51 customizing
Share Reservations 205 for the z/OS shell 247
shared address space 96 single sockets
extended attributes 402 activating for first time 301
shared file system single stack
automount facility 164 See INET 408
availability 202 single-byte data
customizing BPXPRMxx 185 converting 317
definition of 173 single-threaded server 366
description of 173 skulker shell script
DFS considerations 213 removing files from directories 134
exporting by DFS 213 slave file
exporting by SMB 213 for pseudo-TTY
file system clients 203 specifying 153
file system owner 203 SMB (server message block)
implications during recovery 206 exporting considerations 213
interruptions to file availability 204 SMFPRMxx parmlib member
mounting 164 customizing the 44
non-sysplex aware file systems 203 used in JWT 4
non-sysplex aware for read-only 203 SMP/E
setting up 178, 202 running 79
sysplex aware for read-only 204 sockets
sysplex aware for update file system 203 activating
using TFS 332 multiple 302
shared HFS single 301
renamed to shared file system 173 AF_INET 405
shared library extended attribute 341, 387 AF_INET6 405
shared library object 96 binding to a specific 413
shared library program CINET 405
defining files as 341 connecting through a specific transport 414
shared memory mutexes considerations for a file system 153
displaying latch contention 310 INET 405
SHARED.IDS 68, 73 MAXSOCKETS 302
assigning UIDs to multiple users 68 processing for
when UID(0) is assigned 82 common INET (CINET) 411
shell specifying maximum number of 302
customizing TCP/IP security setup 111
z/OS 217 UNIX domain 154
Index 507
syslogd daemon system limits (continued)
starting from the shell 351 managing 388
SYSMDUMP system list
dynamically requesting a 325 using 191
specifying 43 System Managed Storage (SMS)
SYSOMVS parameter value for file systems 114
DISPLAY TRACE command 307 used in full function mode 15
TRACE command 304 used in minimum mode 15
sysout (system output data set) system management facilities (SMF) 4
print separator for output 316 managing accounting for UNIX workloads 419
sysplex obtaining data 375
automount policy 201 record type 30 375
BPXISYS1 REXX exec 178 record type 34
BPXISYSR sample job 178 preventing 376
byte range lock manager (BRLM) 211 record type 35
character special files 152 preventing 376
couple data set (CDS) 182 record type 74 376
cross system coupling facility (XCF) 182 record type 80 376
customizing BPXPRMxx for a shared file system 185 record type 92 376
DFS considerations 213 user application support 375
exporting by DFS 213 web server 375
exporting by SMB 213 system output data set (sysout)
FIFO special files 152 print separator for output 316
file lock 211 system programmer
moving file systems in a back-level sysplex 205 in z/OS UNIX 1
moving file systems in a sysplex 204 system queue area (SQA) 17
NFS client mounts 212 system-shared library programs 387
sharing file systems 179 system-wide limits
signaling services 213 explanation of 392
SMB considerations 213 Systems file, UUCP 264
symbolic links 180 systems network architecture (SNA) 7
sysplex root 178 SYSZDSN 135
UNIX domain socket address file 152
unmounting file system 186
version file system
mounting read-only 180
T
talk shell command 69
zFS considerations for 192, 206
setting up 239
sysplex aware for read-only 204
tar command
sysplex aware for update file system 203
limitations of 70
sysplex HFS
target system 157
renamed to sysplex file system 173
task
sysplex root
using ISPF shell 10
creating the 178
tasks
sysplex root file system
activating a single sockets file system for the first time
dynamically replacing with the alternate sysplex root 127
steps for 301
migrating from HFS to zFS 118
activating multiple file systems for the first time with
replacing the 130
Common INET
sysplex-aware
steps for 302
explanation of 187
activating MVS Message Service (MMS)
SYSPROC
steps for 251
ISPF ddname 48
activating sanction lists
SYSROOT 15
steps for 106
system administrator
activating the file system for the first time
in z/OS UNIX 1
steps for 300
System Authorization Facility (SAF)
activating the IEFUJI installation exit
disabling fastpath support for 322
steps for 422
enabling fastpath support for 322
adding another sockets file system to an existing Common
z/OS UNIX services 94
INET configuration
system completion code 322
steps for 304
system console file
assigning UIDs and GIDs
/dev/console 155
steps for 79
/dev/operlog 155
authorizing selected users to transfer file ownership
specifying 154
steps for 76
System Display and Search Facility (SDSF) 5
checking OMVS security information about a group
system limits
steps for 65
defining 29
checking UNIX files for program control
displaying status 307
steps for 340
Index 509
tasks (continued) time limit
tuning for performance CPU
roadmap 383 determining the 217
tuning performance Tivoli Storage Manager
overview 383 backing up files 146
using ACLs TMOUT environment variable
overview 96 used in job wait timeout 44
TCP/IP TRACE command 304
/etc/resolv.conf 417 trace data
AF_INET sockets 29 filtering 305
AF_INET6 29 tracing
configuration files 408 events 304
customizing BPXPRMxx 29 using the CTnBPXxx parmlib members 42
description of 6 tracing events
improving performance with CHECKSUM 6 DFSMS 305
protocol information 416 z/OS UNIX 304
resolver file 417 transfer files between systems with UUCP 255
security setup 111 transport affinity
service information 416 requesting 414
socket considerations transport provider
security setup 111 default 410
user, security setup for 111 transports
tcsh shell displaying network routing information 409
setting up 215 using for common INET (CINET) 413
telnet daemon 4 TSO/E (Time Sharing Option Extensions) 5
temporary file system Japanese messages 252
security 327 seeing translated help panels 252
temporary file system (TFS) seeing translated messages on terminals 252
ACL support 327 TTY group name
BPAM access 327 CS remote terminals 69
cataloged procedure 47 talk and write commands 69
changing the default FSFULL setting 331 tuning
changing the size 331 by updating PROGxx member 384
checking the size 328 c89/cc/cxx/c++ 384
creating 327 parmlib limits 388
determining the default FSFULL setting 331 process activity 389
extending the size 331 processing 375, 383
in a shared file system 332 SYS1.PARMLIB 388
managing 327 z/OS UNIX file system 388
monitoring space in the 331
running in a colony address space 47
running in colony address space 47
SYSROOT 15
U
UDS file system type
term
customizing in FILESYSTYPE 27
z/OS UNIX and z/OS equivalents 1
UID (user ID)
TERM parameter of the MODIFY command 286
assigning 69
terminal character special file
in an NFS network 69
specifying 153
to multiple users 67
terminal connection, UUCP 258
assigning to single users 67
terminal definitions
changing from UID(0) to a nonzero UID 79
terminfo database 243
defining
terminal group name
to RACF 59
defining 69
defining protected 69
terminfo database
description 59
customizing 243
mapping UID to 68
TFS file system type
upper limits 70
customizing in FILESYSTYPE 27
unauthenticated client security environment 367
TGET WAIT 404
Unicode services
thread
Enhanced ASCII considerations 282
customizing the RACF identity of 366
Unicode Services 282
ending 287
enabling 36
setting up 366
setting up 282
THREADSMAX 68
UNIT=SYSDA
tic utility
using a system that doesn't have it 240
customizing 243
UNIX domain socket 154
Index 511
workload manager (WLM) (continued)
prioritizing kernel work 20
response time goals 404
running in goal mode 19
service policies 19
write shell command 69
setting up 239
X
XCF (Cross System Coupling Facility)
initializing 182
XL C/C++ compiler
selecting a previous version 240
setting up c89 241
setting up xlc 242
using the same compiler 240
xlc utility
setting up to work with compiler 242
using the xlc versions of the c89 command names 241
Z
z?OS UNIX checks
for IBM Health Checker for z/OS
USS_FILESYS_MOUNTS 185
z/OS shell
customizing 217
setting up 215
z/OS UNIX checks
for IBM Health Checker for z/OS
USS _HFS_DETECTED 117, 427
USS_AUTOMOUNT_DELAY 427
USS_FILESYS_CONFIG 427
USS_FILESYS_MOUNTS 427
USS_MAXSOCKETS_MAXFILEPROC 427
USS_PARMLIB 23, 427
USS_PARMLIB_MOUNTS 427
z/OS UNIX System Services Application Services
description of 2
zFS (z/OS File System) 6
automount facility 117
automount policy 163
BPAM access 117
determining file system owner 118
differences from HFS 117
file ownership versus z/OS UNIX file ownership 117
generic file system type 118
HFS compatibility mode 117
ISPF shell 116
migrating from HFS 117
using the BPXWH2Z tool 117
mount behavior 118
mounting 123
mounting data sets 117
multilevel security 103
security labels 103
sysplex considerations for 192, 206
ZFS file system type
customizing in FILESYSTYPE 27
zfsadm grow command 133
Printed in USA
GA32-0884-00