本文中提到的 账户, 用户 均表示同一概念. 例如 ssh wbourne@192.168.xxx.101, 账户, 用户 指的均是 wbourne.

背景

在工作中, 我们经常会连接Linux服务器. 理想情况下, 每位员工在Linux服务器上都有一个独立的Linux账户, 并且拥有不同的权限, 但此场景对运维要求较高; 工作中实际情况更可能是一个小组, 甚至是一个项目组共用一个Linux帐户. 我们暂且不讨论这两种方案孰优孰劣, 但多人共用一个Linux账户的话, 必然会导致一个问题: 配置文件不独立.

Linux应用的配置文件大概可分为两种: 系统级配置文件, 以及用户级配置文件. 用户已经是最小单位了, 多位员工共用一个Linux用户, 配置文件必然不会独立. 比如shell的配置文件, A员工修改了shell配置文件, 不仅会对A生效, 同时也会对B其他员工也生效, 因为员工用的都是同一个用户; A员工喜欢用ll表示ls -l, B员工喜欢用ll表示ls -lrtF --color...

本文就来介绍, 多人共用一个Linux用户的情况下, 如何实现Bash配置文件的独立.

Bash初始化文件

Bash在初始化时, 默认会加载一系列配置文件, 不了解的读者可以参考本人文章bash初始化文件详解. 既然是默认的, 那我们就可以自定义初始化文件, 通过bash --rcfile <FILE>就可以指定初始化文件.

比如现在有三个员工A B C公用一个Linux账户wbourne, 默认的初始化文件为/home/wbourne/.bashrc. A员工可以新建一个自己的配置文件/home/wbourne/.bashrc_A, 通过执行bash --rcfile /home/wbourne/.bashrc_A来加载自己的配置文件, 其他员工加载的还是/home/wbourne/.bashrc, A员工的配置不会影响到其他人.

如果默认的配置文件中有一些必要的配置, 而A员工启用了自己的配置文件, 加载不到默认配置文件中的必要配置, 可以在.bashrc_A文件第一行加上source /home/wbourne/.bashrc, 这样既可以加载默认配置文件中的必要配置, 也可以加载自己的配置, 同时也不会影响其他人.

Tips: source /home/wbourne/.bashrc一定要放在第一行, 因为shell脚本是顺序执行的, 有相同配置的话后面的会覆盖前面的.

自动加载个人配置文件

细心的读者可能会问, --rcfile选项并没有什么用, 登录服务器之后, 再手动执行source /home/wbourne/.bashrc_A, 能达到上述一样的效果, 何必多次一举?

是的, 执行bash --rcfile <FILE>与执行source <FILE>是可以达到一样的效果; 但是都需要手动执行, 而--rcfile选项配合ssh可以实现登录时自动执行配置文件. ssh不仅可以用来登录, 还可以用来远程执行命令, 那为什么不让ssh来执行bash --rcfile <FILE>呢?

  • 例如平时登录服务器的命令为ssh wbourne@192.168.xxx.101
  • 将其修改为ssh -t wbourne@192.168.xxx.101 bash --rcfile /home/wbourne/.bashrc_A. 注意: 这里要加上一个-t选项, 表示分配一个tty.
  • 再在本地电脑配置一个alias, 就能很方便的自动加载个人配置文件alias s101='ssh -t wbourne@192.168.xxx.101 bash --rcfile /home/wbourne/.bashrc_A'
  • 之后在本地电脑执行s101就可以登录服务器并自动加载个人配置文件了

Tips: 上述ssh登录服务器, 配置alias, 执行s101是在本地电脑(即员工个人电脑, 有别与服务器)执行的操作; 其他的操作与文件, 均指的是服务器上的操作或服务器上的路径, 请读者注意.

本文讲述的是以命令行的方式通过ssh命令登录服务器实现Bash配置文件独立; 如果读者使用的是xshell, putty等工具登录服务器, 请自行摸索, 底层用的都是ssh协议, 原理都是一样的.

