BASH环境配置Bash环境配置和linux上的特殊权限说明

 

一、bash环境配置:
1、配置文件,生效范围划分,存在两类:
  全局配置:
   /etc/profile, /etc/profile.d/*.sh
   /etc/bashrc
  个人配置:
   ~/.bash_profile
   ~/.bashrc

2、按功能划分,存在两类:
  profile类:为交互式登录的shell提供配置
   /etc/profile, /etc/profile.d/*.sh
   ~/.bash_profile

   功用:
    (1) 定义环境变量,例如PATH、PS1
    (2) 运行命令或脚本

  bashrc类:为非交互式登录shell提供配置
   /etc/bashrc
   ~/.bashrc

   功用:
    (1) 定义命令别名;
    (2) 定义本地变量;

二、变量:内存空间,变量名

1、变量的类型:

  本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效;

    定义变量: [set]Var_Name="Value"

    引用变量: ${Var_Name}

    撤销变量: unset Var_Name

  局部变量:仅对局部代码生效

    定义变量:local Var_Name="Value"

  环境变量:对当shell进程及其子shell有效;

    定义变量:export Var_Name="Value"

  位置变量:

     $1, ..., $n

     ./first.sh 2 8

  特殊变量:

      $0: 脚本名称自身

      $?: 上一条命令的执行状态;

           状态用数字来表示:0-255;

           0: 成功

           1-255: 失败 (1、2、127 是系统预留的)

      $$

      $!

      $#

      $*

2、变量的命名要求:

      只能使用数字、字母和下划线组成;

      不能以数字开头;

      不能使用程序中的关键字;

      见名知义;totalWeight

 

3、查看系统上的变量:

set :显示当前Bash上所有变量

显示所有环境变量:export, env, printenv

 

 
三、shell登录类型:
  交互式登录:
   直接通过终端进行的登录;
   通过su -l Username命令实现的用户切换;

  非交互式登录:
   图形界面下打开的命令行窗口;
   执行脚本;
   su Username;

 配置文件作用次序:
  交互式登录:
   /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

  非交互式登录:
   ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

 编辑配置文件定义的新配置如何生效?
  (1) 重新登录;
  (2) 让当前shell进程去重新读取指定的配置文件;
   source /PATH/TO/SOMEFILE
   . /PATH/TO/SOMEFILE
   注意:副作用

实例:追加PATH变量下的路径

[root@localhost ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost ~]# export PATH=$PATH:/tmp/

functions    grub.conf    .ICE-unix/   lost+found/  mageedu.com/ yum.log

[root@localhost ~]# export PATH=$PATH:/tmp/

functions    .ICE-unix/   mageedu.com/ yum.log      

grub.conf    lost+found/  test/        

[root@localhost ~]# export PATH=$PATH:/tmp/test

[root@localhost ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/test

 

 


二、Linux文件系统上的特殊权限
 
1、进程的安全上下文:
  前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;
  (1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;
  (2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;
  (3) 进程拥的访问权限,取决其属主的访问权限:
    (a) 进程的属主,同文件属主,则应用文件属主权限;
    (b) 进程的属主,属于文件的属组,则应用文件属组权限;
    (c) 则应用其它权限;

2、SUID:
  (1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;
  (2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

  权限设定:
    chmod u+s FILE... 
    chmod u-s FILE...

  注意:
    s: 属主原本拥有x权限;
    S: 属主原本无x权限;

例如:用户需要修改密码,输入passwd命令之后,则运行/usr/bin/passwd文件,该文件的属主、属组都是root,其他用户只有执行权限。usr/bin/passwd文件属主拥有SUID后,会让该程序运行后就具有root的权限,那么以root的身份就能修改/etc/passwd、/etc/shadow这两个文件了。

 

[root@localhost ~]# ll /usr/bin/passwd 

-rwsr-xr-x. 1 root root 25980 Feb 22  2012 /usr/bin/passwd

 

3、SGID:
  默认情况下,用户创建文件时,其属级为此用户所属的基本组;
  一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

  权限设定:
    chmod g+s FILE...
    chmod g-s FILE...

4、Sticky:
  对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

  权限设定
    chmod o+t FILE...
    chmod o-t FILE...