示例:利用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权限等的更多相关文章

  1. SharePoint Online 创建用户和组

    前言 本文介绍如何在Office 365中创建用户和组,这里所说的用户和组,是指Office 365中的用户和组,我们可以用这里的用户登录Office 365环境,用组的概念来管理用户,而非Share ...

  2. linux下创建用户及组

    linux下创建用户及组: 1.创建组 groupadd  组名 2.创建用户,并将用户添加到组 useradd  用户名  -g  组名 3.更改用户的密码 password  用户名 4.修改目录 ...

  3. linux 用户、组,修改文件权限

    文件权限 -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc - 10个字符确定不同用户能对文件干什么 - 第一个字符代表文件(-).目录(d),链接(l) - 其余 ...

  4. Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

    Gitlab权限管理Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库Reporte ...

  5. Gitlab用户在组中有五种权限

    Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库 Reporter:可以克隆代码, ...

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

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

  7. (1)使用bash脚本实现批量添加用户

    脚本实现内容: 可以指定用户名前缀,指定添加数量的批量添加用户脚本,密码为10为随机小写字母,并把用户名和密码写入文件中. 脚本代码: #!/bin/bashread -p "用户名前缀:& ...

  8. C#利用lambda在函数中创建内部函数

    有使用过JS的朋友,相信都知道function.JS中的function是可以在里面在定义一个作为内部使用的.有时为了控制作用域,或者这种小函数只在这个函数体内会使用,所以就不希望在外部在作额外的定义 ...

  9. ubuntu,day 2 ,退出当前用户,创建用户,查找,su,sudo,管道符,grep,alias,mount,tar解压

    本节内容: 1,文件权限的控制,chmod,chown 2,用户的增删和所属组,useradd,userdel 3,用户组的增删,groupadd,groupdel 4,su,sudo的介绍 5,别名 ...

  10. linux创建用户和组

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

随机推荐

  1. 5.5 Vim移动光标命令汇总

    Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键. Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有的快捷键都在命令模式 ...

  2. 2.8 忘记root账户密码怎么办?

    Linux 的单用户模式有些类似 Windows 的安全模式,只启动最少的程序用于系统修复.在单用户模式(运行级别为 1)中,Linux 引导进入根 shell,网络被禁用,只有少数进程运行. 单用户 ...

  3. 关于template标签用法总结(含vue中的用法总结)

    一.html5中的template标签html中的template标签中的内容在页面中不会显示.但是在后台查看页面DOM结构存在template标签.这是因为template标签天生不可见,它设置了d ...

  4. 牛客小白月赛105 (Python题解)

    牛客小白月赛105 (Python题解) 比赛链接:点击传送 A-lz的吃饭问题 代码: a, b = map(int,input().split()) c, d = map(int,input(). ...

  5. Auto-Encoding Variational Bayes (VAE原文)、变分推理

    变分自动编码器的大致概念已经理解了快一年多了,但是其中的数学原理还是没有搞懂,在看到相关的变体时,总会被数学公式卡住.下决心搞懂后,在此记录下我的理解. 公式推导--变分下界 这篇文章提出一种拟合数据 ...

  6. JVM调优总结:典型配置举例

    原文出处:http://developer.51cto.com/art/201201/311739.htm 一篇非常棒的关于JVM性能调优的文章,转载用于自己经常查阅 以下配置主要针对分代垃圾回收算法 ...

  7. PHPstorm配置webserver

    phpstorm自带了一个web server,我们可以直接在IDE中直接运行调试代码,非常方便. 配置interpreter 工程第一次运行还要配置一下php的解释器,我电脑的配置如下: 可以看到代 ...

  8. LonEle 操作的 SQL Server 数据库(msde2000)由 20180418 版更新至 20190328 版(非官方)

    Shanghai Mitsubishi Elevator Co., Ltd(上海三菱电梯有限公司) 的 Comprehensive Elevator Monitoring System (电梯综合监控 ...

  9. 编写kickstart脚本,执行时遇到的问题

    KickStart脚本 #!/bin/bash #declare var yum_ins="yum -y install" sys_res="systemctl rest ...

  10. HashMap 源码解毒

    PUT 方法解毒: hashcode 高低16进行异或运算,尽量降低哈希冲突的概率 如果数组很小,hashcode的高位就不能被很好利用. final V putVal(int hash, K key ...