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= 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的用户的更多相关文章
- 【转】linux 设置用户id 设置组id
linux 设置用户id 设置组id 转自 linux 设置用户id 设置组id 最近看apue,简单记录对设置用户id理解(设置组id同理). 1. 相关的id好像很多,共有哪些? 文件2个 ...
- Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...
- Linux给用户添加sudo权限
一.linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file. This incident will be ...
- Linux跨用户copy文件
foo用户home目录下有一文件file.txt,要将其copy至bar用户的home目录.Linux对用户home目录有严格的权限限制,非owner用户或者同group用户无权限读写,除非是root ...
- linux 下用户管理
linux 下用户管理 一.用户的分类 1.超级用户:root UID=0 2.系统用户:不需要登录系统,对应用程序服务,主要维护系统的正常运行:UID = 1 ~ 499(RHEL7 = 1 ~ 9 ...
- linux建立用户 详细
.你同时属于两个或两个以上的组. 两个条件你至少具备一个,你才能够把文件所属旧组变为新组.使用如下的命令将当前目录下所有html文件所属的组改为httpd: chgrp httpd *.html 和c ...
- linux创建用户和用户组
Linux创建用户.用户组 及 删除 在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组.创建用户user1的时候指定其所属工作组users,例 ...
- 通过登入IP记录Linux所有用户登录所操作的日志
通过登入IP记录Linux所有用户登录所操作的日志 对于Linux用户操作记录一般通过命令history来查看历史记录,但是如果在由于误操作而删除了重要的数据的情况下,history命令就不会有什么作 ...
- Linux查看用户和组命令
在Linux系统里,我们会经常用Linux查看用户的命令,在这里我们一些命令进行了总结,总共有7个,并做了详细的解释,以便让大家更深入的理解,接下来让我们一起来看看这些命令和具体应用. 一.Linux ...
- 用Bash脚本将Linux普通用户添加为系统管理员
将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...
随机推荐
- mysql 主从复制参数slave_net_timeout
slave_net_timeout slave_net_timeout表示slave在slave_net_timeout时间之内没有收到master的任何数据(包括binlog,heartbeat), ...
- file命令详解
Linux file命令 Linux file命令用于辨识文件类型. 通过file指令,我们得以辨识该文件的类型 用法: file [-bchikLNnprsvz0] [--apple] [--mim ...
- JAVAFX开发桌面应用
javafx中文版文档: http://www.yiibai.com/javafx/ JavaFX之FXController详解 JavaFx系列教程 含打包部署 javafx之两种局部界面的呈现方式 ...
- MySQL+MyBatis下批量修改数据的问题
今天处理数据批量的更新,场景是这样子的,web站管理的字典功能,需要添加一个记录的整体描述,以及详细内容的描述.一个字典整体概述只有一组信息,但是其详细内容,会有很多项,不确定. 这个场景,在关系型数 ...
- 100M双绞线接头的标准接法
双绞线接头(RJ45)针脚号码定义
- 【java】匿名对象
匿名对象使用的场景:1.如果一个对象只调用一个方法一次的时候,就可以用匿名对象来调用. 一般不会用匿名对象给属性赋值,无法获取属性值,每次new 都是一个新的对象. new Car().run();/ ...
- putty删除键backspace设置
putty连接unix登陆后,编辑命令输入错误时要修改,可是习惯性的按backspace键或者Delete键都出现一堆奇怪的字符,无法删除出错的命令语句. 修正方法如下: ************** ...
- Hadoop错误集:Could not find the main class: org.apache.hadoop.*
在搭建Hadoop机群的时候,之前遇见了很多次找不到类的错误,因为对Hadoop了解不深,所以就在网上漫无目的的找解决方案,所以这里总结下我用的方法. 解决办法一: 我之前遇到了找不到 org.apa ...
- java1.8新特性(一)
一直在更新java 版本,原来也没有关注java版本的变化 引入的一些新的api 引起注意的还是 关于一些并发包的使用,那时候才对每个版本的特性 去了解了一下,虽然 不一定都用上了,但是不管学习什 ...
- 使用jquery方法的时候,要注意对象是哪个,否则很容易出错
<!DOCTYPE html><html><head><meta charset="utf-8"><title>W3Cs ...