利用bash脚本函数执行创建用户和组,并设置sudo权限等
示例:利用bash脚本函数执行创建用户和组,并设置sudo权限等:
Linux服务器设置历史命令记录,及命令执行的时间:
sudo echo 'HISTTIMEFORMAT="%F %T whoami: " ' >>/etc/bashrc
sudo echo 'HISTTIMEFORMAT="%F %T whoami: " ' >>/etc/profile
source /etc/bashrc
source /etc/profile
当前用户所有输入的命令都被记录在 ~/.bash_history 文件中,为了防止敏感信息泄露,可以执行 history -c && history -w 或 history -c && > ~/.bash_history 命令清除这些历史记录。
#! /bin/bash
## author:xiongzaiqiqren
## 设置历史命令记录
function setHisttimeFormat(){
echo "setHisttimeFormat Start."
if [ `grep -ciE "HISTTIMEFORMAT=" /etc/bashrc` -ne '0' ];then
echo "/etc/bashrc The file checked, skipped."
else
sudo echo 'HISTTIMEFORMAT="%F %T `whoami`: " ' >>/etc/bashrc
source /etc/bashrc
fi
if [ `grep -ciE "HISTTIMEFORMAT=" /etc/profile` -ne '0' ];then
echo "/etc/profile The file checked, skipped."
else
sudo echo 'HISTTIMEFORMAT="%F %T `whoami`: " ' >>/etc/profile
source /etc/profile
fi
echo "setHisttimeFormat Completed."
}
# setHisttimeFormat
## 创建用户(用户名,密码)
function CreateUser(){
name=$1
nameGroup=$2
echo "CreateUser Start: ${name} ${nameGroup}"
#设置允许新增或修改用户相关设置
sudo chattr -i /etc/gshadow /etc/group /etc/shadow /etc/passwd
#创建用户组
sudo groupadd ${nameGroup}
#创建用户并指定用户组、家目录
sudo useradd -g ${nameGroup} -d /home/${name} -m ${name}
#设置密码
sudo passwd ${name}
#设置sudo权限
sudo chmod +w /etc/sudoers
echo ${name}' ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
sudo chmod -w /etc/sudoers
echo -e "CreateUser Completed: \033[5;47;31m ${name} ${nameGroup} 请您必需记住密码!!!Please remember the password !!! \033[0m"
}
# CreateUser Xxh_2023 xxhG
## 因为在外部传入脚本的参数不能直接传到function函数定义的脚本里面,只能先传到脚本里,在通过定义每个function函数的参数队列去重新传入参数到function函数的脚本中(与function里面的参数定义不同的是直接在脚本里面定义的$1指要调用的方法名称,下面这个$2,$3对应每个function里面的$1,$2)
$1 $2 $3
## 调用示例:sh ./myInit.sh CreateUser Xxh_2022 test2022G
注意:调用shell脚本或函数是可以输入参数的,传递到内部是 $1,$2,$3 …… 依次往后接收。
因为在外部传入脚本的参数不能直接传到function函数定义的脚本里面,只能先传到脚本里,在通过定义每个function函数的参数队列去重新传入参数到function函数的脚本中(与function里面的参数定义不同的是直接在脚本里面定义的 \$1 指要调用的方法名称,下面这个\$2,\$3对应每个function里面的\$1,$2)。
可以简单理解是:如果shell脚本里面有多个函数,\$1是需要调用哪个函数,\$2,\$3是给该函数传递的参数。
将以上内容保存在Linux服务器/tmp/myInit.sh 脚本文件,并赋予可执行权限 sudo chmod +x /tmp/myInit.sh,然后就可以直接调用了。
调用示例(脚本内部):CreateUser myname mygroup
调用示例(脚本外部):sh ./myInit.sh CreateUser myname mygroup
调用示例(脚本外部):sh ./myInit.sh setHisttimeFormat
执行效果:

