centos6.5 bash基础命令2

@@@第三天第二段

@@stat命令:查看文件的元数据信心!Inode

stat FILE...

bash文本编辑器编辑器:进行文本内容修改的程序

行编辑器:sed

全屏编辑器:nano, vi, vim

@@nano FILE...

用户和权限管理:

1、用户是什么?

2、没有用户计算机也可以正常运行

用户:用户就是计算机系统按需对操作人员授权,标识资源获取的识别符!资源分配,是安全权限模型的核心要素之一

密码:用户认证,对用户是否具有授权进行验证!

多用户的操作系统:同一时间允许多个用户对计算机进行操作的操作系统

用户容器:组(group),角色(role)

组名,Group IDentifier, GID

解析:在数据库按搜索码查找到对应的条目,并找与之对应额外其它数据过程

数据库

文本文件

SQL数据库

ldap数据库

/etc/passwd:用户信息

/etc/shadow:密码信息库

加密方法:

对称加密:DES, 3DES, AES

公钥加密:DSA, RSA

单向加密:雪崩效应,定长输出,不可逆

MD5: 信息摘要,128bits

SHA1: 安全的hash算法, 160bits

SHA256:

SHA512:

md5sum, sha1sum计算加密算法后所得值

组:用户容器,角色

/etc/group : 组信息

/etc/gshadow: 组密码

安全上下文:是一类定义某个进程允许做什么的许可和权限的集合,即运行中的进程有其属主和属组来定义进程所能获得的权限.

大纲:useradd, id, passwd, usermod, chsh, chage, chfn, userdel, groupadd, groupmod, groupdel, su

@@@第三天第三段

创建用户:

@@useradd :创建用户

/etc/passwd:文件信息解释

用户名:x:UID:基本组ID:comment信息:HOME:默认shell

useradd [options] UserName

-u UID:指定UID

-g GID: 指定GID,即指定用户的基本组,但GID要事先存在

-G GID:指定用户的额外组,组要事先存在;

-d /path/to/somewhre:

-c "Comment":

-s /path/to/shell: 指定默认shell,应该指定使用/etc/shells文件中出现的shell;

-m: 创建用户时,强制给用户创建家目录;

-M: 创建用户,但不创建家目录;

-r: 创建系统用户,不会为用户创建家目录,id: 1-499,默认shell为/sbin/nologin

-D: default,为useradd命令创建的用户指定新的默认值

@@groupadd:创建组

groupadd [options] GrpName

-g GID: 创建组并为其指定GID

用户类别:

管理员:0

普通用户:1-65535

系统用户:1-499

登录用户:500+

用户组:

管理员组

普通组

以用户为视角,组可为两类:

基本组: 显示在/etc/passwd中GID字段组,为用户的基本组;

额外组,附加组: /etc/group

userdel: 删除用户, 默认会保留家目录

格式:userdel UserName

-r: 一并删除家目录

总结:

/etc/passwd:

Username:x:UID:GID:Comment:Home:Shell

/etc/group:

GroupName:x:GID:User List

/etc/skel:用户创建时调取的默认文件

/etc/default/useradd:修改创建用户默认文件配置的属性

@@userdel:删除用户,默认会保留家目录,

-r :删除时删除家目录

@@passwd:修改设定用户密码,

-l: 锁用户

-u: 解锁

普通用户:只能修改自己的用户密码

管理员:管理所有用户的密码

改自己密码:passwd

改其它用户密码:passwd UserName

密码安全性策略:足够复杂,够长;交叉应用数字、大写字母、小写字母和特殊中的至少三种;尽量避免使用易猜测的密码;定期更换;

设定组密码:gpasswd GroupName

如何修改用户的属性定义:

@@chsh 修改用户默认shell: chsh usename 回车

@@chfn 修改用户注释:chfn username 回车

@@usermod:修改已建立的用户信息:

usermod [options] username

-u UID:

-g GID:

-G GID: 默认会覆盖原有的附加组;如果是添加,则同时使用-a选项;

