linux基础(一)

 作为一个即将辞职打算走上技术岗位的 我来说,无疑2019年无疑是特别一年,之前的工作的职业方向和我的梦想的职业方向出入很大, 所以我翻过年毅然决然的辞掉了现在的工作,开始拿起书,从新开始。

昨天和今天我把linux的基础 全部通读了一遍,为了更好的进行复习,打算写成一篇博文 分享给各位不管是你是大佬还是初学者都请多多赐教,相互学习。

第一部分  linux的启动过程

linux基础(一)

推荐一个在线画图的工具processon,还可以的。

第二部分linux用户

 linux用户分为三类:超级用户(root),普通用户,虚拟用户。

root:可以对系统当中的所有文件,资源进行管理,删除,增加等操作。

普通用户:只能进行操作自己有权限的文件,资源

虚拟用户:该用户没有登录系统的权限,这个是系统默认创建的或者是安装某些应用程序的时候创建的,其主要作用是为了方便进行用户的管理。一般/etc/passwd 文件最后一列的都是/sbin/nologin

相关文件

/etc/passwd:文件的每一行包含了用户的信息。

linux基础(一)

用户名:加密口令:用户id(UID):用户组id(GID): 用户信息描述: 用户目录:登录shell

/etc/shadow :用户的密码文件

linux基础(一)

/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,保存并退出,具体操作如下: 

linux基础(一)

linux基础(一)

然后就是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