多人共用一个Linux用户, 实现Bash配置文件独立的更多相关文章

  1. 初学Python-搞了一个linux用户登录监测小工具

    这几天突发奇想,想学习一下Python.看了点基础,觉得有点枯燥,所以想搞点什么.想了想,就随便弄个检测Linux用户登录的小工具吧~ 首先,明确一下功能: 1.能够捕获 linux 用户登录的信息. ...

  2. Linux用户与“最小权限”原则

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 作为一个Linux用户来说,我们并不需要特别关心下面的机制.但是,当我们去编写一个 ...

  3. 如何让多个dz论坛共用一个用户数据库

    用户数据库在论坛中是可以独立备份的,备份方法:论坛后台——站长——数据库,备份所有ucenter数据表,也就是用户数据.其他DZ论坛搭建完成以后,可以上传用户数据库,将备份文件使用上传至网站所使用的主 ...

  4. 每天一个linux命令(23):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  5. Linux用户管理.md

    用户与组的概念 linux多用户,多任务的特性 Linux是一个真实的.完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务 ...

  6. 用户管理 之 Linux 用户(User)查询篇

    用户(User)和用户组(Group)的配置文件,是系统管理员最应该了解和掌握的系统基础文件之一,从另一方面来说,了解这些文件也是系统安全管理的重要组成部份:做为一个合格的系统管理员应该对用户和用户组 ...

  7. 用户管理 之 Linux 用户(user)和用户组(group)管理概述

    一.理解Linux的单用户多任务,多用户多任务概念:Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们以 ...

  8. 每天一个linux命令(19):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  9. 一个LINUX狂人的语录(个人认为很精辟)

    http://blog.chinaunix.net/uid-57160-id-2734431.html?page=2 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的 ...

随机推荐

  1. 让 API 测试变的简单。

    做开发已经四年有余了,之前在接口测试的时候最开始用的自己写的测试类进行测试,后来接触到了 postman 和 swagger ,虽然用起来比自己写的强太多了,但是总觉得差点事儿. 一方面是 postm ...

  2. 用Repo管理自己的本地仓库

    AOSP使用Repo工具管理项目源码.而Repo工具则依赖一个名叫manifest的git仓库来记录Android源码中都包含哪些子仓库. 进入Android源码根目录下的.repo目录,可以看到ma ...

  3. vue大型电商项目尚品汇(前台篇)day04

    这几天一直都在做项目,只是没有上传上来,即将把前台项目完结了.现在开始更新整个前台的部分 一.面包屑处理 1.分类操作 点击三级联动进入搜索产生面包屑,直接取参数中的name即可 点击x怎么干掉这个面 ...

  4. 一个恢复CSI挂载信息的解决方法

    一个恢复CSI挂载信息的解决方法 问题描述 之前有做过一个华为OBS 的CSI插件,其基本运作原理如下图所示.CSI插件Pod挂载了主机的/var/lib/kubelet/pods目录,当创建挂载Pv ...

  5. 一款开源的跨平台实时web应用框架——DotNetify

    今天给大家介绍一个开源的轻量级跨平台实时HTML+C#.NET Web应用程序开发框架--DotNetify,允许你在C#.NET后端上创建具有React.React Native.Vue或Blazo ...

  6. python 的 @staticmethod和@classmethod和普通实例方法

    参考:https://www.huaweicloud.com/articles/12607084.html https://blog.csdn.net/qq_30708445/article/deta ...

  7. pycharm相关介绍

    一.settings设置   1.搜font 设置字体 2.Keymap------快捷键 二.常用快捷键 1.Ctrl + Enter:在下方新建行但不移动光标: 2.Shift + Enter:在 ...

  8. 【Redis】哨兵初始化和主观下线

    在的redis启动函数main(server.c文件)中,对哨兵模式进行了检查,如果是哨兵模式,将调用initSentinelConfig和initSentinel进行初始化,initServer函数 ...

  9. 25.MYsql数据库管理

    MYsql数据库管理 目录 MYsql数据库管理 数据库基本操作 库和表 常用的数据类型 查看数据表结构 查看当前服务器的数据库 查看数据库中包含的表 查看表的结构 SQL语句 创建及删除数据库和表 ...

  10. 12.web基础与HTTP协议

    web基础与HTTP协议 目录 web基础与HTTP协议 web基础 域名概述 HTML概述 HTML基本标签 HTML语法规则 HTML文件结构 头标签中常用标签 内容标签中常用标签 静态网页与动态 ...