Linux学习日志(三)

权限管理

   owner,group,other
         属主,属组,其他

权限:

    read write execute
      r   w    x
    用户的不拥有某位权限,则使用-占位
    r-x:读和执行的权限
    r--:只读权限
    rw-:读写权限
    使用8位数来表示
    r:4
    w:2
    x:1

文件:

  r:可以使用内容查看类的命令来显示其相关内容
  w: 可以使用编辑器修改其内容
  x:可以将其发起一个进程

目录:

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

修改文件的属主和属组 :仅管理员可执行,chown,chgrp

chmod命令

操作三类用户的权限:使用8进制形式
    chmod OCTAL -MODE file ...
            u:属主
            g:属组
            o:其他
            a:所有
            =:操作指定类型用户的权限
            +/—:操作置顶类型用户的单个权限
            参照其他文件的权限为当前文件来赋权
                chmod --reference=参照文件名 文件名
操作指定类别用户的权限:使用u,g,o,a来赋权,基于=或+/-来进行  
参照其他文件的权限当文件赋权限

umask

 创建文件:666-umask
        文件默认决不允许出现执行权限:
 创建目录:777-umask
 root:022
 如果用户名和基本组名一致:002,否则为022   

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

chown [option] UserName [{:|.} GroupName] file ...      
     -R : 递归
     -- reference

权限应用模型:

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

  2.总结权限管理:chmod chown chgrp umask

练习

1.新建一个用户openstacl ,但不给其创建家目录,创建完成后使用su命令切换至此目录,查看其命令提示符及PATH和HOME两个环境变量的值

         useradd -M openstack
         su -openstack
         echo $PATH $HOME

2.复制/etc/skel目录为/home/openstack

          cp -r /etc/skel /home/openstack
  1. 改变/home/openstack 及其 内部文件的属主属组均为openstack;

        chown -R openstack.openstack /home/openstack 
    

    4./home/openstack及其内部的文件,属组合其他用户没有任何访问权限

    chmod -R go=--- /home/openstack
    su - openstack
    echo $PATH $HOME 
    
  2. 新建系统组MySQL,新建系统用户MySQL ,属于MYSQL组,要求没有家目录且shell 为/sbin/nologin;

        groupadd -r mysql
        useradd -r -s /sbin/nologin -g mysql mysql 
    
  3. 新建GID为600的组doyle,新建用户gentoo ,要求家目录为/users/gentoo,密码同用户名字

          groupadd -g 600 doyle
          mkdir /users
          useradd -d /users/gentoo gentoo
          passwd gentooo
    
  4. 新建用户centos,其家目录为/users/centos,密码同用户名字

    useradd -d /users/centos centos;
    passwd centos;
    
  5. 新建用户www,其家目录为/users/www,删除www用户,但保留其家目录

    useradd -d /users/www www;
    userdel www
    
  6. 用户gentoo和centos均为doyle为其附加组

       usermod -a -G doyle gentoo
       usermod -a -G doyle centos
    

bash介绍

shell:人机交互界面,
bash: 命令解释器,解析器

bash特性之六:

 快捷键
     Ctrl+a:跳至命令行首
     Ctrl+e:跳至命令行尾
     Ctrl+u:删除命令行首至当前光标所在处的内容
     Ctrl+k:删除当前光标所在处至命令行尾的内容
     Ctrl+l:清屏,相当于clear命令
     Ctrl+c:终止或者取消命令
     Ctrl+z:将当前命令送至后台(fg调回命令)

bash特性之七:补全功能

命令补全:在PATH中搜索补全

    shell命令:内部,外部
         外部:在系统某路经下有一个可执行程序
    PATH,一组以冒号分隔的路径

路径补全:在给出的打头路径下补全,如果没有打头路径,则为当前目录

       使用tab补全

bash特性之八:

 提供编程环境
     支持使用变量
     支持程序控制

#!/bin/bash被称为shebang

练习

1.创建一个组newgroup,id号为4000

2.创建一个用户doyle ,id 号为3001 ,附加组为newgroup;
3.创建目录/tmpj/hellodirxyz
4.复制/etc/fstab至上面的目录中
5.改变目录及内部文件的属主和属组为doyle
6.让目录及内部文件的其他用户没有任何权限

bash的特性之九:bash中的变量

弱类型语言变量:

   1.不强制区分变量的类型,无论存储何种数据,均已字符格式进行
   2.无须事先声明:用到时,直接使用,直接赋值
   bash:动态编程语言,是弱类型语言

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

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

    引用变量: ${Var_Name}

    撤销变量:unset Var_Name

局部变量:只对某一部分有效

    定义变量:local Var_Name="Value"

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

      定义:export Var_Name="var name"
      注意不要和当前环境的环境变量冲突 

位置变量:

       $1,......$n

