添加没有登录权限

需要理解linux用户,首先登陆的是root用户,拥有所有的权限,但是该权限太大,一般都会分配其他用户使用,并且在部署程序时,需要分配一个没有登录权限的用户,这样改程序不能随意被修改,如何添加没有登录权限的用户和用户组如下:

  1. groupadd groupname

    useradd -g groupname username -s /bin/false //-s为默认shell,不给shell,也就不能登录
  2. groupadd groupname

    useradd -g groupname username -s /sbin/nologin //-s为默认shell,默认给予shell,但是不给登录shell

脚本

先给出脚本 (java.sh 脚本名称):

#!/bin/sh

app_User=ice-app
App_Group=app # 安装文件
Java_Install_File=jdk-8u192-linux-x64.tar.gz
#Java 目录名称
Java_File_Name=jdk1.8.0_192
# 应用程序目录
Java_Home_Opt=/opt
#
Java_Home_App=/opt/jdk1.8.0_192
# 解压Java文件
install(){
echo "Install Java..."
sudo tar zxvf $Java_Install_File
#移动Java程序到opt目录下
sudo mv $Java_File_Name $Java_Home_Opt
#create group if not exists
egrep "^$App_Group" /etc/group >& /dev/null
if [ $? -ne 0 ]
then
echo "Creating Application Group:"$App_Group
sudo groupadd -f $App_Group
fi
#create user if not exists
egrep "^$app_User" /etc/passwd >& /dev/null
if [ $? -ne 0 ]
then
echo "Creating Application User:"$app_User
sudo useradd -g $App_Group -d /home/$app_User -m -s /bin/false -r $app_User
fi
#设置目录权限
echo "Set The Permission For User: "$app_User
sudo chown -R $app_User $Java_Home_App
sudo chmod -R o+w $Java_Home_App
# 追加Java环境变量
echo '# java environment param' >> /etc/profile
echo "export JAVA_HOME=$Java_Home_App" >> /etc/profile
echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile
echo 'export PATH=$JAVA_HOME:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile # 刷新配置文
source /etc/profile
}
# 删除Java jdk程序
uninstall(){
# 删除/etc/profile 环境变量
sed -i "/export JAVA_HOME=/d" /etc/profile
sed -i '/export JRE_HOME/d' /etc/profile
sed -i '/export PATH=$JAVA_HOME/d' /etc/profile
# 删除文件
sudo rm -rf $Java_Home_App
# 刷新配置文
source /etc/profile
}
###################################
#读取脚本的第一个参数($1),进行判断
#参数取值范围:{install|uninstall}
#如参数不在指定范围之内,则打印帮助信息
###################################
case "$1" in
'install')
install
;;
'uninstall')
uninstall
;;
*)
echo "Usage: $0 {install|uninstall}"
esac
exit

需要将脚本变为可执行文件

chmod +x java.sh

使用脚本

./java.sh install 部署程序

./java.sh uninstall 卸载程序

程序完成功能

install功能:

  1. 解压脚本
  2. 当用户和用户组不存在时,添加用户和用户组
  3. 添加环境变量并刷新配置文件

uninstall功能:

1.删除环境变量并刷新配置文件

2.删除java文件

注意: jdk-8u192-linux-x64.tar.gz文件需要和java.sh放在一起,才能够完成部署

jdk1.8.0_192是tar解压之后的文件,这个文件解压时可以指定,没有指定,则使用默认文件。

编辑脚本思路

  1. 编辑该Java脚本思路,首先是需要肯定是要部署一遍,知道部署的步骤,一上来就写脚本,是肯定不行的
  2. 理解脚本的语法 : sed '/匹配内容/d' 文件名 表示删除某行内容

    echo '内容' >> 文件名 表示向文件追加内容

