Linux的super super super easy教程 | 用户权限

打补丁和生成补丁都是基于文本的

补丁:就是一个程序升级了 另外一个旧的程序可以通过这个补丁达到升级的一个目的

bug:问题

生成补丁:

diff -u 文件1 文件2 >补丁文件名

(找出差异存入新文件)

打补丁:

patch:打补丁的命令

patch  需要更新补丁的文件 <补丁文件

通过补丁包给需要的文件脚本打补丁

(一般是官方生成补丁包    个人客户进行补丁修补)

diff和patch只是适合纯文本的程序升级

-R 撤销打补丁 恢复原来的版本

patch  -R 需要更新补丁的文件 <补丁文件

如果判断一个文件是否发生变化?

  1. diff
  2. md5sum

双中括号左右两边必须空格

md5sum:输出为两短 前面是值 后面是文件名

md5 信息摘要算法      ( 从一大堆的东西里面 摘取非常重要的内容)

一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致

散列值=摘要

sum求和

排错方法:输出值

shell编程里面不能有空格

流程控制语句:

if

for

while

shell编程:

变量的定义(命名规则和python差不多 变量命名不要空格  判断的时候要空格)

       变量命名 :下划线(推荐) 驼峰

       存放数据的一个地方

       变量是容器

       变量赋值时字符串中间有空格时一定要加引号

       变量类型:

(在shell里如果一个变量没有定义 也是可以输出的 只是没有值 命令不报错)

       这里也有一个bug:$a/$b  若变量a和变量b都没定义  则这个输出则是 /

自定义变量

环境变量 :(有PATH)

       env 查看环境变量  set 查看所有变量

位置变量

预定义变量:系统里安装好就有的变量,不需要自定义(一般都是大写)

位置变量

函数

如何判断一个变量是否有值?

#变量 : 表示变量的长度   可以看出这个变量是否有值

echo ${#变量}  会输出变量的长度

用花括号把变量名括起来 :{变量}

       用于将变量和后面字母区分开来 避免混淆

       如 s=kkk  ${s}_jlk=kkk_jlk

不过也可以用变量命名外的标点符号(标点符号是天然的分割符号)

如 s=kkk  ${s}+jlk=kkk+jlk

位置变量:(这些可以理解为预定义变量)

       作用:往脚本里传递参数—》传参

$0  代表脚本的文件名

$1 第1个位置变量

$2 第2个位置变量

以此类推

$# 代表位置变量的个数

$*  ($@)代表所有的位置变量的内容

for循环中的位置变量的使用:

编写一个标本实现多个数字的求和

bash -x 脚本名字:可以看到整个脚本的执行过程

+ 表示执行了哪一条命令

set 给你看的变量是能够给你看的 位置变量不包括在里面

在环境变量里的命令可以不用绝对路径

不在环境变量的命令要用绝对路径

连续输入bash是bash里面包bash (按exit退出)

用户管理:

Linux里的用户与组:

administrator     window里的超级用户

root                   Linux超级用户

为什么引入用户和组?

安全性  -- 权限管理

--资源管理(存储资源   io资源   计算资源  最直观的感受就是对硬盘资源的控制)

权限管理:哪些文件某个用户可以读写

哪些进程某个用户可以启动

有关用户的命令:

id:查看用户的信息(uid gid groups)

括号里面是名称 用户名称 组的名称 和 这个用户所在的组的名称

每一个用户有唯一的uid(相当于这个系统给你的身份证号) ,给计算机识别(超级用户 的uid号就是0 )

每一个组有唯一的gid

一个用户可以属于不同的组,一个组可以有不同的用户

groups是看你这个用户参加了哪些组

useradd 用户名: 增加用户  

(若是第一次创建普通用户 ,uid是从1000开始计数的,每添加一个用户,uid加1)

(默认情况下, 创建用户的时候如果没有同名的组会同步创建一个和用户同名的组 默认将用户加入这个组)

创建一个用户会牵扯到哪些文件?

账户信息相关文件:

/etc/passwd

使用“:”分割

字段一:用户名

字段二:密码占位符,通常为x或者*(这个文件是谁都可以查看的,密码放在这里不安全)

字段三:用户id

字段四:所属基本组的id

字段五:用户的描述信息

字段六:家目录位置

字段七:登录的shell信息

用户密码放置文件:/etc/shadow

第二个字段存放的就是密码 “!!”表示没有密码

有密码的放置的是密码的sha512(哈希)

/etc/shadow- 是shadow 的备份文件 总比shadow少一次操作

/etc/passwd- 是passwd 的备份文件 总比passwd少一次操作

组信息相关文件:

/etc/group:存放组信息

/erc/gshadow:存放组的密码

/etc/group- 是组信息备份文件

/erc/gshadow- 是组密码的备份文件

/etc/这个目录就是放置配置文件的

家目录信息相关文件:

创建用户的时候,默认情况下会在/home目录下创建一个同名的文件夹

/home/放置普通用户的家目录的    /root 是root用户的家目录

su – 用户名: 切换用户且到达用户的家目录(exit或者CTRL+d退出)

普通用户基本上只能在家目录和tmp目录进行操作

一个新的用户家目录下的文件:

/etc/skel:用户环境默认设置文件

创建用户时会拷贝一份/etc/skel/下的文件到用户的家目录

用户默认属性设置文件:

/etc/login.defs :规定了uid从多少开始,密码的过期天数,密码的加密算法

邮件目录:

/var/spool/mail 下面创建一个同名的文件 (如果里面有东西说明root给你)

找出系统中uid大于等于1000的用户,显示出它的名字,uid,家目录,shell信息

userdel  用户名:删除用户

usermod 修改用户

users 查看当前是哪个用户

用户账户:(uid给系统识别的 名称给人识别的)

超级用户 root 皇帝    uid:0

程序用户 大臣           uid:1-999

普通用户 老百姓       uid:>=1000

程序用户:启动进程所用的用户

进程是正在进行的程序 ,计算机进行资源分配的最小单位(cpu资源 io资源 存储资源)

进程一般是从硬盘读取到内存中运行的 因为内存快

查看进程命令:这两种只是输出形式不一样

ps -aux

-a 打印所有的用户信息 用BSD语法表示

ps -ef 查看Linux进程的用户有效信息 用标准输出

在python里面查看进程的有效用户

import os

os.geteuid()可以得到有效用户的uid(一般来说以哪个用户启动 有效用户就是哪个)

os.getuid()可以得到有效用户的uid

os.getgid() 可以得到有效用户的gid

os.getpid()可以得到有效用户的pid

os库用法:os.mkdir(“python-test”) 在进入python3的目录下面创建了python-test目录

os.walk(“.”) 生成当前目录树   list(os.walk(“.”))把它转化成列表输出 相当于ls

对于脚本而言 怎么传参?

如bash 脚本名 参数1

$1 表示参数1

python 脚本传参?

       如 python3 脚本名 参数1

       使用sys.argv 会得到一个列表 sys.argv [1]表示参数1      sys.argv[0]表示脚本名

python里面调用Linux命令:

使用os 模块的os.system(“Linux命令”) 这个返回的是操作命令的返回值(状态码0和非0)

              0表示命令执行成功  非0表示命令执行失败

os.popen(“Linux命令”)这个返回的是操作命令的输出内容

 而相关内容用os.popen(“Linux命令”).read()读取

编写脚本判断用户是否存在 不存在就新建

要求: 命令行输入 bash 脚本名 用户名

命令行输入 python3 脚本名 用户名

服务一般都有一个客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值