Redhat Enterprise Linux下创建用户规范操作

之前在安装一些软件,创建用户时,经常遇到这样一个小问题:创建文件系统:root# fdisk /dev/sdd  n -> 1 -> wroot# mkfs.ext3 /dev/sdd1root# mkdir -p /approot# mount /dev/sdd1 /app在使用-d参数指定用户HOME目录到新创建的文件系统时,报用户目录已存在,无法拷贝/etc/skel下的隐藏文件到用户HOME目录,例如:root# groupadd oinstallroot# useradd -g oinstall -d /app oracleuseradd: warning: the home directory already exists.Not copying any file from skel directory into it.按说,这里提示的已经很明显了,就是/app目录已经存在,无法创建(默认即会创建)用户HOME目录,/etc/skel下的隐藏文件也不会拷贝到-d执行的目录下,不过一直没引起我的注意,而且只是认为操作不规范,加上某个参数就可以了。当时遇到的次数少时,只是手工拷贝/etc/skel下的隐藏文件到-d 参数指定的用户HOME目录下,并无真正的去分析原因。例如:root# cp /etc/skel/.* /app root# chown -R oracle:oinstall /app时至今日,又遇到时,明显感觉,这个小问题一定要认真分析一下,找到原因。当我现在明白的时候,准备写篇文章时,才意识到,这个问题其实就不该产生,就是操作不规范,而且提示信息已经很明显了:root# mkdir -p /approot# mount /dev/sdd1  /approot# useradd -g oinstall -d /app oracleuseradd: warning: the home directory already exists.Not copying any file from skel directory into it.-d 参数后面跟的目录如果不存在,useradd执行完即会创建,与mkdir -p的效果相同。如果-d 参数后面跟的目录存在,则会抛出上面的信息,同时,/etc/skel下的隐藏文件也不会拷贝到-d 参数指定的用户HOME目录下。Note:a. 像这种情况,应该使用 -b /app 替换 -d /app,-b /app的效果就是在一个已经存在的/app目录下创建一个与用户名同名的目录,作为用户的HOME目录(HOME_DIR).b. 默认情况下,如果执行useradd命令时,未手工修改-b参数(BASE_DIR)的参数值,默认-b(BASE_DIR)参数的参数值为:/home,这也就是为什么useradd命令不加-d或-b参数时,能够在/home目录下创建用户HOME目录(HOME_DIR)的原因,当然,你可以执行下面的命令查看-b(BASE_DIR)参数的参数值:root# useradd -Dorroot# more /etc/default/useradd规范的操作应该是(2选1):1.使用-d参数直接指定用户HOME目录(HOME_DIR)root# mkdir -p /approot# mount /dev/sdd1  /approot# useradd -g oinstall -d /app/oracle oracle2.使用-b参数指定用户HOME目录的起始目录(BASE_DIR)root# mkdir -p /approot# mount /dev/sdd1  /approot# useradd -g oinstall -b /app oracle这两种方法效果是相同的,结果都会将oracle用户的HOME目录设定在/app/oracle下,而且执行完成后均无需使用chown修改文件系统权限。只是 -d 参数后面指定的目录必须是不存在的, -b 参数后面指定的目录必须是存在的。如果你非要用-d 参数将用户的HOME目录指定到一个存在的目录时,就只能忍受上面的信息,手工拷贝/etc/skel下的隐藏文件到-d 参数指定的用户HOME目录下。人类的习惯是可怕的,重复一个错误的习惯那就更加可怕了。

相关文章:

你感兴趣的文章:

标签云: