====== File Mode Creation Mask ====== A change of the file mode creation mask on our server infrastructure \\ was requested to ease cross-user file and directory access automatically. The default permission on Linux systems for newly created files is 777 and 666 \\ for directories. Setting the user's file mode creation mask is accomplished by umask following the standard pattern //user group other//. However, the user file mode creation mask **M** passed to umask acts on \\ the default permission mask **D** via //bitwise negation//: D & (~M) Hence, all bits set in **M** will be //disabled// in the resulting file mode creation mask. To check the currently set umask simply type umask without argument. ==== Example ==== umask **002** --> results in a file creation mask **775** and **664** for directories.\\ umask **022** --> results in a file creation mask **755** and **644** for directories. ===== Why Changing the User File Mode Creation Mask? ===== New files created on our Linux servers, e.g. sdlx014, have file permissions 755,\\ (or 644 for directories) as the standard umask is set to (0)022 and a group ownership\\ according to the //primary group// of the user creating the file. Our infrastructure usually sets the primary group to **sd**.\\ The primary group of a specific user can be queried via id -g -n With a default umask of 022 users in group sd are allowed to read files and directories\\ of other group members but are not able to alter files or create files in directories.\\ This sometimes clashes with FESA builds and deployments among different users, thus,\\ changing the umask seems reasonable, in particular on //sdlx014// and //asl73x//.\\ A user mask of 002, or better 007 (//others// can't read and alter files), solves this issue. ===== Setting umask globally ====== Globally setting umask is dependent on the distribution and requires adminstration\\ privileges on the particular machine. In our case, using RHELx manually changing /etc/bashrc is required, otherwise the umask is overwritten with the default umask 022. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi On sdlx014 the line umask 022 has been changed to umask 002 This automatically sets umask to 002 on login. ===== Servers we don't have root access to ====== On machines adminstrated by CSCO, we can't apply a custom global umask.\\ However, a user can specify an automatic umask on login in ~/.bashrc\\ by simply adding umask 002