利用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 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
随机推荐
- 4.3 Linux压缩文件或目录为.zip格式(zip命令)
我们经常会在 Windows 系统上使用 ".zip"格式压缩文件,其实".zip"格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几 ...
- 题解:CF1301B Motarack's Birthday
CF1301D Time to Run 题解 思维题. 分析 把一个格子视作一个点,每个点的度数都是偶数,所以这是一张欧拉图.而需要走遍整个方格图,可以证明只要 \(k\) 不超过 \(4nm-2n- ...
- Go中数组和切片
数组和切片 [1].数组 1.什么是数组 一组数 数组需要是相同类型的数据的集合 数组是需要定义大小的 数组一旦定义了大小是不可以改变的. package main import "fmt& ...
- 超级干货!Air780E的串口通信分享
猛然发现,Air780E的串口通信还没分享,难怪已经有小伙伴提出了要求! 那我们来讲解低功耗4G模组Air780E的串口通信的基本用法,小伙伴们,学起来吧! 一.硬件准备 780E开发板一套 ...
- 2022年3月(202203)小米路由R3G(3G)刷openwrt和padavan的总结
本篇文章是本人这2天刷小米路由R3G的记录,中间可能有很多错误,欢迎留言指出. 1.千万别断电 2.刷机的时候要多等待 小米路由很多型号有着很强的可玩性,128M以上的ROM,256M以上的内存,R3 ...
- CommonsCollections6(基于ysoserial)
环境准备 JDK1.8(8u421)我以本地的JDK8版本为准.commons-collections(3.x 4.x均可这里使用3.2版本) cc3.2: <dependency> &l ...
- tsconfig配置详解
{ "compilerOptions": { /* Basic Options */ "target": "es5" /* target用于 ...
- sort函数详解
sort函数 简介 其实STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序.根据不同的数量级别以及不同情况,能自动选用合适的排序方法.当数据量较大时 ...
- 什么是.NET的强类型字符串(Strongly typed string)?
在.NET中,强类型字符串(Strongly typed string)并不是一个官方的概念,是指使用特定的结构来表示某种类型字符串数据的编码实践.类似于枚举,可以提供编译时检查类型,减少运行时错误, ...
- Echarts 图例组件
1.图例组件的基本介绍 图例组件legend展现了不同系列的标记(symbol),颜色和名字.可以通过点击图例控制哪些系列不显示. 2.开启图例组件 开启图例组件默认时关闭状态,通过配置legend字 ...