day60:Linux压缩与打包&用户管理&用户提权sudo&grep
目录1.文件管理-压缩与打包 2.用户管理 用户怎么查 如何创建用户 创建的用户信息都存储在哪? 用户存储密码的文件 如何为用户设定密码? 3.用户组 4.用户提权相关 5.Extra:额外补充 文件管理-压缩与打包压缩包的两种格式:zip和tar.gz 1.什么是压缩包?压缩包是一个特殊的文件,将多个文件和目录整合在一个文件中。 2.为什么要使用压缩包?1.便于传输 2.压缩后的体积会变小 3.实现打包与压缩有哪些工具
linux:zip和tar.gz 4.压缩包如何实现?1.gzip:仅针对文件gzip /etc/yum.repo.d/CentOS-Base.repo # 压缩,原文件不见了 zcat /etc/yum.repo.d/CentOS-Base.repo.gz 查看 gzip -d /etc/yum.repo.d/CentOS-Base.repo.gz 解压 2.zip:针对文件和目录yum install zip -y 安装一下zip zip -r yum_local.zip /etc/yum.repo.d 压缩 yum install unzip -y 安装一下unzip unzip yum_local.zip -d /opt 解压到/opt 3.tar.gz''' c:创建 z:压缩类型 f:指定文件名称 x:自动识别文件类型 ''' tar czf etc.tar.gz /etc /home/ tar xf etc.tar.gz 解压 tar xf etc.tar.gz -C /mnt/ / 指定解压到/mnt/目录 用户管理1.什么是用户?指能够正常登陆操作系统 2.为什么要有用户?
2.服务器可能会有多个用户,root权限太大,需要创建一些普通用户 3.用户分类? ? ?类型? ? ? ? ? 名称? ? ? ? ? ? ? ? ID编号 进程能够以什么样的方式去访问一个文件和目录,取决于进程运行的“用户身份”对该文件或目录是否拥有对应的权限。 4.用户怎么查id root 查看root用户的信息 uid=0(root) gid=0(root) 组=0(root)''' 5.如何创建用户useradd oldboy 创建用户 id oldboy 查看oldboy用户的信息 uid=1001(oldboy) gid=1001(oldboy) 组=1001(oldboy)''' 6.创建的用户信息都存储在哪?存储用户信息以冒号为分隔符,总共有7列 cat /etc/passwd 查看所有用户信息 root:x:0:0:root:/root:/bin/bash oldboy:x:1001:1001::home/oldboy:/bin/bash
第一列:用户 第二列:密码占位符,密码存储在/etc/shadow 第三列:用户的UID 第四列:用户的GID 第五列:描述信息 commit 第六列:用户的家目录 第七列:用户登录的bash类型 7.用户存储密码的文件cat /etc/shadow 8.详细了解下创建用户的一些个参数-u: 指定用户的UID -g: 指定用户的基本组 ( 不指定,默认创建与用户同名的组 ) -G: 指定附加组 ( 干爹 ) -c: 指定注释信息 -s: 指定登录的bash类型,默认是 /bin/bash -r: 指定系统用户 -M: 不创建用户的家目录 例子11.创建oldboyedu用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登陆shell:/bin/bash [root@oldboy-pythonedu ~] groupadd students [root@oldboy-pythonedu ~] groupadd sa [root@oldboy-pythonedu ~] useradd oldboyedu -u 5001 -g students -G sa -c "2020 new student" -s /bin/bash 例子22.创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统 [root@oldboy-pythonedu ~] useradd mysql -r -M -s /sbin/nologin 9.如何为用户设定密码?
2.复杂:不好记忆 建议密码使用工具:lastpass --->windows mac android ios 设定密码的方式交互式: passwd [username] 非交互式: [root@oldboy-pythonedu ~] echo "12" | passwd --stdin root #固定密码 [root@oldboy-pythonedu ~] echo $RANDOM | md5sum | cut -c 2-10 | tee 1.txt |passwd --stdin root # 随机密码 批量创建用户,以及设定随机密码[root@oldboy-pythonedu ~] cat useradd_2.sh !/usr/bin/bash read -p "请输入你要创建的用户名称: " User read -p 请输入你要创建的用户数量: Number 1.如何批量创建用户 for i in $(seq $Number) do user_name=$User-$i pass=$(echo $RANDOM | md5sum | cut -c 2-10) 判断用户是否存在,如果存在则不创建 id $user_name &>/dev/null if [ $? -eq 0 ];then continue else 创建用户 useradd $user_name 设定密码 echo $pass" | passwd --stdin null echo Username: $user_name Password: $pass ok.. echo " >> user_password.txt fi done 删除用户userdel -r old-23 删除用户 不建议加-r:因为很多情况下开发使用的用户家目录下有很多软件和配置文件''' 用户组1.组基本概念
附加组:创建用户的时候,可以指定我想加入的附加组,此时用户就可以具备附加的组的权限 主组只能有一个,附加组可以有很多个 3.创建组
groupadd -g 5005 devops 4.删除组groupdel devops groupdel students userdel -r oldboyedu groupdel students 用户提权相关1.su切换身份需要知道用户的密码,才可以切换 su -root 输入root的密码
1.不希望给开发root的权限,容易造成故障 2.不给开发权限,有些任务它需要root权限 2.sudo提权1.快速给用户分配一个sudo的权限usermod -G wheel oldxu 添加用户到组里 echo 123" | passwd --stdin oldxu 给用户设置密码 2.验证权限yum install wget -y 您需要root权限才能执行此命令 sudo yum install wget -y # 3.给不同用户分配不同权限需求:给公司的运维部门分配一些权限,给开发部门分配一些权限 yum install wget -y #
1.定义组名称(sudo里面虚拟的) User_Alias DEV = kaifa1,kaifa2
User_Alias OPS = ops1,ops2
2.定义权限 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,/usr/bin/systemctl start,/usr/bin/systemctl stop,/usr/bin/systemctl reload,/usr/bin/systemctl restart,/usr/bin/systemctl status,/usr/bin/systemctl enable,1)">systemctl disable # Storage Cmnd_Alias STORAGE = /sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount # Processes Cmnd_Alias PROCESSES = /bin/nice,/bin/kill,/usr/bin/kill,/usr/bin/killall 3.将用户组与权限进行绑定 root ALL=(ALL) NOPASSWD:ALL 可以执行所有的命令,并且无需输入密码 DEV ALL=(ALL) NETWORKING,SOFTWARE,SERVICES OPS ALL=(ALL) NETWORKING,SERVICES,PROCESSES,STORAGE 4.创建用户并设置密码 [root@oldboy-pythonedu ~] useradd kaifa1 [root@oldboy-pythonedu ~] useradd kaifa2 [root@oldboy-pythonedu ~] useradd ops1 [root@oldboy-pythonedu ~] useradd ops2 [root@oldboy-pythonedu ~] echo "1" | passwd --stdin kaifa1 [root@oldboy-pythonedu ~] echo "1" | passwd --stdin kaifa2 [root@oldboy-pythonedu ~] echo "1" | passwd --stdin ops1 [root@oldboy-pythonedu ~] echo "1" | passwd --stdin ops2 5.验证开发的权限和运维的权限是否不一致 sudo -l 用户 kaifa1 可以在 oldboy-pythonedu 上运行以下命令: (ALL) /sbin/route,/sbin/iptables,/usr/bin/rfcomm,/sbin/mii-tool,1)">rpm,/usr/bin/up2date,/usr/bin/yum,/sbin/service,1)">systemctl start,/usr/bin/systemctl stop,1)">systemctl restart,/usr/bin/systemctl status,1)">systemctl disable 用户 ops1 可以在 oldboy-pythonedu 上运行以下命令: (ALL) /sbin/route,1)">systemctl disable,/bin/nice,/usr/bin/killall,/sbin/fdisk,1)">sfdisk,/sbin/parted,/bin/umount Extra:额外补充1.提取IP地址:grep sed awk[root@oldboy-pythonedu ~] ifconfig ens32 | grep "inet " | grep -Eo "[0-9]{1,3}.[0-9]{1,3}" | head -1 10.0.0.200 [root@oldboy-pythonedu ~] ifconfig ens32 | sed -n '2p' | sed -r 's#(^.*inet) (.*) (net.*$)#2#g' 10.0.0.200 ifconfig ens32 | awk 'NR==2 {print $2}' 10.0.0.200 2.提取/etc/passwd 用户名称,uid,登录bash[root@oldboy-pythonedu ~] #awk -F ":" '{print $1,$3,$7}' /etc/passwd
3.统计分析访问中来源做多前10的IP地址:sort uniq awk3.统计分析访问中来源做多前10的IP地址 sort uniq awk 1.来源的IP地址在第几列 2.对数据进行排序 3.对数据进行去重,统计 4.取出前top10的IP地址 [root@oldboy-pythonedu ~] awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10 > access_top10.txt 31577 116.211.216.152 25142 222.186.49.194 20841 120.27.74.166 9304 39.105.242.163 8277 61.147.73.164 7805 222.186.49.165 7559 123.156.198.164 7233 61.160.206.107 6596 220.170.48.75 6200 61.147.73.171 time awk '{ ip[$1]++ } END { for ( i in ip ) print ip[i],i}' access.log | sort -nr | head -10 { ip[$1]++ } END{ for ( i in ip) { print i,ip[i] } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |