zoukankan      html  css  js  c++  java
  • 安装Oracle,新建组、用户的时候的一个错误

    [root@localhost /]# mkdir -p /u01/oracle
    [root@localhost /]# useradd -g oinstall -G dba -d /u01/oracle/ oracle
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    而且/u01/oracle目录下没有任何文件。
     
    解决方法:
     
    网上查了一下,方法各式各样。我觉得这个方法还是简单些。
    不要手动建oracle目录。
    [root@localhost /]# mkdir /u01
    [root@localhost ~]# useradd -g oinstall -G dba -d /u01/oracle oracle
    Creating mailbox file: File exists
    [root@localhost ~]# ll -a /u01/oracle/
    total 32
    drwx------. 4 oracle oinstall 4096 Aug 10 19:41 .
    drwxr-xr-x. 3 oracle oinstall 4096 Aug 10 19:41 ..
    -rw-r--r--. 1 oracle oinstall   18 May 30 12:58 .bash_logout
    -rw-r--r--. 1 oracle oinstall  176 May 30 12:58 .bash_profile
    -rw-r--r--. 1 oracle oinstall  124 May 30 12:58 .bashrc
    -rw-r--r--. 1 oracle oinstall  500 Jan 23  2007 .emacs
    drwxr-xr-x. 2 oracle oinstall 4096 Nov 11  2010 .gnome2
    drwxr-xr-x. 4 oracle oinstall 4096 Aug 10 17:32 .mozilla
     
    原因:
     
    系统添加用户的标准步骤
    1.编辑/etc/passwd与/etc/group
    2.创建用户主目录
    3.从/etc/skel拷贝文件与目录
    4.让新用户获得其主目录与文件的拥有权限
    5.给新用户一个密码
     
    查useradd代码:
    static void create_home (void)
    {
        if (access (user_home, F_OK) != 0) {
    #ifdef WITH_SELINUX
            selinux_file_context (user_home);
    #endif
            /* XXX - create missing parent directories. --marekm */
            if (mkdir (user_home, 0) != 0) {
                fprintf (stderr,
                 _("%s: cannot create directory %s
    "),
                 Prog, user_home);
    #ifdef WITH_AUDIT
                audit_logger (AUDIT_ADD_USER, Prog,
                 "adding home directory",
                 user_name, (unsigned int) user_id,
                 SHADOW_AUDIT_FAILURE);
    #endif
                fail_exit (E_HOMEDIR);
            }
            chown (user_home, user_id, user_gid);
            chmod (user_home,
             0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
            home_added = true;
    #ifdef WITH_AUDIT
            audit_logger (AUDIT_ADD_USER, Prog,
             "adding home directory",
             user_name, (unsigned int) user_id,
             SHADOW_AUDIT_SUCCESS);
    #endif
    #ifdef WITH_SELINUX
            /* Reset SELinux to create files with default contexts */
            setfscreatecon (NULL);
    #endif
        }
    }
    
    int main(int argc, char *argv[])
    {
                  ................
                    create_home ();
                    if (home_added)
                            copy_tree (def_template, user_home, user_id, user_gid);
                    else
                            fprintf (stderr,
                                     _
                                     ("%s: warning: the home directory already exists.
    "
                                      "Not copying any file from skel directory into it.
    "),
                                     Prog);
    
                     ......................
                 }
    View Code

    前先不建/u01/oracle,  报错 是因为        if (mkdir (user_home, 0)) { 相当于没有参数  -p 的mkdir /u01/oracle
    建了/u01/oracle 有useradd:警告:此主目录已经存在。
    不从 skel 目录里向其中复制任何文件 是因为 if (access (user_home, F_OK)) { 这个 /u01/oracle目录已经存在
    所以只有只指定不含子路径的时候才能没有警告出现

     
    结合代码可以看到网上找到另个解决方法是:
    依旧使用上面的脚本建用户,然后手动拷贝配置文件到/u01/oracle下。
    cp /etc/skel/.bash_profile     /u01/oracle
    cp /etc/skel/.bashrc     /u01/oracle
    cp /etc/skel/.bash_logout     /u01/oracle
    

     

    这样既可。

  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/stemon/p/4459355.html
Copyright © 2011-2022 走看看