jdk 自动化脚本的更多相关文章

  1. 卸载系统自带的JDK的脚本并再次安装

    卸载系统自带的JDK的脚本并安装1.6.0.32版本的jdk #!/bin/bash homefile=/usr/local/java cd $homefile homelist=`sudo rpm ...

  2. 自动化脚本中click()或sendKeys()没有反应

    前提: 排除xpath引用错误或元素的xpath每次都不同的情形. 问题描述 自动化脚本中click()方法和sendKeys()方法报错, 返回异常InvocationTargetException ...

  3. appium-desktop录制脚本二次开发,生成我司自动化脚本

    目的 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求. 实现步骤 1.增加元素名称的输入框 由于ATK(我司自动化测试框架)脚本中元素是以“ap ...

  4. Jenkins构建自动化脚本执行无界面解决方法

    场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...

  5. 【Zabbix】Zabbix-agent自动化脚本

    zabbix-agent自动化脚本 作用:批量部署zabbix-agent.用于上百台虚拟机都可以被Zabbix监控. 脚本名:inst-agent.sh #!/bin/bash echo " ...

  6. PHP学习日记 Windows配置PHP+Nginx+自动化脚本

    Windows配置PHP+Nginx+自动化脚本 安装与配置 PHP 下载PHP:传送门 选择合适的版本下载 尽量选Thread Safe 配置PHP: 解压后在文件夹中找到php.ini-devel ...

  7. python_selenium之第一个自动化脚本

    python_selenium之第一个自动化脚本 上一节介绍了xpath的使用,接下来完成第一个自动化脚本 一.步骤: 1. 这里使用火狐浏览器,首先打开火狐浏览器 2. 使浏览器窗口最大化 3.输入 ...

  8. 【转】jenkins上配置robotframeworkride自动化脚本任务

    jenkins上配置robotframeworkride自动化脚本任务 编写好的自动化脚本,集成在jenkins上进行自动运行于监控,这里采用分布式构建,在一台slave上进行任务构建与自动化脚本的运 ...

  9. Python+selenium第一个自动化脚本

    第一个自动化脚本(用Python写的) from selenium import webdriver  #从selenium导入webdriber driver=webdriber.Firefox() ...

随机推荐

  1. Jquery ajax的参数格式化

    jQuery的ajax会自动将js对象转换为可传递的参数,$.param(jsobj, boolean),但是默认会把对象中数组类型加上[]符号,后台就不怎么好取了 参数boolean为true时不加 ...

  2. .NET CORE 2.1 导出excel文件的两种方法

    最近在做 MVC 项目的时候遇到项目的导出,下面总结下两种导出到excel 的方法 第一种方法: 将文件写到本地,然后返回这个File 或者返回这个 File 的绝对地址  其中  _hostingE ...

  3. Delphi编程中使用回车键不换行处理方法!!

    我以前遇到过Delphi编程中使用回车键不换行的问题,一直没有找到正确处理方法,以至于每次都重新安装Delphi,今天在XE8中再次遇到这样问题,万幸找到了正确的解决方法: 可能使用过程中不小心按了i ...

  4. ArrayList中的一些小细节@JDK8

    ArrayList中的一些小细节@JDK8 protected transient int modCount = 0; 该变量用于记录ArrayList的版本号,不可被序列化,每次对ArrayList ...

  5. python设计模式-适配器

    定义: 将一个接口转换为客户希望的另一个接口,该模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 适配器模式又叫变压器模式,也叫包装模式(Wrapper),它的核心思想是将一个对象经过包装 ...

  6. css3动画(animation)效果1-漂浮的白云

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. mysqli扩展库---------预处理技术

    1, PHP程序与mysql之间处理sql语句流程如下,减少执行时间方式有三种: ① 减少php发送sql次数: ② 减少php与mysql之间网络传输时间: ③ 减少mysql的编译时间: 2, 预 ...

  8. Setup "EQGRP_Lost_in_Translation" Of NAS

    Setup "EQGRP_Lost_in_Translation" Of NAS 1.前言: 北京时间4月14号晚,TheShadowBrokers在steemit.com博客上放 ...

  9. 从零开始用 Flask 搭建一个网站(四)

    前言 从零开始用 Flask 搭建一个网站(三) 介绍了网页前端与后端.前端与前端之间数据的交流.本节主要介绍一下如何应用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以轻 ...

  10. 看完MJ讲解的单例后的个人总结

    1.单例的介绍 单例是iOS常用的开发模式的一种. 2.什么是单例 单例就是一个类只创建一个对象,只分配一次内存空间. 3.单例的应用场景 1)系统的单例:  [UIApplication share ...