添加用户


添加删除用户

# 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= for ((i=; i<=; i++))
do
$ADDUSER ${USER}${i} &> /dev/null
RES=$(echo $?)
if [ $RES -eq ]
then
echo "user ${USER}${i} already exit."
continue
fi
if [ $RES -eq ]
then
echo "add user ${USER}${i} success."
fi echo "${USER}${i}" | $PASSWD --stdin ${USER}${i} &> /dev/null
RES=$(echo $?) if [ $RES -eq ]
then
echo "update password for ${user}${i} success."
fi
done

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

 #!/bin/bash
# about return value.
#
# without file username. # define vari
ADDUSER=$(which useradd)
CAT=$(which cat)
ID=$(which id)
PASSWD=$(which passwd)
USER="./username" if [ -r $USER ]
then
echo "Will add $($CAT $USER | wc -l) users to this system."
echo "$($CAT $USER)"
echo "---------------"
else
echo "missing file username."
exit
fi for user in $(cat $USER)
do
$($ID $user &> /dev/null)
RES=$(echo $?)
if [ $RES == ]
then
echo "user $user is exist."
else
$ADDUSER $user &> /dev/null
if [ $(echo $?) -eq ]
then
echo "user $user adds successful." echo "${user}" | $PASSWD --stdin ${user} &> /dev/null RES=$(echo $?)
if [ $RES -eq ]
then
echo "update password for ${user} success."
else
echo "update password failed."
fi
else
echo "add user $user failed."
fi
fi done

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

 #!/bin/bash
# about return value.
#
# without file username. # define vari
DELUSER="$(which userdel)"
CAT=$(which cat)
ID=$(which id)
PASSWD=$(which passwd)
USER="./username"
USERHOME="/home"
MAILHOME="/var/mail"
LS=$(which ls) if [ -r $USER ]
then
echo "Will delete $($CAT $USER | wc -l) users to this system."
echo "$($CAT $USER)"
echo "---------------"
else
echo "missing file username."
exit
fi for user in $(cat $USER)
do
$($ID $user &> /dev/null)
RES=$(echo $?)
if [ $RES == ]
then
echo "will delete user $user."
$DELUSER -r $user &> /dev/null
RES=$(echo $?)
if [ $RES -eq ]
then
echo "user $user delete successful."
else
echo "user $user delete failed."
fi
else
echo "user $user is not exist."
fi
done

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

 

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

 #!/bin/bash

 # define functions
