用户类型:

    管理员:0

    一般用户:1-65535

    系统用户1-499

    普通用户:500+

 

权限管理:owner,group

    属主:

    属组:

    其他:

权限:read(读),write(写),execute(执行)。

    r(4)    w(2)    x(1)

文件:

    r:可以使用内容查看类的命令来显示其相关内容

    w:可以使用编辑器修改其内容

    x:可以将其发起一个进程;

目录:

    r:可以使用ls命令查看目录内容的文件信息;

    w:可以创建,删除文件。

    x:可以使用ls -l命令查看目录内容的文件信息,并且可以使用cd命令切换此目录为工作目录

用户的不拥有某位权限,则使用-占位;

r-x:可读可执行。

r--:只读。

rw-:可读可写。

元数据:属性,inode

修改属主,属组,仅管理员可执行。chown,chgrp。

改文件权限:chmod

chmod命令:

    操作三类用户的权限,使用8进制形式。

    chmod [-R] OCTAL-MODE file。。。

-R对内部命令生效,符号链接除外。

操作指定类别用户的权限:使用u,g,o,a来赋权,基于=或+/-来进行。

    u:属主。

    g:属组

    o:其他

    a:所有

    =:操作指定类别用户的权限:u=,ug=,u=,g=

    +/-:操作指定类别用户的单个权限。u-x,g+r,o-x,+x

chmod 750 ssl/ = chmod u=rwx,g=x,o= ssl/

参照其他文件的权限为当前文件赋权。

--reference=要参照的文件 要修改权限的文件。

umask默认022 指的是root用户的默认。

    创建文件 666-umask

    文件默认决不允许出现执行权限。

    umask 023

666-023=643如果出现执行权限必须+1就是644

创建目录:777-umask

root:022

    如果用户和基本组组名一致:002;否则为-22;

修改文件的属主或属组:chown,chgrp

    -R:递归

    --reference=参照权限。

chown [option]UserName[{:|.}GroupName]file ...

chown --reference=fedora_dir/ -R pm

权限应用模型:

进程的属主,是否与文件的属主相同,如果相同,进程则以文件属主的权限;来访问文件。

否则进程的属主所属的组,是否其中之一与文件的属组相同,如果相同,进程则以文件属组的权限来访问文件。

否则进程则以文件的其他用户的权限来访问文件。

-M是不创建家目录

bash介绍:

    shell:人机交互界面

    sh,csh,tcsh,bash,ksh,dash,zsh。

bash:命令解释器

bash:

bash特性之bash的快捷键:

ctrl+a:直接到命令行首

ctrl+e:直接到命令行尾。

ctrl+u:删除光标到行首的位置。

ctrl+l:删除光标到行尾的位置。

ctrl+c终止或取消

ctrl+z将当前命令放置到后台。

bash之:bash补全

命令补全:

    shell命令:内部,外部。

    外部:在系统某路径下有一个可执行程序、

Path:是一组有冒号分隔的路径。

使用tab键

bash:解释器,解析器。

编程语言:

C:关机字,选择顺序。

    编译器:语言平台。

    解释器:语言平台。

程序执行逻辑:

    顺序执行。

选择执行(条件)

循环执行:

ELF:定义了一个可执行文件。可执行的规范。

变量:强类型的语言,要提前定义。

弱类型语言:不强制区分变量的类型,无论存储何种数据,均已字符格式进行。

    无须事先声明,用到时,直接使用,直接赋值。

bash:动态编程语言,是弱类型语言。

编程语言两类:
    动态语言

    解释型

        perl,bash,python

静态语言

    编译型

    c,c++

变量:

    数据存储格式:

    ASCII 同时存11  字符它占用32bit

    Binary    它占用4位

按照其变量是否需要严格定义其类型来划分。

    强类型语言

    弱类型语言

定义变量类型的作用:

1,数据存储格式。

2,数据的有效存储范围

3,排序机制不同。

4,参与的运算类型不同;

字符型

数值型:

    精确数值型:

        整型:

        近似数值型:

    浮点数:3.14

单精度

双精度

布尔型:

bash特性之-提供编程环境

变量

程序控制

