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这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...
随机推荐
- piwik高负载加速之切换session存储位置
默认情况下,piwik的session是存储于根目录下面的tmp/sessions/路径下面的.而官方文档里面说,如果由于本地硬盘的原因,这种设置可能会导致系统被变慢,这在高负载系统应用中可能是不可以 ...
- C++Builder 网站。记住学习
http://www.ccrun.com/ C++Builder
- Linux ssh服务器配置
配置文件在/etc/sshd_config,注意只有root可rw,其他所有用户权限为---. 配置说明可参考man sshd_config. 如果更改了服务器端口号,并且启用了SELinux,需要执 ...
- Linux From Scratch [3]
1. 为了编译glibc,我们需要kernel header. make mrproper # clean kernel tree make INSTALL_HDR_PATH=dest headers ...
- 【nginx】之常用命令
查看版本号: nginx -s reload :修改配置后重新加载生效 nginx -s reopen :重新打开日志文件nginx -t -c /path/to/nginx.conf 测试ngi ...
- JPanel添加键盘监听事件
因为在自己的游戏需求中谢了要用键盘控制飞机的移动,所以用到键盘监听事件,但是使用了JPanel之后添加了键盘监听事件,按相应的方向键飞机并没有反应.但是如果是为JFrame的内容面板加则会有反应. 为 ...
- Dubbo(3)Dubbo admin管理控制台
dubbo-admin管理控制台: 可以管理服务,消费,以及其他配置: 在dubbo项目的zip包中有个demo-admin项目,可以打成war包,发布到tomcat运行里面: 我这里将dubbo-a ...
- spring boot学习(8) SpringBoot 之切面AOP
在方法执行的前后,切入代码:经典的service层切入事务: @Aspect注解是切面注解类 @Pointcut切点定义 @Before是方法执行前调用 @After是方法执行后调用 @AfterRe ...
- Java NIO系列教程(四) Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(sc ...
- Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un
ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法 Java 实例 汉诺塔(又称河内塔)问题是源 ...