参考:shell脚本中的函数
利用bash脚本函数执行创建用户和组,并设置sudo权限等的更多相关文章
- SharePoint Online 创建用户和组
前言 本文介绍如何在Office 365中创建用户和组,这里所说的用户和组,是指Office 365中的用户和组,我们可以用这里的用户登录Office 365环境,用组的概念来管理用户,而非Share ...
- linux下创建用户及组
linux下创建用户及组: 1.创建组 groupadd 组名 2.创建用户,并将用户添加到组 useradd 用户名 -g 组名 3.更改用户的密码 password 用户名 4.修改目录 ...
- linux 用户、组,修改文件权限
文件权限 -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc - 10个字符确定不同用户能对文件干什么 - 第一个字符代表文件(-).目录(d),链接(l) - 其余 ...
- Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner
Gitlab权限管理Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库Reporte ...
- Gitlab用户在组中有五种权限
Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库 Reporter:可以克隆代码, ...
- 用Bash脚本将Linux普通用户添加为系统管理员
将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...
- (1)使用bash脚本实现批量添加用户
脚本实现内容: 可以指定用户名前缀,指定添加数量的批量添加用户脚本,密码为10为随机小写字母,并把用户名和密码写入文件中. 脚本代码: #!/bin/bashread -p "用户名前缀:& ...
- C#利用lambda在函数中创建内部函数
有使用过JS的朋友,相信都知道function.JS中的function是可以在里面在定义一个作为内部使用的.有时为了控制作用域,或者这种小函数只在这个函数体内会使用,所以就不希望在外部在作额外的定义 ...
- ubuntu,day 2 ,退出当前用户,创建用户,查找,su,sudo,管道符,grep,alias,mount,tar解压
本节内容: 1,文件权限的控制,chmod,chown 2,用户的增删和所属组,useradd,userdel 3,用户组的增删,groupadd,groupdel 4,su,sudo的介绍 5,别名 ...
- linux创建用户和组
linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
随机推荐
- 2.13 新手必读的Linux使用注意事项
通过安装并体验 Linux 系统,读者应该能发现 Linux 与 Windows 的一些不同之处,本节就几个容易让初学者混淆的问题做重点讲解,以便加深读者对 Linux 系统的认识. Linux 严格 ...
- 3-4 C++迭代器初步
目录 3.4.0 为什么要有迭代器 3.4.1使用迭代器 迭代器的比较操作 用迭代器写一个遍历 取出迭代器中的元素:解引用 * 迭代器的类型 使用迭代器时的注意点 3.4.2 迭代器的算术操作 常见操 ...
- IIC通信协议详解 & PCF8591应用(Verilog实现)
该文章结合PCF8591 8-bit AD/DA 模数/数模转换器来详细介绍IIC通信协议,尽量做到条理清晰,通俗易懂.该文图片均从PCF8591手册中截取,一定程度上引导读者学习阅读data she ...
- nvidia公司的机器人仿真环境的历史发展介绍(Isaac-Gym、Isaac-Sim)
相关: NVIDIA机器人仿真项目 -- Isaac Gym - Preview Release 本文说下NVIDIA公司的机器人仿真项目的一些历史发展. NVIDIA公司的产品最初只有显卡,但是卖着 ...
- Solr Facet技术的应用与研究
http://tech.meituan.com/solr-facet.html 问题背景 在 <搜索引擎关键字智能提示的一种实现> 一文中介绍过,美团的CRM系统负责管理销售人员的门店 ...
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的
SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即"service"阶段.在"service"阶段中,每一次Http请求到来 ...
- 前端实战之使用canvas合并图片
最近做一个完整的系统,前端中涉及到一个推广图片的生成,其中推广图片是由一个变化的链接生成的二维码与一个固定图片拼接而成 实现demo: qrcode.png:https://images.cnblog ...
- js逆向之jsRpc
github: https://github.com/jxhczhl/JsRpc 简介: 通过远程调用(rpc)的方式免去抠代码补环境 原理: 在网站的控制台新建一个WebScoket客户端链接到服务 ...
- LGR-204-Div.2
Contest link 质量不错的比赛. A 比较明显的题,贪心往下做就可以. #include <bits/stdc++.h> using i64 = long long; const ...
- log4j2 变量注入漏洞(CVE-2021-44228)
log4j2 JNDI注入漏洞(CVE-2021-44228) 概述 本文非常详细的从头到尾debug了CVE-2021-44228漏洞的利用过程,喜欢的师傅记得点个推荐~ Apache Log4j2 ...