-c String:

-d /path/to/New_Home: 默认不会迁移用户的家目录;如果要迁移,则同时使用-m

-s SHELL:

-l New_login_name:  更改用户为新的登录名

-L: 锁定用户帐号

-U: 解锁

# usermod -u 2000 -g 3000 -G 4000 -c *** -d /bin/bash  test1

@@groupmod修改组属性定义:

groupmod :

-g GID

-n New_Group_Name:

/etc/shadow文件的格式:

UserName:加密的密码:最近一次密码修改时间:最短使用期限:最长使用期限:警告区间:非活动区间:帐号的过期期限:预留段

@@chage 修改帐号日期属性:chage

-E: 设置时间

-I: 设置密码的过期时间

-m:更换密码最小时间

-M:更换密码最大时间

-W:更换密码提醒时间

@@id:查看用户相关信息:

id UserName

-u: 显示UID,跟-n一起使用则显示用户名

-g: 显示基本组ID,跟-n一起使用则显示基本组名

-G: 显示所有组ID,跟-n一起使用则显示所有组名

@@groupdel:删除组.

@@gpasswd:修改组密码

练习:

1、创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux;

2、创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh;

3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora;

4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天;

5、将mandriva的默认shell改为/bin/bash;

回顾:

文件管理:ls, cat, tac, tail, head, more, less, cp, mv, rm, touch, stat, file, nano

用户管理:useradd, usermod, userdel, passwd, groupadd, groupmod, groupdel, id, su, chage, chfn, chsh, newgrp, gpasswd

@@@第三天第四段

权限:read(读,r), write(写,w), execute(执行,x)

文件:

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

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

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

目录:

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

w: 可以创建、删除文件;

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

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

r-x:

r--

rw-

@三位二进制表示三种用户的权限

-rw-r--r--   1 root root      852 Jul 30  2013 bincp.sh

000:  ---,  0

001:  --x,  1

010:  -w-  2

011:  -wx  3

100:  r--   4

101:  r-x   5

110:  rw-  6

111:  rwx  7

常用权限代码:

755:   rwxr-xr-x

644:   rw-r--r--

700:   rwx------

600:   rw-------

750:   rwxr-x---

640:   rw-r-----

040:   ---r-----

777:   rwxrwxrwx(危险,全权限)

元数据,属性,inode:保存用户权限信息

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

@@chmod改文件权限:

1,操作三类用户的权限:使用8进制代码形式

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

chmod 700 testfile

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

u: 属主 g: 属组 o: 其它 a: 所有

chmod  u=rwx g= o=  testfile

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

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

-R:递归,改变目录极其子目录文件的权限

参照其它文件的权限为当文件赋权

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

@@umask:查看或者指定用户的umask码

创建文件的初始权限为:666-umask

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

创建目录初始权限:777-umask

用户的umask码值

root: 022

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

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

-R: 递归

--reference=

同时修改属主和属组 属主和属组中间加:或者.号

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

@@chgrp:修改文件的属组

权限应用模型:

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

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

进程则以文件的其它用户的权限来访问文件;

练习:

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

2、复制/etc/skel目录为/home/openstack;

3、改变/home/openstack及其内部文件的属主属组均为openstack;

4、/home/openstack及其内部的文件,属组和其它用户没有任何访问权限;

练习:

完成以下任务:

(1)新建系统组mysql;新建系统用户mysql,属于mysql组,要求其没有家目录且shell为/sbin/nologin;

(2)新建GID为600的组magedu;新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

(3)新建用户centos,其家目录为/users/centos,密码同用户名;

(4)新建用户www,其家目录为/users/www;删除www用户,但保留其家目录;

(5)用户gentoo和centos均以magedu为其附加组;

总结权限管理:chmod, chown, chgrp, umask

@@@第四天第一段

bash介绍:

shell: 人机交互界面

sh、csh、tcsh、bash、ksh、dash、zsh

bash: 命令解释器

bash特性之六:bash的快捷键

Ctrl+a: 跳至命令行首