特殊变量

      $0:脚本名称自身
        $?:上一条命令的执行状态
            状态用数字表示:0-255
            0:表示成功
                1-255:失败,1.2.127.255预留
        $$ 
        $!
        $#
        $*

变量的命名要求:

   只能使用数字,字母,和下划线组成
   不能以数字开头
   不能使用程序中的关键字
   见名知义

不带任何参数的set,显示当前系统的所有变量
环境变量:用来定义bash的工作特性,用来保存当前会话的属性信息
显示所有环境变量:export ,env ,printenv

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

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

         /etc/profile 全局
         /etc/profile.d/*.sh 全局
         ~/.bash_profile 个人配置,仅对当前用户有效

  功能:
   设定环境变量
   运行命令或者脚本

bashrc 类:非交互工登录用户提供配置

       /etc/bashrc:全局
       ~/.bashrc:个人配置

 功能:
   设定本地变量
   定义命令别名

登陆类型:

    交互式登录:直接通过终端输入用户信息登陆系统
     su - UserName或su -l UserName:
    如何读取配置文件
    /etc/profile -->/etc/profile.d/*.sh -->~/.bash_profile-->~/.bashrc -->/etc/bashrc

    非交互式登录:
            su UseName
             图形界面下的终端
             执行脚本的时候,先设置配置文件
        如何读取配置文件
        ~/.bashrc -->/etc/bashrc -->/etc/profile.d/*.sh

通知shell重读系统文件

     source(.) 重读配置文件

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

 顺序执行:默认法则,逐条执行各命令
 选择执行:分支,条件判断,符合条件的分支予以执行
 循环执行:将同一段代买反复执行有限次,所以,循环必须有退出条件,否则将陷入死循环     
循环控制语句

for循环

      for var_Name in 列表; do
          循环体(正常执行的执行命令)
          语句1
          语句2
          语句3
          ...
      done

bash -n 脚本文件 检查脚本文件语法是否错误

       while
       until

列表的生成方法:

    生成数字列表{start..end}、seq[start][stop]
      seq 起始数字、步长,结束数字

for:通过使用一个变量去遍历给定列表中的每个元素。在每次变量赋值时执行一次循环体,直至赋值完成所有元素退出循环

总结:生成列表方式
   1.直接给出列表
   2.使用文件名通配的机制生成列表
   3.可以使用{}或seq命令生成数字序列
   4.使用命令生成  

文本处理类的命令

wc

   wc[option][file]...
     -l:统计行数
     -c:统计字节数
     -w:统计单词数    

tr 转换字符或删除字符

tr ‘集合1’ ’集合2‘
tr -d ’字符集合‘

cut:根据制定的分隔符切片,并显示出需要显示的片

cut 选项 参数

-d字符:指定分隔符
-f数字:指定要显示的字段
   单个数字:一个字段
   多个离散字段:逗号分隔
   多个连续字段:-分隔

sort:按字符进行比较

sort[options] file

-f:忽略大小写
-n:对数字进行排序
-t:指定分隔符
-k 数字:指定分隔后进行比较字段
-u:重复的行,只显示一行
uniq:移除重复的行
-c:统计每一行出现的次数(靠着的行)
-d:仅显示出现最少两次的行
-u:仅显示不重复的行

练习

(1) 切换指centos用户,定义本地变量FirstVar ,其值为“test variable”

    su -centos
    FirstVar="test variable"

(2) 另一个终端,使用gentoo用户查看FirsVar变量的值,如果没有值,为什么?

     只对当前shell进程有效,对其子shell以及其他shell都无效

(3) 声明一个变量CurTime,其值为当前系统

       curTime=`date +%T`

(4) 使用echo命令显示“the current time is:” is 后跟上curtime变量的值

    echo "the current time is: $curTime"

(5) 回至centos用户的终端,复制/etc/pam.d目录至/tmp目录中,并重命令为test;

         cp -r /etc/pam.d/ /tmp/test

(6) 声明变量fileName,其值为刚才复制的目录/tmp/test

      fileName="/tmp/test"

(7) 修改变量filename所表示的目录及其内部所有文件的其他用户均没有任何访问权限;

        chmod -R o=$fileName

(8) centos用户是否可以修改变量filename所表示的目录的属主和属组? 如果能,将其改变gentoo用户和gentoo组;如果不能,则使用root用户修改

脚本练习

练习一: 写一个脚本,用file命令显示/var/log目录下每个文件的内容类型;
提示:列表生产的方法为/var/log/*

练习二:写一个脚本
1.创建一个/tmp/scripttest目录,用变量保存目录名‘
2. 在目录里创建测试文件tfile1-tfile20
3. 创建用户testuser1和testuser2;
4. 将tfile1-ftile10的属主和属组改为testuser1;
5. 将tfile1-tfile20的属主和属组改为testuser2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值