linux基础(一)
作为一个即将辞职打算走上技术岗位的 我来说,无疑2019年无疑是特别一年,之前的工作的职业方向和我的梦想的职业方向出入很大, 所以我翻过年毅然决然的辞掉了现在的工作,开始拿起书,从新开始。
昨天和今天我把linux的基础 全部通读了一遍,为了更好的进行复习,打算写成一篇博文 分享给各位不管是你是大佬还是初学者都请多多赐教,相互学习。
第一部分 linux的启动过程
推荐一个在线画图的工具processon,还可以的。
第二部分linux用户
linux用户分为三类:超级用户(root),普通用户,虚拟用户。
root:可以对系统当中的所有文件,资源进行管理,删除,增加等操作。
普通用户:只能进行操作自己有权限的文件,资源
虚拟用户:该用户没有登录系统的权限,这个是系统默认创建的或者是安装某些应用程序的时候创建的,其主要作用是为了方便进行用户的管理。一般/etc/passwd 文件最后一列的都是/sbin/nologin
相关文件
/etc/passwd:文件的每一行包含了用户的信息。
用户名:加密口令:用户id(UID):用户组id(GID): 用户信息描述: 用户目录:登录shell
/etc/shadow :用户的密码文件
/etc/gpasswd:用户组信息文件
/etc/gshadow:用户组密码文件
用户管理 命令:
useradd(增)
常见参数:
-c:指定新用户的注释信息
-d:指定用户目录
-M:不 创建用户目录
-s:指定用户登录的shell,一般分为两种/bin/bash和/sbin/nologin
-u:指定用户的UID
-G:指定用户所属的用户组
用户组管理命令:groupadd(增),groupmod(改),groupdel(删)
我们源码包安装软件的时候需要通常创建一个用户。 创建方式如下:
useradd -s /sbin/nologin -G Mysql -M mysql
userdel(删)
常用参数
-f:强制删除
-r:同时删除用户目录
一般情况下,在删除用户的时候并不会删除用户的目录,只会删除用户。
userdel -rf mysql
usermod(改)
其选项和useradd相同
usermod -s /bin/bash -m /home/mysql -G mysql mysql
groupadd(用户组(增))
-g: 指定用户组的GID
groupdel (用户组(删))
groupmod(用户组 (改))
常用参数:
-g:更改GID
-n:更改用户组的名称
用户密码
主要文件:
/etc/passwd:用户信息文件
/etc/shadow:密码文件
/etc/gpasswd:用户组信息文件
/etc/gshadow:用户组密码文件
主要命令:passwd
常见用法:
echo "12344566" |passwd --stdin mysql
用户常见的其他命令
who:查看已经登录的用户信息
whoami:查看当前的用户信息
write:与当前登录系统的用户进行通信
pwck:检查/etc/passwd和/etc/shadow 的记录格式是否正确
常用的shell脚本:
(1)批量创建用户
思路:创建一个用户文件,以分号分割,读取 文件,根据文件创建用户和密码。
user_list 文件格式
用户名:密码
#!/bin/bash
for name in "user_list"
do
user_name=`awk -F ":" '{print $1}' $name`
password=`awk -F ":" '{print $2}' $name`
if [ -n $user_name ];
then
useradd $user_name
echo "$password" |passwd --stdin $user_name
fi
done
完整删除用户相关文件
思路
1,首先检查用户文件目录当中是否有该用户
2,停止用户相关的所有进程
3,删除用户相关的所有目录
4,删除用户
#!/bin/bash
for name in "user_list"
do
user_name=`awk -F ":" '{print $1}' $name`
#判断用户是否存在,如果不存在就执行下一下循环
if [ -z $user_name ]
continue
fi
if [ $(cat /etc/password|grep $user_name|wc -l) == 0 ]
echo "user not exit"
else if
#结束用户相关的进程
p_user=$( ps -ef |grep -v grep |grep $user_name) #获取用户相关的进程信息
pid_user = $(awk '{print $2}') #获取进程的进程号
for n in pid_user
do
kill -9 $n #杀死所有的进程
sleep 2
kill -9 $n
done
#删除用户相关的文件
find / -user $user_name -exec rm {} \; 2>&1 >/dev/null
#删除用户
userdel $user_name
sleep 5
echo "delete finished"
fi
fi
用户权限管理
root用户拥有系统的高权限,当普通 用户想使用部分的root权限进行系统 维护的时候,可以通过root用户对其进授权。
相关文件:/etc/sudoers
相关命令:visudo ,sudo
/etc/sudoer 是root用户授权普通用户的配置文件
--------主机别名----------------
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
---------用户别名---------------
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
-----------命令相关别名设置-------------------------
## Command Aliases
## These are groups of related commands...
--------网络命令别名----------
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
------软件操作别名-----------------
## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
-------系统服务操作命令别名----------------
## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
-----本地数据库操作命令别名
## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb
------磁盘存储操作命令别名-------------
## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
--------------文件权限操作别名------------
## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
---------进程管理命令别名----------------------
## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
------驱动管理命令别名-----------------------
## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe
文件当中为相同功能,相似的功能已alias的方式表示,方便在最后进行权限分配的时候已达到方便快捷作用。类似于全局变量。
sudoers文件 编辑一般我们采用的是visudo的方式进行编辑,这是因为 sudo自带有格式检查的功能。
授予普通用户user1在fs1,fs2主机有执行网络相关命令的权限
%user1 (FILESERVERS)=(root) NOPASSWOR: NETWORKING
用户名 主机名=(实际执行命令的用户) 使用时是否输入密码 能够执行的命令
第三部分 磁盘
磁盘分区与挂载。
在linux系统当中一切设备都是以文件的方式表示,当系统新加入物理磁盘时,系统重启之后会发现在/dev/会多出一个文件,命名一般是hd*(* 代表a-z)这样的形式,当加入的是固态磁盘的话是 该文件sd*。是新加入的磁盘
新加入的磁盘一般需要三个步骤才能进行使用:
1,分区 (fdisk)
2,格式化创建文件系统(mkfs)
3,挂载(mount)
linux分区除了主分区以外,还需要分配swap分区,作为虚拟内存,减轻内存的负载, 当然linux系统在安装的系统安装引导会 进行swap分区,对于新加入的磁盘来说就没有必要进行swap分区了。
linux分区最多有四个组分区,以主分区+ 扩展分区的方式表现,编号从hd0-4,主分区进行分区之后可以直接格式化创建文件系统,扩展分区则需要-再进行逻辑分区才能够进行使用, 编号从hd5-63,最大数取决于磁盘的分区表的 大小。IDE磁盘一般支持59个,sata盘一般支持11个逻辑分区
linux的分区分区管理工具:fdisk ,parted
fdisk提供交互式的分区 ,例如 fdisk /dev/hdb,输入m进去分区帮助界面。
交互式命令介绍:
n:新增一个分区
p:查看分区
d:删除一个分区
t:修改分区
w:保存分区并且退出
实验测试,n创建新的分区时,交互式界面会提示用户是创建主分区还是创建扩展分区,如果用户创建的是扩展分区,那么扩展分区要进行逻辑分区。创建提示当中,系统提示的是以扇区大小来划分存储空间,用户也可以自己选择存储的计量单位(M,G),创建之后,p查看分区信息,w,保存并退出,具体操作如下:
然后就是mkfs 格式化创建文件系统。
parted同样也提供交互式的分区 parted /dev/hdb 输入help查看帮助,这里就
mpart:创建分区
mkfs:创建文件系统
resize:更改分区大小
rm : 删除分区
quit:退出 parted分区
LVM逻辑卷
LVM逻辑卷是建立在磁盘与分区之上的逻辑层,通过他管理员可以更好的管理磁盘的分区,一个分区既是一个 物理卷(PV), 若干个PV组成卷组(VG)管理员可以在卷组之上创建逻辑卷,并可以在卷组之上创建文件系统。
PV操作:
1,创建PV:pvcreate
2,查看PV:pvdisplay
3,删除PV:pvremove
VG操作
1,创建卷组:vgcreate
2,扩容卷组:vgextend
3,查看卷组:vgdisplay
4,从卷组当中上删除物理卷:vgreduce.
5,删除卷组:vgremove
LV操作:
1,创建 逻辑卷:lvcreate
2,更改逻辑卷大小:lvresize
3, 查看逻辑卷信息:lvdisplay
4,删除逻辑卷:lvremove