本文中提到的 账户, 用户 均表示同一概念. 例如 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. Spring Framework 远程命令执行漏洞(CVE-2022-22965)

    Spring Framework 远程命令执行漏洞 (CVE-2022-22965) 近日,Spring 官方 GitHub issue中提到了关于 Spring Core 的远程命令执行漏洞,该漏洞 ...

  2. Spring Boot+微信小程序_保存微信登录者的个人信息

    1. 前言 微信小程序开发平台,提供有一类 API,可以让开发者获取到微信登录用户的个人数据.这类 API 统称为开放接口. Tip:微信小程序开发平台,会把微信登录用户的个人信息分为明文数据和敏感数 ...

  3. linux篇-linux面试题汇总

    Linux经典面试题,看看你会几题? 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统 ...

  4. 【单片机】NB-IoT移远BC28调试笔记

    一.入网总体思路 入网思路是参考 <Quectel_BC95&BC35-G&BC28_应用设计指导_V1.1.pdf>来做的.流程如图所示: 二.具体调试细节3.1 AT+ ...

  5. 利用 Onekey Theater 改善屏幕显示效果

    介绍 Onekey Theater(一键影音),它是联想笔记本带的一键影音功能,使用它能够更改笔记本的显示效果和音效,以此模仿电影院的效果,为用户带来更好是视听效果及享受. 作用 之前的联想笔记本自带 ...

  6. 白嫖Azure与体验GoLand远程开发

    前言 近期因为有本地开发远程使用Linux编译部署的需求,而虚拟机的性能实在是不敢恭维,WSL的坑之前也踩过(没有systemd等),故考虑使用SSH连接云服务器开发. 目前VSCode提出了Remo ...

  7. HYPERMESH-NASTRAN梁的方向与偏置

    Nastran关于梁的定义 我们知道,在定义梁单元时,一般需要定义单元的方向,或者说是单元的局部坐标系.对于Nastran内CBAR单元来说,梁轴向为X方向,我们需要给出向量\(\overrighta ...

  8. Dev C++编写C/C++程序 出现[Error] ld returned 1 exit status报错分析及解决

    debug系列第一弹,不知道大家写程序的时候是不是都遇到过如题的报错. 我本人是经常遇到这行熟悉的令人不知所措的报错,可能是我太笨了 有时候百度无果也差不到原因,那就汇总一下目前我遇到的情况吧--持续 ...

  9. Elasticsearch学习系列一(部署和配置IK分词器)

    Elasticsearch简介 Elasticsearch是什么? Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储.检索数据.本身扩展性很好,可扩展 ...

  10. expect自动应答

    expect脚本 1. expect简介 expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成. expect(自动应答) 基于TCL(Tool C ...