您的位置:首页 > 运维架构 > Shell

bash环境变量、特殊权限及磁盘管理与文件系统

2015-09-06 19:07 411 查看
bash环境配置:
配置文件,生效范围划分,存在两类:
全局配置:/etc/profile, /etc/profile.d/*.sh,/etc/bashrc
个人配置:~/.bash_profile,~/.bashrc

按功能划分,存在两类:
profile类:为交互式登录的shell提供配置
/etc/profile, /etc/profile.d/*.sh
~/.bash_profile
功用:
(1) 定义环境变量,例如PATH、PS1
(2) 运行命令或脚本

bashrc类:为非交互式登录shell提供配置
/etc/bashrc
~/.bashrc
功用:
(1) 定义命令别名;
(2) 定义本地变量;

变量:内存空间,变量名
类型:
环境变量:作用范围当前shell进程及其子进程
本地变量:作用范围当前shell进程
局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

位置变量:$1, $2
特殊变量:$?

变量定义方式:
bash内置变量:可直接调用,内置了许多环境变量,例如PATH等
自定义变量:
变量赋值:变量名=值

bash弱类型:
变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

定义本地变量:
name=value
查看命令:set

定义环境变量:
export name=value
declare -x name=value
查看:env, printenv, export
撤消变量:
unset name
引用变量:
${name}, $name
bash中的引用符号:
'': 强引用,变量替换不会发生
"":弱引用
``: 命令引用

shell登录类型:
交互式登录:
直接通过终端进行的登录;
通过su -l 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
注意:会产生重复的变量

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

SUID:
(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;
(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;
权限设定:
chmod u+s FILE...
chmod u-s FILE...
注意:
s: 属主原本拥有x权限;
S: 属主原本无x权限;

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

Sticky:
对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;
权限设定
chmod o+t FILE...
chmod o-t FILE...

Linux系统管理
磁盘和文件系统管理;
RAID, LVM; btrfs;
程序包管理:rpm, yum(dnf)
Linux的网络管理;
进程和作业管理:htop, glances, tsar;
sed和awk;
Linux系统的开机启动流程;
内核基础知识,内核定制编译;
系统安装:kickstart, pxe

Linux磁盘管理
硬盘:
机械式硬盘,SSD,机械式:
track
sector: 512bytes
cylinder: 分区的基本单位;
MBR:Master Boot Record
512bytes 446: bootloader 64: filesystem allocation table 16: 标识一个分 区 2:55AA
磁盘接口类型:
IDE (ATA):133MB/s,/dev/hd
SCSI: 640MB/s
SATA:6Gbps
SAS:6Gbps
USB:480MB/s

识别硬盘设备:/dev/sd
标记不同的硬盘设备:/dev/sd[a-z]
标记同一设备上的不同分区:/dev/sd[a-z][1-]
1-4: 主或扩展分区标识
5+:逻辑分区标识

设备文件:特殊文件
设备号:major, minor
major: 设备类型
minor: 同一类型下的不同设备
"块":block,随机设备
"字符":character,线性设备

分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;
分区工具:fdisk, parted, sfdisk
fdisk工具的使用:最多支持在一块硬盘上的15个分区;
分区管理子命令:
p: 显示
n: 创建
d: 删除
t: 修改分区ID
l: 列出所有支持ID类型
w: 保存退出
q: 放弃修改并退出
m: 获取帮助
创建完成之后,查看内核是否已经识别新的分区:
# cat /proc/partitions
有三个命令可以让内核重读磁盘分区表:
CentOS 5: partprobe [DEVICE]
CentOS 6或7: partx,kpartx
partx命令:
partx DEVICE
partx -a DEVICE
partx -a -n M:N DEVICE
M
M:
:N

kpartx命令:
kpartx -af DEVICE

Linux文件系统管理
文件系统:
VFS:Virtual File System
Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
光盘:iso9660
Windows: fat32(vfat), ntfs
Unix: ffs, ufs, jfs, jfs2
网络文件系统:nfs, cifs
集群文件系统:ocfs2, gfs2
分布式文件系统:ceph, moosefs, mogilefs, hdfs, gfs, glusterfs

(1) 日志型文件系统
非日志型文件系统:ext2
日志型文件系统:ext3
(2) swap:交换分区

创建文件系统:
在分区上执行格式化(高级格式化)
要使用某种文件系统,满足两个条件:
内核中:支持此种文件系统
用户空间:有文件系统管理工具

创建工具:mkfs (make filesystem)
mkfs用法:
mkfs -t type DEVICE
mkfs.type DEVICE

ext系列文件系统的专用管理工具:
mke2fs -t {ext2|ext3|ext4} DEVICE
-b BLOCK: 1024, 2048, 4096
-L 'LABEL': 设定卷标

blkid命令:
blkid DEVICE
LABEL, UUID, TYPE

作业:
让普通用户能使用/tmp/cat去查看/etc/shadow文件
chmod u+s ./cat
[root@localhost ~]# cp /usr/bin/cat /tmp/
[root@localhost tmp]# chmod u+s cat
[root@localhost tmp]# su  Hadoop
[hadoop@localhost ~]$ /tmp/cat /etc/shadow


创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件
mkdir p /test/data
chmod g+w /test/data
chmod g+s /test/data
chmod o+t /test/data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  配置文件 profile