#!/bin/bash
groupadd -g 4002 newgrouppp
useradd -G newgrouppp -u 3011 magedu3
mkdir /tmp/hellodirxyzxx
cp -r /etc/fstab /tmp/hellodirxyzxx
chown -R magedu3:magedu3 /tmp/hellodirxyzxx
chmod -R o=  /tmp/hellodirxyzxx

bash特性之-变量

变量的类型:

    本地变量:只对当前shell进程有效,对其子shell以及其他shell对等的都无效。

定义变量:[set]var_Name="Value"

引用变量:${var_Name}

撤销变量:unset Var_Name

set能够显示当前进程内部的所有变量。

    局部变量:仅对局部代码生效,比本地变量更小。

    local Var_name="value";

环境变量:对当前shell进程及其子shell有效。

export var_name=“value”

var_name=“values”

export var_name

位置变量:

    $1,...,$n

        ./firsh.sh 2 8

特殊变量:

$0:脚本名称自身

$?:返回上一个命令的执行状态、

状态用数字来表示:0-255

0:成功

1-255失败

set:

环境变量:用来bash的工作特性,用于保存当前回话的属性信息。

显示所有环境变量:export,env,prinenv

定义:export var_name="values"

export PATH=$PATH:/root/sbin/
   $PATH不加这个之前的环境变量都会丢失。

bash的配置文件:持久保存用户配置

    profile类:为交互式登陆的用户提供配置。

/etc/profile:全局

/etc/profile.d/*.sh:全局 片段,可以自己随意用要的PATH

~/.bash_profile:个人配置,仅对当前用户有效。

功能:

    设定环境变量。

允许命令或脚本

bashrc类:非交互式登陆用户提供配置。

/etc/bashrc:全局

~/.bashrc:个人配置

    功用:

        设定本地变量

        定义命令别名

登陆类型:

    交互式登陆:

    直接通过终端输入用户信息登陆系统。

su - Username或su -l UserName也叫做登陆用户。

非交互式登陆:

    su UserName

图形界面的终端

执行脚本

 

新增配置的生效方式:

通知shell重读配置文件的命令:

source(.)

.FILE

重新登陆

交互式登陆用户:

/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非交互式登陆用户:
 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh

变量命名要求:

    只能使用数字,字母和下划线组成。

    不能已数字开头

    不能使用程序中的关键字

    见名知义:totalWeight

 

bash脚本:面向过程的编程中

    顺序执行:默认法则,逐条执行个语句。

    选择执行:分支,条件判断,符合条件的分支予以执行。

    循环执行:将同一段代码反复执行有限次,所以,循环必须有退出条件,否则将进入死循环。

程序代码:语句和表达式组成。

    控制语句:

 

bash循环控制语句:

    for

    while

    until

for循环:

for var_Name in 列表; do

    语句1

    语句2

。。。。

done

for userName in gentoo mandirva debian

    useradd $userName

done

语法错误检测

bash -n 脚本文件

列表的生产方法:

    生成数字序列:{start..end},seq [start][step]end 1 3 10

#!/bin/bash
for userName in `seq 101 110`;do
        useradd user$userName
        echo "add user$userName successful"
done

for userName in {101..110};do userdel -r user$userName;done

for:通过使用一个变量去遍历给定列表中的每个元素,在每次变量赋值时执行一次循环体,直至赋值完成所有元素退出循环;
 总结:生成列表的方式
  1,直接给出列表
  2,使用文件名通配的机制生成列表
  3,可以使用{}或seq命令生成数字序列
  4,使用命令生成

 

文本处理类的命令:wc,word count:

行 单词数,字节数

-l:表示行

-w:单词

-c:字节

tr:字符转换命令。可以装换字符或删除字符

-d 删除字符指令

tr -d '字符集合'

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

cut:

    -d字符1:指定以什么为分隔符

-f#:指定要显示的那个字段

sort:文本排序命令:

默认是升序排序。

sort [option] file

    -f:忽略字符大小写。

    -n:比较数值大小。

    -t指定分隔符

-k:指定分割后进行比较字段

-u重复的行,只显示一次;

列子:

cut -d: -f3 /etc/passwd | sort -n
sort -n -t: -k3 /etc/passwd

uniq:移除重复的行。

-c:为每一行显示出现的次数。

-d:仅显示重复的行。

-u:仅显示不曾重复的行。