示例:利用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 命令清除这些历史记录。

  1. #! /bin/bash
  2. ## author:xiongzaiqiqren
  3. ## 设置历史命令记录
  4. function setHisttimeFormat(){
  5. echo "setHisttimeFormat Start."
  6. if [ `grep -ciE "HISTTIMEFORMAT=" /etc/bashrc` -ne '0' ];then
  7. echo "/etc/bashrc The file checked, skipped."
  8. else
  9. sudo echo 'HISTTIMEFORMAT="%F %T `whoami`: " ' >>/etc/bashrc
  10. source /etc/bashrc
  11. fi
  12. if [ `grep -ciE "HISTTIMEFORMAT=" /etc/profile` -ne '0' ];then
  13. echo "/etc/profile The file checked, skipped."
  14. else
  15. sudo echo 'HISTTIMEFORMAT="%F %T `whoami`: " ' >>/etc/profile
  16. source /etc/profile
  17. fi
  18. echo "setHisttimeFormat Completed."
  19. }
  20. # setHisttimeFormat
  21. ## 创建用户(用户名,密码)
  22. function CreateUser(){
  23. name=$1
  24. nameGroup=$2
  25. echo "CreateUser Start: ${name} ${nameGroup}"
  26. #设置允许新增或修改用户相关设置
  27. sudo chattr -i /etc/gshadow /etc/group /etc/shadow /etc/passwd
  28. #创建用户组
  29. sudo groupadd ${nameGroup}
  30. #创建用户并指定用户组、家目录
  31. sudo useradd -g ${nameGroup} -d /home/${name} -m ${name}
  32. #设置密码
  33. sudo passwd ${name}
  34. #设置sudo权限
  35. sudo chmod +w /etc/sudoers
  36. echo ${name}' ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
  37. sudo chmod -w /etc/sudoers
  38. echo -e "CreateUser Completed: \033[5;47;31m ${name} ${nameGroup} 请您必需记住密码!!!Please remember the password !!! \033[0m"
  39. }
  40. # CreateUser Xxh_2023 xxhG
  41. ## 因为在外部传入脚本的参数不能直接传到function函数定义的脚本里面,只能先传到脚本里,在通过定义每个function函数的参数队列去重新传入参数到function函数的脚本中(与function里面的参数定义不同的是直接在脚本里面定义的$1指要调用的方法名称,下面这个$2,$3对应每个function里面的$1,$2)
  42. $1 $2 $3
  43. ## 调用示例: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. 4.3 Linux压缩文件或目录为.zip格式(zip命令)

    我们经常会在 Windows 系统上使用 ".zip"格式压缩文件,其实".zip"格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几 ...

  2. 题解:CF1301B Motarack's Birthday

    CF1301D Time to Run 题解 思维题. 分析 把一个格子视作一个点,每个点的度数都是偶数,所以这是一张欧拉图.而需要走遍整个方格图,可以证明只要 \(k\) 不超过 \(4nm-2n- ...

  3. Go中数组和切片

    数组和切片 [1].数组 1.什么是数组 一组数 数组需要是相同类型的数据的集合 数组是需要定义大小的 数组一旦定义了大小是不可以改变的. package main import "fmt& ...

  4. 超级干货!Air780E的串口通信分享

    ​ 猛然发现,Air780E的串口通信还没分享,难怪已经有小伙伴提出了要求! 那我们来讲解低功耗4G模组Air780E的串口通信的基本用法,小伙伴们,学起来吧! 一.硬件准备  ​ 780E开发板一套 ...

  5. 2022年3月(202203)小米路由R3G(3G)刷openwrt和padavan的总结

    本篇文章是本人这2天刷小米路由R3G的记录,中间可能有很多错误,欢迎留言指出. 1.千万别断电 2.刷机的时候要多等待 小米路由很多型号有着很强的可玩性,128M以上的ROM,256M以上的内存,R3 ...

  6. CommonsCollections6(基于ysoserial)

    环境准备 JDK1.8(8u421)我以本地的JDK8版本为准.commons-collections(3.x 4.x均可这里使用3.2版本) cc3.2: <dependency> &l ...

  7. tsconfig配置详解

    { "compilerOptions": { /* Basic Options */ "target": "es5" /* target用于 ...

  8. sort函数详解

    sort函数 简介 其实STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序.根据不同的数量级别以及不同情况,能自动选用合适的排序方法.当数据量较大时 ...

  9. 什么是.NET的强类型字符串(Strongly typed string)?

    在.NET中,强类型字符串(Strongly typed string)并不是一个官方的概念,是指使用特定的结构来表示某种类型字符串数据的编码实践.类似于枚举,可以提供编译时检查类型,减少运行时错误, ...

  10. Echarts 图例组件

    1.图例组件的基本介绍 图例组件legend展现了不同系列的标记(symbol),颜色和名字.可以通过点击图例控制哪些系列不显示. 2.开启图例组件 开启图例组件默认时关闭状态,通过配置legend字 ...