Ctrl+e: 跳至命令行尾

Ctrl+u: 删除命令行首至当前光标所在处的内容

Ctrl+k: 删除当前光标所有处至命令行尾的内容

Ctrl+l: 清屏,相当于clear命令

Ctrl+c: 取消或终止;

Ctrl+z: 将当前命令送至后台

bash特性之七:bash补全

命令补全:使用TAB键,bash讲自动检索与输入字母对应唯一的执行程序,如果不是唯一,则给出可选项

shell命令:内部,外部

外部:在系统某路径下有一个可执行程序保存在系统变量PATH中. PATH,是一组由冒号分隔的路径

使用tab键执行补全

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

编程语言:

C:关键字,选择、顺序

编译器:语言平台

解释器:语言平台

程序执行逻辑:

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

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

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

动态语言:没有提前申请内存空间,使用时申请,用完后退出,

解释型

perl, bash, python

静态语言:变量先申请使用内存空间,

编译型

C, C++

变量:

数据存储格式:

ASCII:11

Binary:11

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

强类型语言:C

弱类型语言:bash

定义变量类型的作用:

1、申明数据存储格式;

2、申明数据的有效存储范围;

3、比较机制不同;

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

字符型

数值型:正,负

精确数值型:

整型:

近似数值型:

浮点数

单精度

双精度

布尔型:

bash特性之八:提供编程环境

变量: 可以讲一个或多个值赋值给一个变量名

程序控制: 使用逻辑判断达到简化操作的目的!

脚本书写格式:

#!/bin/bash: 脚本入口,调用程序的路径,第一行顶格写

# Description: 描述

# Version: 版本

# Datetime: 时间

# Author: 作者

练习:写一个脚本

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

2、创建一个用户mageedu1, id号为3001,附加组为newgroup;

3、创建目录/tmp/hellodirxyz

4、复制/etc/fstab至上面的目录中

5、改变目录及内部文件的属主和属组为mageedu1;

6、让目录及内部文件的其它用户没有任何权限;

@@@第四天第二段

ELF:bash里可执行文件类型

程序=指令+数据

变量:

弱类型语言:

1、不强制区分变量的类型,无论存储何种数据,均以字符格式进行;

2、无须事先声明;用到时,直接使用,直接赋值;

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

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

变量的类型:

变量的命名要求:

只能使用数字、字母和下划线组成;

不能以数字开头;

不能使用程序中的关键字;

见名知义;totalWeight

@@set: 变量赋值或查看当前系统上的所有变量

@@unset: 撤销变量

@@export: 将变量改为环境变量

本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效;

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

引用变量: ${Var_Name}

撤销变量: unset Var_Name

局部变量:仅对局部代码生效

local Var_Name="Value"

环境变量:对当shell进程及其子shell有效;用来调整bash的工作特性,用于保存当前会话的属性信息;

export Var_Name="Value"

Var_Name="Value"

export Var_Name

位置变量:在脚本中引用其它脚本参数

$1, ..., $n

./first.sh 2 8

特殊变量:

$0: 脚本名称自身

$?: 上一条命令的执行状态;

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

0: 成功

1-255: 失败

$$

$!

$#

$*

例:新建十个用户:mageduuser1-mageeduuser10

# useradd mageeduuser1

练习:

完成以下任务:

(1)新建系统组mysql;新建系统用户mysql,要求其没有家目录且shell为/sbin/nologin;

(2)新建GID为600的组magedu;新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;

(3)新建用户centos,其家目录为/users/centos,密码同用户名;

(4)新建用户www,其家目录为/users/www;删除www用户,但保留其家目录;

(5)用户gentoo和centos均以magedu为其附加组;

完成以下任务:

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

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

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

(4) 使用echo命令显示“The current time is:”,is后跟上CurTime变量的值;

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

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

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

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

@@@第四天第三段

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

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

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

/etc/profile:全局

