身为一名运维工作人员,保证服务器的安全是必要项,当开发人员或测试人员需登录到服务器查看日志等操作时,可只给定特定的权限防止误操作的惨况产生。
以下脚本内容均为我本人环境,如有更改可自行修改。
~]# vim create_readonly.sh
#!/bin/bash
# 打印脚本使用方法
echo -e "method of application\ncreate_readonly.sh username."
# 将用户输入的第一个参数赋给username这个变量
username=$1
# 将用户家目录赋予home这个变量
home="/home/${username}"
# 判断用户是否存在,如果存在,则退出脚本
id $username &> /dev/null
if [ $? == 0 ];then
echo User already exists
exit 2
fi
# 判断用户是否在脚本名后跟了用户名
if [ "x"$username == x"" ]
then
echo -e "Please enter the user name you want to create.\nUsage:'create_readonly.sh username.'"
exit 2
else
# 创建用户并指定shell环境,成功提示"创建成功"反之提示"创建失败"
useradd -s /bin/bash $username && echo "The ${username} creating a successful." || "Create a failure."
# 免交互创建用户密码
echo Abcd1234 | passwd --stdin $username &> /dev/null
# 创建readonly用户可用命令存放目录,给.bin目录赋权,调整.bash_profile文件属主为root,将.bash_profile文件给予700权限且取消编辑功能
mkdir $home/.bin && chmod 755 $home/.bin && chown root. $home/.bash_profile && chmod 755 $home/.bash_profile && chattr -i $home/.bash_profile
# 将原本.bash_profile中的PATH变量注释,在注释PATH下一行增加"PATH=$HOME/.bin"
sed -i 's/^PATH/#PATH/' ${home}/.bash_profile
sed -i '/^#PATH/a\PATH=$HOME/.bin' ${home}/.bash_profile
# 后台切换至readonly用户且执行source命令使.bash_profile生效
su - $username -c "source '$home'/.bash_profile"
# 将允许使用的命令链接至用户家目录中的存放命令位置
ln -s /usr/bin/tail $home/.bin/tail
ln -s /usr/bin/cat $home/.bin/cat
ln -s /usr/bin/top $home/.bin/top
# 修改sshd_config允许readonly用户直接登录至服务器并重启
sed -i 's/^AllowUsers*/AllowUsers '${username}'/' /etc/ssh/sshd_config
systemctl restart sshd
# 判断chmod_log.sh文件是否存在
if [ ! -f "/root/crontab/chmod_log.sh" ]
then
''' (注释文档)
如果不存在则创建存放目录及将以下内容重定向至/root/crontab/chmod_log.sh,并赋予执行权限,随及添加计划任务
#!/bin/bash(内容根据实际情况自行更改)
chmod -R 755 /mnt/logs/iottest/*/iot*
chmod -R 644 /mnt/logs/iottest/*/*.log
chmod -R 644 /mnt/logs/iottest/*/*/*.log*
计划任务:
每分钟执行一次/root/crontab/chmod_log.sh脚本,保证readonly一直有访问日志的权限
''' (注释文档)
mkdir /root/crontab
echo -e '#!/bin/bash\nchmod -R 755 /mnt/logs/iottest/*/iot*\nchmod -R 644 /mnt/logs/iottest/*/*.log\nchmod -R 644 /mnt/logs/iottest/*/*/*.log*' > /root/crontab/chmod_log.sh
chmod +x /root/crontab/chmod_log.sh
echo "*/1 * * * * sh /root/crontab/chmod_log.sh >> /root/crontab/logfile 2>&1" >> /var/spool/cron/root
# 如果文件存在则直接赋予执行权限并添加计划任务
else
chmod +x /root/crontab/chmod_log.sh
echo "*/1 * * * * sh /root/crontab/chmod_log.sh >> /root/crontab/logfile 2>&1" >> /var/spool/cron/root
fi
fi

  

