zoukankan      html  css  js  c++  java
  • Linux的用户

    添加用户


    添加删除用户

    # useradd user
    # passwd user
    Changing password for user user.
    New password: 
    BAD PASSWORD: it is too short
    BAD PASSWORD: is too simple
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    # userdel user

    删除用户时,留下了主目录和邮件目录。需要清楚目录,需要参数“-r”

    # userdel -r user1

    用脚本方式添加多个用户

    #!/bin/bash
    
    # define vari
    ADDUSER=$(which useradd)
    PASSWD=$(which passwd)
    USER=user
    RES=222
    
    for ((i=1; i<=4; i++))
    do
            $ADDUSER ${USER}${i} &> /dev/null
            RES=$(echo $?)
            if [ $RES -eq 9 ]
            then
                    echo "user ${USER}${i} already exit."
                    continue
            fi
            if [ $RES -eq 0 ]
            then
                    echo "add user ${USER}${i} success."
            fi
    
            echo "${USER}${i}" | $PASSWD --stdin ${USER}${i} &> /dev/null
            RES=$(echo $?)
    
            if [ $RES -eq 0 ]
            then
                    echo "update password for ${user}${i} success."
            fi
    done

      很多时候,需要添加的用户名往往没有规律,借助从一个包含用户名的文件里边读取用户名信息来完成用户名确认。增加输出信息:读取到用户名称,添加成功的用户,、未能添加的用户。

     1 #!/bin/bash
     2 # about return value.
     3 # 1
     4 # 2 without file username.
     5 
     6 # define vari
     7 ADDUSER=$(which useradd)
     8 CAT=$(which cat)
     9 ID=$(which id)
    10 PASSWD=$(which passwd)
    11 USER="./username"
    12 
    13 if [ -r $USER ]
    14 then
    15         echo "Will add $($CAT $USER | wc -l) users to this system."
    16         echo "$($CAT $USER)"
    17         echo "---------------"
    18 else
    19         echo "missing file username."
    20         exit 2
    21 fi
    22 
    23 for user in $(cat $USER)
    24 do
    25         $($ID $user &> /dev/null)
    26         RES=$(echo $?)
    27         if [ $RES == 0 ]
    28         then
    29                 echo "user $user is exist."
    30         else
    31                 $ADDUSER $user &> /dev/null
    32                 if [ $(echo $?) -eq 0 ]
    33                 then
    34                         echo "user $user adds successful."
    35 
    36                         echo "${user}" | $PASSWD --stdin ${user} &> /dev/null
    37 
    38                         RES=$(echo $?)
    39                         if [ $RES -eq 0 ]
    40                         then
    41                                 echo "update password for ${user} success."
    42                         else
    43                                 echo "update password failed."
    44                         fi
    45                 else
    46                         echo "add user $user failed."
    47                 fi
    48         fi
    49 
    50 done

    删除上边脚本建立的用户账户(前题条件:读取的文件“username”内容一致)

     1 #!/bin/bash
     2 # about return value.
     3 # 1
     4 # 2 without file username.
     5 
     6 # define vari
     7 DELUSER="$(which userdel)"
     8 CAT=$(which cat)
     9 ID=$(which id)
    10 PASSWD=$(which passwd)
    11 USER="./username"
    12 USERHOME="/home"
    13 MAILHOME="/var/mail"
    14 LS=$(which ls)
    15 
    16 if [ -r $USER ]
    17 then
    18         echo "Will delete $($CAT $USER | wc -l) users to this system."
    19         echo "$($CAT $USER)"
    20         echo "---------------"
    21 else
    22         echo "missing file username."
    23         exit 2
    24 fi
    25 
    26 for user in $(cat $USER)
    27 do
    28         $($ID $user &> /dev/null)
    29         RES=$(echo $?)
    30         if [ $RES == 0 ]
    31         then
    32                 echo "will delete user $user."
    33                 $DELUSER -r $user &> /dev/null
    34                 RES=$(echo $?)
    35                 if [ $RES -eq 0 ]
    36                 then
    37                         echo "user $user delete successful."
    38                 else
    39                         echo "user $user delete failed."
    40                 fi
    41         else
    42                 echo "user $user is not exist."
    43         fi
    44 done

      这里仅仅是成功运行了脚本,但是添加用户可能比这个脚本所预想的复杂。比如,建立一个用户,删除时没有带选项“-r”,而后又重新建立同名用户。再一次删除时,该账户下的某些目录无法删除,这个问题没有在该脚本里得到完美解决。

     

      使用脚本的位置变量控制脚本运行结果。位置变量是“add”,完成用户添加;是“del”,完成用户删除。

      1 #!/bin/bash
      2 
      3 # define functions
      4 # adduser() add users from file username to the system, their password is same as user name.
      5 # deluser() delete users from file username from the system.
      6 
      7 adduser()
      8 {
      9 # about return value.
     10 # 1 without file username when add users.
     11 
     12 # define vari
     13 local ADDUSER=$(which useradd)
     14 local CAT=$(which cat)
     15 local ID=$(which id)
     16 local PASSWD=$(which passwd)
     17 local USER="./username"
     18 
     19 if [ -r $USER ]
     20 then
     21         echo "Will add $($CAT $USER | wc -l) users to this system."
     22         echo "$($CAT $USER)"
     23         echo "---------------"
     24 else
     25         echo "missing file username."
     26         exit 2
     27 fi
     28 
     29 for user in $(cat $USER)
     30 do
     31         $($ID $user &> /dev/null)
     32         RES=$(echo $?)
     33         if [ $RES == 0 ]
     34         then
     35                 echo "user $user is exist."
     36         else
     37                 $ADDUSER $user &> /dev/null
     38                 if [ $(echo $?) -eq 0 ]
     39                 then
     40                         echo "user $user adds successful."
     41 
     42                         echo "${user}" | $PASSWD --stdin ${user} &> /dev/null
     43 
     44                         RES=$(echo $?)
     45                         if [ $RES -eq 0 ]
     46                         then
     47                                 echo "update password for ${user} success."
     48                         else
     49                                 echo "update password failed."
     50                         fi
     51                 else
     52                         echo "add user $user failed."
     53                 fi
     54         fi
     55 
     56 done
     57 }
     58 
     59 deluser()
     60 {
     61 # about return value.
     62 # 2 without file username when delete users.
     63 
     64 # define vari
     65 local DELUSER="$(which userdel)"
     66 local CAT=$(which cat)
     67 local ID=$(which id)
     68 local PASSWD=$(which passwd)
     69 local USER="./username"
     70 local USERHOME="/home"
     71 local MAILHOME="/var/mail"
     72 local LS=$(which ls)
     73 
     74 if [ -r $USER ]
     75 then
     76         echo "Will delete $($CAT $USER | wc -l) users from the system."
     77         echo "$($CAT $USER)"
     78         echo "---------------"
     79 else
     80         echo "missing file username."
     81         exit 2
     82 fi
     83 
     84 for user in $(cat $USER)
     85 do
     86         $($ID $user &> /dev/null)
     87         RES=$(echo $?)
     88         if [ $RES == 0 ]
     89         then
     90                 echo "will delete user $user."
     91                 $DELUSER -r $user &> /dev/null
     92                 RES=$(echo $?)
     93                 if [ $RES -eq 0 ]
     94                 then
     95                         echo "user $user delete successful."
     96                 else
     97                         echo "user $user delete failed."
     98                 fi
     99         else
    100                 echo "user $user is not exist."
    101         fi
    102 done
    103 }
    104 
    105 # return value
    106 # 3 Command syntax error
    107 if [ $# -ne 1 ]
    108 then
    109         echo -e "Usage: user.sh ARG
     type: user.sh -h
    "
    110         exit 3
    111 fi
    112 
    113 if [ $1 == 'add' ]
    114 then
    115         adduser
    116         exit 0
    117 fi
    118 
    119 if [ $1 == 'del' ]
    120 then
    121         deluser
    122         exit 0
    123 fi

    指定用户的特定信息

    指定家目录:添加用户“sunny”,家目录是“/data01/hhh/”。

    useradd -d /data01/hhh sunny

    指定基础目录:添加用户“sunny”,家目录是“/data01/sunny”。

    useradd -b /data01/ sunny

    添加一个不让登陆系统的用户

    useradd -s /sbin/nologin work

    创建一个没有家目录的用户

    useradd -M nginx
    useradd -r nginx

    为某个应用建立一个执行用户

    useradd -r -s /sbin/nologin nginx

     

    用户管理


    * 手工完成用户的创建

    * 使用命令完成用户的创建

    手工完成用户的创建

    group

    manager:x:800:

    passwd

    view:x:810:800::/home/view:/bin/bash

    dinglicom:x:811:800:/home/dinglicom:/bin/bash

    shadow

    view:!!:16358:0:99999:7:::

    dinglicom:!!:16358:0:99999:7:::

    “!!”表示锁定状态;需要创建密码

    # passwd view
    # passwd dinglicom

     

    /home

    # cd /home
    # mkdir view
    # mkdir dinglicom
    # cp -R /etc/skel/* /home/view
    # cp -R /etc/skel/* /home/dinglicom
    
    # chown -R view:manager /home/view
    # chown -R dinglicom:dinglicom /home/dinglicom
    # chmod -R 700 /home/view
    # chmod -R 700 /home/dinglicom

    使用命令完成用户的创建

    # groupadd -g 800 manager
    # useradd -u 810 -d /home/view -c "Dinglicom viewers." -g manager -G ftp -s /bin/bash view
    # useradd -u 810 -d /home/view -c "Dinglicom viewers." -g 800 -G ftp -s /bin/bash view
    # passwd view
    # groupmod -g 801 manager
    # usermod -u 811 -g 801 view
    # usermod -a http view
    # id view
    # usermod -L view
    # cat /etc/shadow | grep view
    # usermod -U view

    useradd:

    -u,指定UID(大于500)

    -g,指定GID(需要是已存在的组;基本组)

    -G,附件组(逗号隔开多个组)

    # useradd -G root,ftp,http admin

    -c,注释信息

    -d,指定家目录

    -s,指定shell路径(/etc/shells)

    userdel:

    -r,删除用户的时候,同时删除家目录

    usermod:

    -u,

    -g,

    -G -a,

    -c,

    -d,

    id:

    -n,不现实数字信息

    -g,显示GID

    -G,显示附件组信息

    -u,显示UID

    用户信息相关的文件


     * group

    * passwd

    * shadow

    * useradd

    group

    “组名:密码占位符:组ID:用户列表

    # cat /etc/group
    root:x:0:
    dba:x:501:oracle

    1.1 组名

    1.2 组密码(历史遗留)

    1.3 组ID

    1.4 组成员

     

    passwd

    # cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    oracle:x:500:500::/home/oracle:/bin/bash

    2.1 用户名

    2.2 密码

    2.3 用户ID

    2.4 主要组ID

    2.5 说明、注释(允许为空)

    2.6 用户主目录

    2.7 用户shell信息

     

    shadow

    (root的密码不是真实的)

    # cat /etc/shadow
    root:$6$bu74FgD1S4fWkODOCyScBlTW1:16358:0:99999:7:::
    oracle:!!:16358:0:99999:7:::

    3.1 用户名

    3.2 密码(加密算法、掺杂、最终密码特征码)

    3.3 最后一次修改密码的天数(相对于生日来说的-19700101)

    3.4 密码最小寿命、经过几天可以自行修改密码(0表示随时可以修改)

    3.5 密码最大寿命、经过几天必须重新修改密码(设定密码到期时间)    (99999)

    3.6 密码到期前几天开始提醒修改密码                (7)

    3.7 密码到期后,账户被取消的天数

    3.8 从创建账户开始,经过几天取消账户(默认为空,表示账户永不过期)

    3.9 保留

     

    生成配置文件

    # cd /home/oracle
    # ls -a
    .  ..  .bash_logout  .bash_profile  .bashrc
    # cd /etc/skel
    # ls -a
    .  ..  .bash_logout  .bash_profile  .bashrc

     
    useradd

    [root@hp430G2 default]# cat /etc/default/useradd 
    # useradd defaults file
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes

    特殊权限

      suid

      sgid

      sticky

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/argor/p/7918794.html
Copyright © 2011-2022 走看看