/etc/profile.d/*.sh:全局

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

功能:

设定环境变量

运行命令或脚本

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

/etc/bashrc: 全局

~/.bashrc: 个人配置

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

登录类型:

交互式登录:

直接通过终端输入用户信息登录系统;

su - UserName或su -l UserName;

非交互式登录:

su UserName

图形界面的终端

执行脚本

新增配置的生效方式:

@@source

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

source (.)

. FILE

重新登录

交互式登录用户:读取环境变量顺序

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录用户:读取环境变量顺序

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

@@@第四天第四段

bash脚本:面向过程的变成中有三种方式

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

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

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

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

控制语句:for,if

bash循环控制语句:

for

while

until

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

for var in list;do 循环体;done

for var_Name(将要赋值的变量名) in List(赋值列表,列表内的值将赋值给前面var_Name); do

语句1

语句2

...(循环体,将赋值后的var_Name变量按照语句进行操作)

done

列表的生成方法:

1,直接给出列表

2,使用文件名通配的机制生成列表

3,用命令生成列表

4,生成数字序列列表:{n1..n10} 1-10 (点号不能省略)

seq n1 n2 n3 n1是起始数,n2步长,n3结束数

@@bash:执行bash脚本

# bash [options][FileName]...

-n:不执行脚本,只检查脚本内语法是否有错误.

#!/bin/bash

#

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

@@wc: word count 字符统计,为文件统计字节数,单词数,行数,

wc [options][file]...

-l:仅统计行数

-w:仅统计单词数

-c:仅统计字节数

@@|:管道,把一个命令的输出结果传给下一个命令做输入结果中间用|隔开

@@tr:转换字符或删除字符,把字符转换成相应的字符集内的字符,如果只给一个字符集,则删除相应的字符.

tr ‘集合1‘  ‘集合2‘

#echo "hello world" | tr ‘abcdefg‘  ‘ABCDEFG‘

@@cut:将输入的内容按指定的分隔符,切割成片,显示指定的片

-d字符:指定的分隔符

-f#:指定要现实的字段

#:为单个数字,显示第#个字段

逗号隔开的多个数字:显示指定数字的多个离散字段

-:连续字段,如3-5显示第三个到第五个字段

#echo "This is a new line " | cut -d‘ ‘ -f1 (空格分割,取第一段)

#cut -d: -f1,7 /etc/passwd (取/etc/passwd中:号分割的第一和第七个字段,即用户名和shell)

@@sort:为文件进行排序 sort [options] file...

-f:忽略字符大小写

-n:按ASCII码比较数值大小

-t:指定分隔符,切片

-k:指定分隔符后,进行比较字段

-u:连续重复的行只显示一次

sort -n -t: -k3 /etc/passwd(把/etc/passwd按照:分割取第三段字符的大小进行排序)

@@uniq:移除连续重复的行

-c:显示每行重复的次数

uniq -c testfile

sort testfile | uniq -c

-d:仅显示重复出现的次数,连续重复出现两次的行

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

(新建一个文本输入多行内容)

uniq -c testfile

sort testfile | uniq -c

@练习题:

1、统计/bin、/usr/bin、/sbin和/usr/sbin等各目录中的文件个数;

2、显示当前系统上所有用户的shell,要求,每种shell只显示一次

3、取出/etc/passwd文件的第7行;

4、显示第3题中取出的第7行的用户名;扩展把用户名换成大写

5、统计/etc目录下以P或p开头的文件个数;

练习:写一个脚本,用for循环实现

显示/etc/init.d/functions、/etc/rc.d/rc.sysinit和/etc/fstab各有多少行;

练习:写一个脚本

将上一题中三个文件的复制到/tmp目录中;

用for循环实现,分别将每个文件的最近一次的修改时间改为2011年9月15号13点27分;

练习:写一个脚本

显示/etc/passwd中第3、7和11个用户的用户名和ID号;(提示获得用户名和ID号后赋值给变量,然后用命令再次分割)

centos6.5 bash基础命令2,布布扣,bubuko.com

时间: 2024-10-26 10:23:15

centos6.5 bash基础命令2的相关文章

cmd 与 bash 基础命令入门

身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>?<) cmd 与 bash 基础命令入门 ??????简介 ??????CMD 基础命令 ????????????目录操作 ??????????????????切换目录 ??????????????????列出文件与子目录 ??????????????????创建目录 ??????????????????删除目录 ??????????????????复制目录 ??????????????????移动目录 ????

GITHUB中GIT BASH基础命令行

在github上已经注册了账号. 特别注意: 括号内均为提示信息 1.常用命令行工具: ①cmd ②powershell ③git bash 2.命令行常用命令(在git bash上生效,部分在cmd无用) ? -pwd (print working directory) 查看当前所在路径--绝对路径 ? -cd(change directory) 切换目标 ? -ls(list) 查看当前目录下的内容 ? -mkdir(make directory) 创建目录 ? -touch 创建文件 ?

bash基础命令参考

if 语法:help if if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi 文件相关: 1.if [ -f file ]:是否问文件(不存在返回false) 2.if [ -d dir ]:是否为目录 3.if [ -e file ]:文件(目录)是否存在 4.if [ -r file ]:是否可读 5.if [ -w file ]:是否可写 6.if [ -x file

Linux 第9天bash基础命令

Linux 第9天 时间:20180725 批量修改文件名 rename [option] expression file... rename '.txt' '.bac' f*.txt 可以将f*.txt文件后缀改为f*.bac dd if=/dev/zero of=/root/bigfile bs=1M count=100 在指定目录生成指定文件100M 删除大文件方式 > filename 可以即时释放磁盘空间 lsof 列出进程打开的文件 shred 覆盖文件隐藏内容,可以进行多次覆盖 -

Bash基础——命令替换

参考:Linux 下Shell 脚本几种基本命令替换区别 Command substitution 命令替换Command substitution https://www.jb51.net/article/95585.htm https://www.cnblogs.com/f-ck-need-u/archive/2017/08/20/7401591.html https://www.cnblogs.com/itxdm/p/something_of_shellscirpt.html 原文地址:h

Linux基础命令之echo(涉及bash命令引用及替换部分内容)

echo是Linux中较为常见的命令,特别是在bash的脚本编写中它的灵活运用是必不可少的. 在man手册中的解释是:display a line of text,翻译过来就是回显或者再通俗点说就是显示字符或数字.解释看起来很简单,不过这个命令可以实现的功能却很丰富. 我之所以写关于echo的内容是因为一项作业,作业的内容是让显示一个由任意字符组成的倒三角图形,且要求字符闪烁并有字体颜色跟背景色. 这个作业先搁置一边稍后再解决. 先介绍下echo的基本信息 以下是从CentOS-6.8中的man

Linux目录结构、bash的基础命令学习

日期: 2015年08月23日 Linux目录结构 LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard) Linux系统根目录下有众多子目录,这些目录都参照了FHS协定 / ├── bin ├── boot ├── dev ├── etc ├── home ├── lib ├── lib64 ├── lost+f

Linux的文件系统、系统管理类命令、bash基础特性

Linux的文件系统根文件系统(rootfs) root fileysystem LSB,FHS(Filesystem Heirache Standard)文件系统层级结构标准,如:/etc./usr./var./root./home./dev /boot:引导文件存放目录,内核文件(vmlinuz).引导加载器(bootloader,grub)都存放于此目录: /bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序: /sbin:管理类的基本命令:不能关联至独立分区,O

Linux自学笔记(7):bash基础特性及基础命令

bash的基础特性(1)命令历史history调用上一条命令的最后一个参数!$ESC,.atl+.控制命令历史的记录方式环境变量:HISTCONTROLignoreedups:忽略重复的命令:连续且相同为"重复"ignorespace:忽略所有以空白开头的命令ignoreboth:ignoreedups,ignorespace 修改环境变量的方式:export 变量名为"值"变量赋值:把赋值符号后面的数据存储于变量名指向内存空间:(2)命令补全bash执行命令:内部