创建readonly只读用户脚本的更多相关文章

  1. MySQL, 创建一个只读用户和一个所有权限用户

    安装pasa需要配置mysql.基本知识学习一下 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL 为关系型数据库 ...

  2. Oracle数据库创建只读用户

    创建一个只读用户user2,只能查询管理员用户user1下的表,不能增删改. 操作环境:PL/SQL Developer 1.用管理员用户user1登录,创建用户user2.并授权 --创建用户use ...

  3. PostgreSQL创建只读用户

    创建用户及指定密码: CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 设置用户默认事务只读: alter user readonly se ...

  4. Azure SQL Database (25) Azure SQL Database创建只读用户

    <Windows Azure Platform 系列文章目录> 本文将介绍如何在Azure SQL Database创建只读用户. 请先按照笔者之前的文章:Azure SQL Databa ...

  5. 三、OpenStack创建域,项目,用户和角色,验证,创建客户端脚本

    一.Identity服务为每个OpenStack服务提供身份验证服务. 身份验证服务使用域,项目,用户和 角色的组合. 1.创建service 项目 # openstack project creat ...

  6. Linux shell脚本 批量创建多个用户

    Linux shell脚本 批量创建多个用户 #!/bin/bash groupadd charlesgroup for username in charles1 charles2 charles3 ...

  7. mysql数据库,创建只读用户

    数据库当前只有一个root用户,需要创建一个只读帐户给其他使用,因使用者是使用数据库管理工具在其他主机访问,所以还要开户远程访问权限,操作步骤如下. 1. 使用现有的root用户登录到Mysql. m ...

  8. kubernetes实战篇之创建一个只读权限的用户

    系列目录 上一节我们讲解到了如何限制用户访问dashboard的权限,这节我们讲解一个案例:如何创建一个只读权限的用户. 虽然可以根据实际情况灵活创建各种权限用户,但是实际生产环境中往往只需要两个就行 ...

  9. Oracle只读用户角色的建立

    授予某模式下对象读权限给角色,就可以建立Oracle只读用户角色,下文对该方法的实现步骤作了详细的介绍,供您参考学习. 下面为您介绍的是Oracle只读用户角色的建立方法,该方法供您参考,如果您在Or ...

随机推荐

  1. Excel-信息函数&数组公式

    1.IS系列函数-逻辑函数 is函数是一个逻辑函数,可以用来判断一些特定的内容 Istext判断单元格是否是文本 Isnumber判断单元格是否为数值 Istext和isnumber的判断的结果相反 ...

  2. Spring Cloud微服务安全实战_3-6_API安全机制之审计

    审计日志 定义:谁,在什么时间,干了什么事. 位置:认证之后,授权之前. 这样就知道是谁在访问,拒绝掉的访问也能被记录.如果放在认证之前,那么就不知道是谁在访问:如果放在授权之后,就没办法记录被拒绝的 ...

  3. 微信小程序开发工具调试没问题,真机调试Provisional headers are shown

    from: https://blog.csdn.net/github_38928905/article/details/83105523 在开发工具调试,请求正常没问题,使用真机调试,请求异常:Pro ...

  4. VMWARE在UEFI下启动PE.ISO

    1.编辑虚拟机设置→选项→高级→通过EFI而非BIOS引导勾选. 2.虚拟机→电源→打开电源时进入固件,进入之后修改光驱为第一引导. 3.挂载PE.ISO,启动时虚拟机顶部出现Press any ke ...

  5. 雪花算法(snowflake)的JAVA实现

    snowflake算法由twitter公司出品,原始版本是scala版,用于生成分布式ID,结构图: 算法描述: 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使 ...

  6. 用欧拉计划学习Rust编程(第13~16题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识.学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法. 学习任何一项技能最怕没有 ...

  7. # Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  8. gcc/g++ -O 优化选项说明

    查查gcc手册就知道了,每个编译选项都控制着不同的优化选项 下面从网络上copy过来的,真要用到这些还是推荐查阅手册 -O设置一共有五种:-O0.-O1.-O2.-O3和-Os. 除了-O0以外,每一 ...

  9. Logstash跟es加密通信

    前提条件,es集群内部各节点已开启https访问,集群也已开启x-pack安全功能,并设置了系统默认的用户密码等,具体操作详见:https://www.cnblogs.com/sanduzxcvbnm ...

  10. lombok的@Accessors注解3个属性说明

    https://www.cnblogs.com/kelelipeng/p/11326936.html https://www.cnblogs.com/kelelipeng/p/11326621.htm ...