Linux学习日志(三)

本文发布时间: 2019-Mar-22
权限管理 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,chgrpchmod命令操作三类用户的权限:使用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,chgrpchown [option] UserName [{:|.} GroupName] file ... -R : 递归 -- reference权限应用模型: 1.进程的属主,是否与文件的属主相同,如果相同,进程则以文件属主的权限来访问文件,否则,进程的属主所属的组,是否其中之一与文件的属组相同,如果相同,进程则以文件属组的权限来访问文件;否则,进程则以文件的其他用户的权限来访问文件 2.总结权限管理:chmod chown chgrp umask练习1.新建一个用户openstacl ,但不给其创建家目录,创建完成后使用su命令切换至此目录,查看其命令提示符及PATH和HOME两个环境变量的值 useradd -M openstack su -openstack echo $PATH $HOME2.复制/etc/skel目录为/home/openstack cp -r /etc/skel /home/openstack改变/home/openstack 及其 内部文件的属主属组均为openstack; chown -R openstack.openstack /home/openstack 4./home/openstack及其内部的文件,属组合其他用户没有任何访问权限chmod -R go=--- /home/openstacksu - openstackecho $PATH $HOME 新建系统组MySQL,新建系统用户MySQL ,属于MYSQL组,要求没有家目录且shell 为/sbin/nologin; groupadd -r mysql useradd -r -s /sbin/nologin -g mysql mysql 新建GID为600的组doyle,新建用户gentoo ,要求家目录为/users/gentoo,密码同用户名字 groupadd -g 600 doyle mkdir /users useradd -d /users/gentoo gentoo passwd gentooo新建用户centos,其家目录为/users/centos,密码同用户名字useradd -d /users/centos centos;passwd centos;新建用户www,其家目录为/users/www,删除www用户,但保留其家目录useradd -d /users/www www;userdel www用户gentoo和centos均为doyle为其附加组 usermod -a -G doyle gentoo usermod -a -G doyle centosbash介绍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号为40002.创建一个用户doyle ,id 号为3001 ,附加组为newgroup;3.创建目录/tmpj/hellodirxyz4.复制/etc/fstab至上面的目录中5.改变目录及内部文件的属主和属组为doyle6.让目录及内部文件的其他用户没有任何权限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 ,printenvbash的配置文件:持久保存用户配置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 ... donebash -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-tfile203. 创建用户testuser1和testuser2;4. 将tfile1-ftile10的属主和属组改为testuser1;5. 将tfile1-tfile20的属主和属组改为testuser2


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表