# adduser() add users from file username to the system, their password is same as user name.
# deluser() delete users from file username from the system. adduser()
{
# about return value.
# without file username when add users. # define vari
local ADDUSER=$(which useradd)
local CAT=$(which cat)
local ID=$(which id)
local PASSWD=$(which passwd)
local USER="./username" if [ -r $USER ]
then
echo "Will add $($CAT $USER | wc -l) users to this system."
echo "$($CAT $USER)"
echo "---------------"
else
echo "missing file username."
exit
fi for user in $(cat $USER)
do
$($ID $user &> /dev/null)
RES=$(echo $?)
if [ $RES == ]
then
echo "user $user is exist."
else
$ADDUSER $user &> /dev/null
if [ $(echo $?) -eq ]
then
echo "user $user adds successful." echo "${user}" | $PASSWD --stdin ${user} &> /dev/null RES=$(echo $?)
if [ $RES -eq ]
then
echo "update password for ${user} success."
else
echo "update password failed."
fi
else
echo "add user $user failed."
fi
fi done
} deluser()
{
# about return value.
# without file username when delete users. # define vari
local DELUSER="$(which userdel)"
local CAT=$(which cat)
local ID=$(which id)
local PASSWD=$(which passwd)
local USER="./username"
local USERHOME="/home"
local MAILHOME="/var/mail"
local LS=$(which ls) if [ -r $USER ]
then
echo "Will delete $($CAT $USER | wc -l) users from the system."
echo "$($CAT $USER)"
echo "---------------"
else
echo "missing file username."
exit
fi for user in $(cat $USER)
do
$($ID $user &> /dev/null)
RES=$(echo $?)
if [ $RES == ]
then
echo "will delete user $user."
$DELUSER -r $user &> /dev/null
RES=$(echo $?)
if [ $RES -eq ]
then
echo "user $user delete successful."
else
echo "user $user delete failed."
fi
else
echo "user $user is not exist."
fi
done
} # return value
# Command syntax error
if [ $# -ne ]
then
echo -e "Usage: user.sh ARG\n type: user.sh -h\n"
exit
fi if [ $ == 'add' ]
then
adduser
exit
fi if [ $ == 'del' ]
then
deluser
exit
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  manager
# useradd -u -d /home/view -c "Dinglicom viewers." -g manager -G ftp -s /bin/bash view
# useradd -u -d /home/view -c "Dinglicom viewers." -g -G ftp -s /bin/bash view
# passwd view
# groupmod -g manager
# usermod -u -g 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::
dba:x::oracle

1.1 组名

1.2 组密码(历史遗留)

1.3 组ID

1.4 组成员

passwd

# cat /etc/passwd
root:x:::root:/root:/bin/bash
oracle:x::::/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:$$bu74FgD1S4fWkODOCyScBlTW1:::::::
oracle:!!:::::::

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=
HOME=/home
INACTIVE=-
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

特殊权限

  suid:

  sgid:

  sticky:

Linux的用户的更多相关文章

  1. 【转】linux 设置用户id 设置组id

    linux 设置用户id 设置组id   转自 linux 设置用户id 设置组id   最近看apue,简单记录对设置用户id理解(设置组id同理). 1. 相关的id好像很多,共有哪些? 文件2个 ...

  2. Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  3. Linux给用户添加sudo权限

    一.linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be ...

  4. Linux跨用户copy文件

    foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root ...

  5. linux 下用户管理

    linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...

  6. linux建立用户 详细

    .你同时属于两个或两个以上的组. 两个条件你至少具备一个,你才能够把文件所属旧组变为新组.使用如下的命令将当前目录下所有html文件所属的组改为httpd: chgrp httpd *.html 和c ...

  7. linux创建用户和用户组

    Linux创建用户.用户组 及 删除 在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组users,例 ...

  8. 通过登入IP记录Linux所有用户登录所操作的日志

    通过登入IP记录Linux所有用户登录所操作的日志 对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作 ...

  9. Linux查看用户和组命令

    在Linux系统里,我们会经常用Linux查看用户的命令,在这里我们一些命令进行了总结,总共有7个,并做了详细的解释,以便让大家更深入的理解,接下来让我们一起来看看这些命令和具体应用. 一.Linux ...

  10. 用Bash脚本将Linux普通用户添加为系统管理员

    将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...

随机推荐

  1. CentOS7创建本地yum源

    [root@master ~]# mkdir -p /var/www/html 使用安装系统的ISO镜像文件CentOS-7-x86_64-Everything-1611.iso 把CentOS-7- ...

  2. Usbhub驱动编译

    在3g 4g的usb驱动基础上,加入以下部分,就可以驱动hub了 kmod-usb-hid 3.3.8-1 kmod-usbip 3.3.8-1 kmod-usbip-client 3.3.8-1 k ...

  3. ubuntu 16.04 安装VS CODE时 此软件来自第三方且可能包含非自由组件

    先安装gdebi: sudo apt-get install gdebi 然后执行: sudo apt install ./vscode.deb

  4. XBOX360更新游戏封皮(FSD自制系统)

    第一步,请记下上图左下角的IP地址第二步,打开电脑IE浏览器,输入“第二步”你记下的IP地址“回车”然后,就如下图所示了. 输入账号:f3http 密码:f3http 进入,然后你就进到你的360 F ...

  5. 解决js输出汉字乱码问题

    当我们需要使用js输出汉字时,偶然会出现输出的中文汉字乱码的情况,在网上收了很多解决方案 1.在mata中加 <meta content="text/html; charset=utf ...

  6. html json 导出Excel

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. go学习day1

    go语言特性 1.垃圾回收 a.内存自动回收,再也不需要开发人员管理内存 b.开发人员专注业务实现,降低了心智负担 c.只需要new分配内存,不需要释放 2.天然并发 a.从语言层面支持并发,非常简单 ...

  8. hadoop MapReduce —— 输出每个单词所对应的文件

    下面是四个文件及其内容. 代码实现: Mapper: package cn.tedu.invert; import java.io.IOException; import org.apache.had ...

  9. 【ZZ】C++11之统一初始化语法 | 桃子的博客志

    C++11之统一初始化语法 | 桃子的博客志 https://taozj.net/201710/list-initialize.html 在当前新标准C++11的语法看来,变量合法的初始化器有如下形式 ...

  10. 廖雪峰Java1-3流程控制-9break、continue

    break跳出循环 int sum=0; for(int i=1; ;i++) { sum =sum + i; if(i == 100) { break; } } System.out.println ...