默认教学计划
931人加入学习
(20人评价)
Linux运维基础
价格 ¥ 599.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习
名词解释:
block:磁盘上存放数据的块
bitmap:在元数据区域,用以标记数据块是否被使用
 
文件系统:软件(XFS NTFS FAT EXT3 EXT4等),存储数据或文件的一种格式,文件系统不存在分区上,位于磁盘的某一个位置;文件系统把分区分割为两部分,一部分存放元数据(metadata),另一部分存放数据
 
metadata:元数据(和数据本身内容没有关系,包括的是数据属性,比如数据归属,数据权限,数据的时间戳)
inode:index node(索引节点),存放数据的属性,不包括文件名,数据对应的数据块(block),同一个inode可以指向多个文件
super block:超级块,管理元数据区域内其他的区域的
ln(link):硬链接和软链接
 
 
删除文件的原理:
删除文件:把数据对应的inode和block的值变为0,实际数据并没用删除
新建文件:
复制文件:重新建立新文件
移动文件:改变inode和block值,对数据没有操作 
   
 
链接:
ln:语法: ln [ -s -v ] src_file des_file
-s:创建软链接
-v:显示详细过程
硬链接:只能对文件进行硬链接,并且必须在同一个文件系统,源文件与目标文件指向一个inode节点
软链接:使用绝对路径,目标文件大小是源文件路径的字符串个,目标文件的inode对应数据区存放的内容是源文件的绝对路径,所以源文件与目标文件的inode不一样。可以跨文件系统建立,可以为文件或目录建立
[展开全文]

MBR :主引导记录

磁盘分区表

主分区

扩展分区

EBR:扩展分区引导记录

[展开全文]

可动态加载验证模块:

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等

    在Linux中进行身份或是状态的验证程序是由PAM来进行的,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。PAM本身不会执行验证,而是借助策略和模块来验证

    Linux各个发行版中,PAM使用的验证模块一般存放在/lib64/security/目录下,可以使用ls命令进行查看本计算机支持哪些验证控制方式,一般的PAM模块名字例如pam_unix.so,模块可以随时在这个目录下添加和删除,这不会直接影响程序运行,具体的影响在PAM的配置目录下。

    PAM的配置文件位于/etc/pam.d/下面。ls命令可以看到所有支持PAM模块的服务以及这些服务使用PAM的配置。(注:/etc/pam.d/other 为服务PAM配置文件没有匹配的PAM时使用的默认配置文件)

 

查看服务是否支持PAM验证模块:

    ldd service_dir(服务所在目录) | grep libpam

如:ldd /usr/sbin/vsftpd | grep libpam

 

PAM配置文件的格式:

type control modules [modules_args]

第一列代表模块类型, 第二列代表控制标记, 第三列代表模块路径:要调用模块的位置。一般是在/lib64/security文件中, 第四列是模块参数。

 

type:

auth: 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root

account:对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等

session:这个模块用来定义用户登录前的及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等.

passwd:使用用户信息来更新.如:修改用户密码

 

control:

required: 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息

requisite: 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作.

sufficient:表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息(即使前面有模块fail了,也会把 fail结果忽略掉),把控制权交回应用程序。后面的层叠模块即使使用requisite或者required 控制标志,也不再执行。如果验证失败,sufficient 的作用和 optional 相同

optional:表示即使本行指定的模块验证失败,也允许用户接受应用程序提供的服务,一般返回PAM_IGNORE(忽略).

include:引用其他的配置文件,把匹配权交给其他配置文件(如果其他配置跳出,则整个匹配结束)

substack:引用其他的配置,把匹配权交给其他配置文件(如果其他配置跳出,则仅仅跳出子匹配)

 

modules:匹配认证模块

/etc/pam.d/*:每一个应用程序PAM配置文件

/usr/lib64/security/*:PAM认证模块文件的实际存放位置

/etc/security/*:其他PAM环境的配置文件,比如 access.conf

/usr/share/doc/pam-x:存放详细的PAM的说明文件

常用模块:

PAM模块

结合管理类型

说明

pam_unix.so

auth

提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0

account

检查用户的账号信息(包括是否过期等).帐号可用时,返回0.

password

修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件

pam_shells.so

auth

account 

如果用户想登录系统,那么它的shell必须是在/etc/shells文件中之一的shell

pam_deny.so

account

auth

password

session

该模块可用于拒绝访问

pam_permit.so

auth

account

password

session

模块任何时候都返回成功.

pam_securetty.so

auth

如果用户要以root登录时,则登录的tty必须在/etc/securetty之中.

pam_listfile.so

auth

account

password session

访问应用程的控制开关

pam_cracklib.so

password

这个模块可以插入到一个程序的密码栈中,用于检查密码的强度.

pam_limits.so

session

定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定

[展开全文]

可动态加载验证模块:

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等

    在Linux中进行身份或是状态的验证程序是由PAM来进行的,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。PAM本身不会执行验证,而是借助策略和模块来验证

    Linux各个发行版中,PAM使用的验证模块一般存放在/lib64/security/目录下,可以使用ls命令进行查看本计算机支持哪些验证控制方式,一般的PAM模块名字例如pam_unix.so,模块可以随时在这个目录下添加和删除,这不会直接影响程序运行,具体的影响在PAM的配置目录下。

    PAM的配置文件位于/etc/pam.d/下面。ls命令可以看到所有支持PAM模块的服务以及这些服务使用PAM的配置。(注:/etc/pam.d/other 为服务PAM配置文件没有匹配的PAM时使用的默认配置文件)

 

查看服务是否支持PAM验证模块:

    ldd service_dir(服务所在目录) | grep libpam

如:ldd /usr/sbin/vsftpd | grep libpam

 

PAM配置文件的格式:

type control modules [modules_args]

第一列代表模块类型, 第二列代表控制标记, 第三列代表模块路径:要调用模块的位置。一般是在/lib/security文件中, 第四列是模块参数。

 

type:

auth: 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root

account:对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等

session:这个模块用来定义用户登录前的及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等.

passwd:使用用户信息来更新.如:修改用户密码

 

control:

required: 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息

requisite: 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作.

sufficient:表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息(即使前面有模块fail了,也会把 fail结果忽略掉),把控制权交回应用程序。后面的层叠模块即使使用requisite或者required 控制标志,也不再执行。如果验证失败,sufficient 的作用和 optional 相同

optional:表示即使本行指定的模块验证失败,也允许用户接受应用程序提供的服务,一般返回PAM_IGNORE(忽略).

include:引用其他的配置文件,把匹配权交给其他配置文件(如果其他配置跳出,则整个匹配结束)

substack:引用其他的配置,把匹配权交给其他配置文件(如果其他配置跳出,则仅仅跳出子匹配)

 

modules:匹配认证模块

[展开全文]

一、什么是nsswithch.conf(服务搜索顺序)文件呢?

       nsswitch.conf(name service switch configuration,名字服务切换配置)文件位于/etc目录下,由它规定通过哪些途径以及按照什么顺序以及通过这些途径来查找特定类型的信息,还可以指定某个方法奏效或失效时系统将采取什么动作。

Nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下: 

Info: method[[action]] [method[[action]]...] 

    其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法,action是对前面的method返回状态的响应。action要放在方括号里。

二、nsswitch.conf的工作原理

 当需要提供nsswitch.conf文件所描述的信息的时候,系统将检查含有适当info字段的配置行。它按照从左向右的顺序开始执行配置行中指定的方法。在默认情况下,如果找到期望的信息,系统将停止搜索。如果没有指定action,那么当某个方法未能返回结果时,系统就会尝试下一个动作。有可能搜索结束都没有找到想要的信息。

1、信息(Info)

  Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。下面的列表描述了nsswitch.conf文件控制搜索的大多数信息(Info项)的类型。

automount:

自动挂载(/etc/auto.master和/etc/auto.misc)

bootparams:

无盘引导选项和其他引导选项(参见bootparam的手册页)

ethers:

MAC地址

group:

用户所在组(/etc/group),getgrent()函数使用该文件

hosts:

主机名和主机号(/etc/hosts),gethostbyname()以及类似的函数使用该文件

networks:

网络名及网络号(/etc/networks),getnetent()函数使用该文件

passwd:

用户口令(/etc/passwd),getpwent()函数使用该文件

protocols:

网络协议(/etc/protocols),getprotoent()函数使用该文件

publickey:

NIS+及NFS所使用的secure_rpc的公开密钥

rpc:

远程过程调用名及调用号(/etc/rpc),getrpcbyname()及类似函数使用该文件

services:

网络服务(/etc/services),getservent()函数使用该文件

shadow:

映射口令信息(/etc/shadow),getspnam()函数使用该文件

aiases:

邮件别名,sendmail()函数使用该文件

 

2、方法(method)

    下面列出了nsswich.conf文件控制搜索信息类型的方法,对于每一种信息类型,都可以指定下面的一种或多种方法:

files:

搜索本地文件,如/etc/passwd和/etc/hosts

nis:

搜索NIS数据库,nis还有一个别名,即yp

dns:

查询DNS(只查询主机)

compat:

passwd、group和shadow文件中的±语法(参见本节后面的相关内容)

 

3、搜索顺序(从左至右)

       两个或者更多方法所提供的信息可能会重叠。举例来说,files和nis可能都提供同一个用户的口令信息。如果出现信息重叠现象,就需要考虑将哪一种方法作为权威方法(优先考虑),并将该方法放在方法列表中靠左的位置上。

    默认nsswitch.conf文件列出的方法并没有动作项,并假设没有信息重叠(正常情况)。在这种情况下,搜索顺序无关紧要:当一种方法失败之后,系统就会尝试下一种方法,只是时间上受到一点损失。如果在方法之间设置了动作,或者重叠的项的内容不同,那么搜索顺序就变得重要起来。

例如下面两行nsswitch.conf文件配置行:

passwd files nis

host nis files dns

       第一行让系统在/etc/passwd文件中搜索口令信息,如果失败的话,就使用NIS来查找信息。如果正在查找的用户同时出现在这两个地方,就会使用本地文件中的信息,因此它就是权威信息。第二行先使用NIS搜索;如果失败的话,就搜索/etc/hosts文件;如果再次失败的话,核对DNS以找出主机信息。

4、动作项([action])

      在每个方法后面都可以选择跟一个动作项,用来指定如果由于某种原因该方法成功抑或失败需要做些什么。动作项的格式如下:

[[!]STATUS =action]

    其中,开头和末尾的方括号属于格式的一部分,并不是用来指出括号中的内容是可选的。STATUS(按照约定使用大写字母,但本身并不区分大小写)是待测试的状态,action是如果STATUS匹配前面的方法所返回的状态将要执行的动作。开头的感叹号(!)是可选的,其作用是将状态取反。

STATUS:

STATUS的取值如下:

NOTFOUND:方法已经执行,但是并没有找到待搜索的值。 默认的动作是continue。

SUCCESS:方法已经执行,并且已经找到待搜索的值,没有返回错误。默认动作是return。

UNAVAIL:方法失败,原因是永久不可用。举例来说,所需的文件不可访问或者所需的服务器可能停机。默认的动作是continue。

TRYAGAIN:方法失败,原因是临时不可用。举例来说,某个文件被锁定,或者某台服务器超载。默认动作是continue。

action:

action的取值如下:

return:返回到调用例程,带有返回值,或者不带返回值。

continue:继续执行下一个方法。任何返回值都会被下一个方法找到的值覆盖。

示例:

举例来说,下面这行取自nsswitch.conf文件,它的作用是让系统首先使用DNS来搜索给定主机的IP地址。DNS方法后面的动作项是测试该方法所返回的状态是否为“非(!)UNAVAIL”。

hosts    dns [!UNAVAIL=return] files

如果DNS方法没有返回UNAVAIL(!UNAVAIL),也就是说DNS返回SUCCESS、NOTFOUND或者TRYAGAIN,那么系统就会执行与该STATUS相关的动作(return)。其结果就是,只有在DNS服务器不可用的情况下才会使用后面的方法(files)。

如果DNS服务器并不是不可用(两次否定之后就是“可用”),那么搜索返回域名或者报告未找到域名。只有当服务器不可用的时候,搜索才会使用files方法(检查本地的/etc/hosts文件)。

 

5、compat方法:passwd、group和shadow文件中的"±"

    可以在/etc/passwd、/etc/group和/etc/shadow文件中放入一些特殊的代码,(如果在nsswitch.conf文件中指定compat方法的话)让系统将本地文件和NIS映射表中的项进行合并和修改。

    在这些文件中,如果在行首出现加号'+',就表示添加NIS信息;如果出现减号'-',就表示删除信息。举例来说,要想使用passwd文件中的这些代码,可以在nsswitch.conf文件中指定passwd: compat。然后系统就会按照顺序搜寻passwd文件,当它遇到以+或者 开头的行时,就会添加或者删除适当的NIS项。

    虽然可以在passwd文件的末尾放置加号,在nsswitch.conf文件中指定passwd: compat,以搜索本地的passwd文件,然后再搜寻NIS映射表,但是更高效的一种方法是在nsswitch.conf文件中添加passwd: file nis而不修改passwd文件。

[展开全文]
权限:是用户对于系统资源及数据等操作的能力
 
三类用户权限:
属主:owner
属组:group
其他:other
 
-rw-r--r--:10位
第一位:文件类型
第2-4位:文件属主权限
第5-7位:文件属组权限
第8-10位:其他用户的权限
 
文件:
r(read):读权限,可以查看文件的内容,使用cat more等命令
w(write):写权限,可以修改文件的内容及删除文件
x(execute):执行权限,可执行文件或脚本
 
目录:
r:读权限,可以查看目录中的列表,执行ls命令
w:写权限,可以向目录中新建文件或目录等
x:执行权限,可以执行cd命令
 
改变权限的命令
chmod 改变文件或目录的权限
chmod 755 abc:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限
chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限
chmod a+r abc:给所有用户添加读的权限
 
 
改变所有者(chown)和用户组(chgrp)命令
chown xiaoming abc:改变abc的所有者为xiaoming
chgrp root abc:改变abc所属的组为root
chown root ./abc:改变abc这个目录的所有者是root
chown ‐R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root
 
 
umask:反掩码(在/etc/login.defs中定义)
rwx:7
文件默认:rw-rw-rw-:666 644=rw-r--r--新建文件时,权限掩码(666)减去反掩码(022)就是新建文件的权限(644)
目录默认:rwxrwxrwx:777 755=rwxr-xr-x,新建目录时,权限掩码(777)减去反掩码(022)就是新建目录的权限(755)
 
 
Linux隐藏权限:
lsattr:查看文件或目录的隐藏权限
 
chattr:修改文件的隐藏权限,/   /dev    /tmp    /var    /etc  目录不受chattr保护
语法:
chattr +-= [options] file_name
 
a:只能向文件中追加数据,不能删除
i:任何用户不能删除文件
A:不同步访问时间
+:添加相应权限
-:删除相应权限
=:设定相应权限
 
 
 
 
 
/etc/passwd /etc/shadow /etc/group
 
tom:/etc/passwd /etc/shadow /etc/group添加信息,新建宿主目录(修改宿主目录的归属)
 
echo "tom:x:1001:1001::/home/tom:/bin/bash" >> /etc/passwd
 
 
[展开全文]
权限:是用户对于系统资源及数据等操作的能力
 
三类用户权限:
属主:owner
属组:group
其他:other
 
-rw-r--r--:10位
第一位:文件类型
第2-4位:文件属主权限
第5-7位:文件属组权限
第8-10位:其他用户的权限
 
文件:
r(read):读权限,可以查看文件的内容,使用cat more等命令
w(write):写权限,可以修改文件的内容及删除文件
x(execute):执行权限,可执行文件或脚本
 
目录:
r:读权限,可以查看目录中的列表,执行ls命令
w:写权限,可以向目录中新建文件或目录等
x:执行权限,可以执行cd命令
 
改变权限的命令
chmod 改变文件或目录的权限
chmod 755 abc:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限
chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限
chmod a+r abc:给所有用户添加读的权限
 
 
 
改变所有者(chown)和用户组(chgrp)命令
chown xiaoming abc:改变abc的所有者为xiaoming
chgrp root abc:改变abc所属的组为root
chown root ./abc:改变abc这个目录的所有者是root
chown ‐R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root
[展开全文]


组管理:groupadd, groupdel, groupmod, gpasswd, newgrp, groupmems

 

FILES

       /etc/group

           Group account information.

 

       /etc/gshadow

           Secure group account information.

 

组分类:

    管理员组:root

    普通用户组:

    系统用户组:

 

按照用户分类:

    管理员组:root

    基本组:初始化的组

    附加组:有效组

 

关于组的配置文件:
/etc/group:

    第一列:组的名字

    第二列:组的密码区域

    第三列:组的ID号(GID)

    第四列:组中的成员

/etc/gshadow:

    第一列:组的名字

    第二列:组的密码

    第三列:组的管理员

    第四列:组成员列表

 

groupadd:创建一个新的组,并设置组的一些信息

    语法:groupadd [options] group

    -d:创建组时指定组的ID

    -r:添加一个系统组

 

groupdel:删除一个组

    默认情况下,不能删除一个用户的基本组,可以通过修改用户的基本组后删除该组,可以删除用户的同时,系统会删除同名基本组(且该组只能是该用户的基本组的时候才能删除)

 

groupmod:修改组属性

    -g:修改组的GID号

    -n:为组重命名

 

gpasswd:为组设置密码,设置组的管理员,添加组成员

语法:gpasswd [option] group

    -A:为组设置管理员

    -M:把一些用户添加组中,用逗号隔开(普通用户)

    -r:为组移除密码

    -R:让组的密码失效

    -a:为组添加成员(组的管理员操作命令)

    -d:删除组成员(组的管理员操作命令)

    group_name:修改组的密码

 

newgrp:为shell设置有效组(只在当前shell中生效)

    exit:退出newgrp

 

groupmems:为组添加成员,显示组成员列表

[展开全文]

针对新的Centos7系统进行如下配置

# yum -y install vim make cmake man man-pages mlocate sysstat net-tools

# yum -y groupinstall "Development tools"

# mandb  //生成whatis数据库

# updatedb  //生成locate数据库

# vim /etc/selinux/config

  SELINUX=disabled

 

用户管理:useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

 

useradd:

    useradd [options] LOGIN

 

    useradd -D

 

    useradd -D [options]

       -c:为用户添加描述信息

       -d:指定用户的宿主目录(默认宿主目录在/home目录)

       -D:查看和改变默认的值(修改/etc/default/useradd文件中的值)

            -g:修改组

            -b:修改宿主目录

            -f:修改过期是否停用

            -e:修改过期 时间

            -s:修改默认shell

       -e:新建用户时,设置用户默认的过期时间,时间格式为:YYYY-MM-DD 

       -g:指定用户的基本组(没有该选项,Linux新建用户时,会新建一个同名组作为用户的基本组)

       -G:新建用户时指定用户的附加组,附加组可以有多个,用逗号隔开

       -m:创建宿主目录,和-k一起使用

       -M:创建用户时,不为用户创建宿主目录

       -p:创建用户时,为用户设置加密的密码(不推荐使用)

       -r:创建系统用户(不创建宿主目录,UID和GID使用系统用户ID)

       -s:指定默认的shell(系统支持的shell)

       -u:指定用户的UID

 

 

 

passwd:为用户设置密码/锁定解锁用户/查看状态

   语法:passwd [options] user_name

   root用户可以为普通用户设置密码

       -l:锁定用户(暂时无法登陆系统)

       -u:解锁用户

       -S:查看用户状态,显示/etc/shadow文件中各个字段的内容,按/etc/shadow文件中列的含义显示

       --stdin:标准输入,经常用在shell脚本编程中为用户自动设置密码

       -d:删除用户密码,允许普通用户以空密码登录(不建议使用)

       -e:设置用户密码过期,用户再次登录时,需要修改密码

       -n:设置密码最小使用期限,修改/etc/shadow中第四列

       -x:设置密码最大使用期限,修改/etc/shadow中第五列

       -w:设置密码过期前的警告时间,修改/etc/shadow第六列

       -i:修改过期后的宽限时间,修改/etc/shadow第七列

  

  普通用户设置密码时,先验证当前密码,符合密码策略

  root用户设置密码时,不需要验证当前密码,并且也可以不要求符合密码策略

  

 

userdel:删除用户(修改/etc/passwd /etc/shadow /etc/group文件)

  语法:userdel [options] user_name

  -r:删除用户时,连同删除用户的宿主目录

 

usermod:修改用户属性(修改/etc/passwd中内容)

  语法:usermod [options] user_name

  -c:更改用户的描述信息

  -d:更改用户的宿主目录

  -e:更改用户的过期时间,格式YYYY-MM-DD

  -f:修改/etc/shadow第七列内容

  -g:修改用户的基本组

  -G:修改用户的附加组

  -l:修改用户的登录名

  -s:修改用户的shell(系统支持的shell程序)

  -L(大写):锁定用户

  -U(大写):解锁用户

 

chsh:修改用户的shell

  语法:chsh [options] user_name

  -s:后面跟shell,更改用户的shell

  -l:显示当前系统支持的shell(/etc/shells)

 

finger:显示用户的基本信息

  finger [options] user_name

  

chfn:修改用户的基本信息,change finger

  语法:chfn [options] user_name

  -o:修改办公室

  -p:修改办公室电话号码

  -h:修改家庭电话号码

  -f:修改用户名

 

id:显示用户和组的ID

  语法:id [options] user_name,不指定user_name,默认为当前登录用为

  -a:忽略其他版本区别

  -Z(大写):显示安全上下文内容(selinux),--context (-Z) works only on an SELinux-enabled kernel

  -g:显示有效组的ID

  -G:显示所有组的ID

  -n:不显示组号,显示名字

  -r:显示用户实际ID

  -u:仅显示有效用户ID

 

chage:修改用户密码的时间信息(/etc/shadow)

  语法:chage [options] user_name

  -l(L):列出用户的详细的密码参数

  -d:修改/etc/shadow第三列内容,后面跟日期,格式YYYY-MM-DD

  -E:修改/etc/shadow第八列内容,后面跟日期,格式YYYY-MM-DD

  -I:修改/etc/shadow第七列内容,后面跟天数

  -m:修改/etc/shadow第四列内容,后面跟天数

  -M:修改/etc/shadow第五列内容,后面跟天数

  -W:修改/etc/shadow第六列内容,后面跟天数
 

[展开全文]

针对新的Centos7系统进行如下配置

# yum -y install vim make cmake man man-pages mlocate sysstat net-tools

# yum -y groupinstall "Development tools"

# mandb  //生成whatis数据库

# updatedb  //生成locate数据库

# vim /etc/selinux/config

  SELINUX=disabled

 

用户管理:useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

 

useradd:

    useradd [options] LOGIN

 

    useradd -D

 

    useradd -D [options]

       -c:为用户添加描述信息

       -d:指定用户的宿主目录(默认宿主目录在/home目录)

       -D:查看和改变默认的值(修改/etc/default/useradd文件中的值)

            -g:修改组

            -b:修改宿主目录

            -f:修改过期是否停用

            -e:修改过期 时间

            -s:修改默认shell

       -e:新建用户时,设置用户默认的过期时间,时间格式为:YYYY-MM-DD 

       -g:指定用户的基本组(没有该选项,Linux新建用户时,会新建一个同名组作为用户的基本组)

       -G:新建用户时指定用户的附加组,附加组可以有多个,用逗号隔开

       -m:创建宿主目录,和-k一起使用

       -M:创建用户时,不为用户创建宿主目录

       -p:创建用户时,为用户设置加密的密码(不推荐使用)

       -r:创建系统用户(不创建宿主目录,UID和GID使用系统用户ID)

       -s:指定默认的shell(系统支持的shell)

       -u:指定用户的UID


 

[展开全文]
Linux实现权限隔离机制(多用户)
    操作系统识别用户:
       用户:UID
       组:GID(逻辑容器:包含用户;实现多个用户对于某个文件或应用程序分配相同的权限)
    用户分类:
       管理员用户:root UID:0
       普通用户:1000-65535
       程序(系统)用户:1-999
    组分类:
       管理员组/普通组
       基本组:Linux中,新建用户时,没有指定隶属于的组,系统会为该用户建立一个同名组,作为该用户基本组
       附加组:方便以后为用户分配权限
    
解析:
    /etc/passwd:存储用户基本信息
    /etc/shadow:存储用户的影子口令
    /etc/group:存放组的基本信息
 
    /etc/passwd解释:用冒号隔开
       第一列:用户的登录名
       第二列:加密密码(x表示密码占位符,密码保存在/etc/shadow中)
       第三列:用户的ID号
       第四列:组的ID号
       第五列:用户的描述信息
       第六列:用户宿主目录
       第七列:用户默认使用的shell(操作系统支持的shell:/etc/shells)
   
    /etc/shadow解释:用冒号隔开(man 5 shadow)
       第一列:用户的登录名
       第二列:用户加密后的密码
       第三列:最后一次更改密码时间(从1970年1月1号)
       第四列:密码最小使用时间
       第五列:密码最长使用时间
   
    /etc/shadow密码区域解释(格式:$id$salt$encrypted):
       三部分组成:用$隔开
          第一部分加密算法:
             1:MD5加密
             5:SHA-256加密
             6:SHA-512加密
          第二部分:随机序列号
          第三部分:随机序列号和密码共同加密后的字符串
      
      加密算法:
           对称加密:加密和解密使用相同的密码(效率高)
           非对称加密:加密和解密使用不同的秘钥,公钥和私钥
           单向加密,散列加密:提取数据的特征码,常用于数据完整性校验
               1:不可逆
               2:定长输出
              md5: 128位定长输出
              sha: 160位 224位 256 位 384位 512位
               3:雪崩效应:输入数据一小点儿的变化,会引起结果的巨大变化
      
 
用户管理:etc/default/useradd     etc/skel/     etc/login.defs(在新建用户时起作用)
 
/etc/default/useradd文件解释(只对新建用户生效):
    # useradd defaults file   //注释行
    GROUP=100     //可以创建普通组
    HOME=/home    //普通用户宿主目录位置(在/home下生成和用户同名的目录,作为用户的宿主目录)
    INACTIVE=-1   //是否启用户过期停止使用权,-1代表不启用
    EXPIRE=       //设定过期时间,格式为20170501
    SHELL=/bin/bash   //设定用户的默认使用shell
    SKEL=/etc/skel     //新用户宿主目录模板目录
    CREATE_MAIL_SPOOL=yes   //是否为用户启用邮件通知功能
 
/etc/skel:目录(用户宿主目录模板目录,只对新建用户生效)
    .bash_logout:用户注销时执行的命令
    .bash_profile:用户登录系统时执行的命令(用户变量)
    .bashrc:用户登录一个新shell时执行的命令
 
/etc/login.defs文件解释:(只对新建用户生效)
    MAIL_DIR        /var/spool/mail   //用户系统邮件存放目录
    PASS_MAX_DAYS   99999    //密码最长使用期限
    PASS_MIN_DAYS   0        //最短使用期限,0代表不受限制
    PASS_MIN_LEN    5        //密码最小长度
    PASS_WARN_AGE   7        //指明了在口令失效前多少天开始通知用户更改密码     
    UID_MIN        1000        //最小UID号
    UID_MAX       60000        //最大UID号
    SYS_UID_MIN   201          //系统用户最小UID
    SYS_UID_MAX   999          //系统用户最大UID
    GID_MIN        1000  //普通组最小GID
    GID_MAX        60000  //普通组最大GID
    SYS_GID_MIN    201    //系统组最小GID
    SYS_GID_MAX     999   //系统组最大GID
    CREATE_HOME     yes   //是否创建宿主目录
    UMASK           077    //关于权限反掩码
    USERGROUPS_ENAB yes    //删除用户时是否删除组
    ENCRYPT_METHOD SHA512   //用户密码的加密方式
[展开全文]

Linux实现权限隔离机制(多用户)

    操作系统识别用户:

       用户:UID

       组:GID(逻辑容器:包含用户;实现多个用户对于某个文件或应用程序分配相同的权限)

    用户分类:

       管理员用户:root UID:0

       普通用户:1000-65535

       程序(系统)用户:1-999

    组分类:

       管理员组/普通组

       基本组:Linux中,新建用户时,没有指定隶属于的组,系统会为该用户建立一个同名组,作为该用户基本组

       附加组:方便以后为用户分配权限

    

解析:

    /etc/passwd:存储用户基本信息

    /etc/shadow:存储用户的影子口令

    /etc/group:存放组的基本信息

 

    /etc/passwd解释:用冒号隔开

       第一列:用户的登录名

       第二列:加密密码(x表示密码占位符,密码保存在/etc/shadow中)

       第三列:用户的ID号

       第四列:组的ID号

       第五列:用户的描述信息

       第六列:用户宿主目录

       第七列:用户默认使用的shell(操作系统支持的shell:/etc/shells)

   

    /etc/shadow解释:用冒号隔开(man 5 shadow)

       第一列:用户的登录名

       第二列:用户加密后的密码

       第三列:最后一次更改密码时间(从1970年1月1号)

       第四列:密码最小使用时间

       第五列:密码最长使用时间

   

    /etc/shadow密码区域解释(格式:$id$salt$encrypted):

       三部分组成:用$隔开

          第一部分加密算法:

             1:MD5加密

             5:SHA-256加密

             6:SHA-512加密

          第二部分:随机序列号

          第三部分:随机序列号和密码共同加密后的字符串

      

      加密算法:

           对称加密:加密和解密使用相同的密码(效率高)

           非对称加密:加密和解密使用不同的秘钥,公钥和私钥

           单向加密,散列加密:提取数据的特征码,常用于数据完整性校验

               1:不可逆

               2:定长输出

              md5: 128位定长输出

              sha: 160位 224位 256 位 384位 512位

               3:雪崩效应:输入数据一小点儿的变化,会引起结果的巨大变化

      

[展开全文]
Shell: 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
 
shell广义上分为两类:
  GUI:包括GNOME  KDE XFACE等
  CLI:sh csh ksh bash等(Linux发行版本中,bash是默认使用的shell程序)
  
shell启动:当用户登录完成后,系统会自动启动shell程序
    root  student用户
    shell:父shell程序和子shell程序(父子shell之间设置环境互相独立)
    cat /etc/shells //查看当前系统所支持的shell程序
    exit  //退出当前shell程序
 
bash的特性:
  1:命令历史:Linux会自动记录系统过去执行的命令,并保存在内存的缓冲区中
     在每个用户的家目录下,有个隐藏文件.bash_history保存命令历史
     history //查看linux的历史
        -c:清空命令历史
        -d:删除某一条命令历史
        -w:将命令历史保存到某个文件中
 
       HISTSIZE:命令历史大小变量
        $ echo $HISTSIZE    //查看HISTSIZE变量的值,默认的命令历史是1000条
      命令历史使用技巧:
        !n:执行命令历史中的第n条命令(n是命令历史编号)
        !-n:执行命令历史中的倒数第n条命令(n是命令历史编号)
        !word:执行命令历史中最近一次以word开始的命令(word必须能够唯一的标识用户想执行的命令)
        !!:执行上一条命令
        command !$:引用一个命令的最后一次参数
        command ESC键(按完松开) 再按.键:引用一个命令的最后一次参数
 
 (alias定义的别名只在当前shell生效)
    # alias new_command =OLD_COMMAND    //只执行alias命令,列出系统中所有的命令别名
       注意:执行alias命令时,COMMAND最好用引号引起来,因为别名可以等于原命令加选项
    # unalias new_command  //取消命令别名
 
    2:管道,IO重定向
     计算机体系结构::CPU、RAM、输入设备(Input)、输出设备(Output)
     计算机总线:
       地址总线:负责内存寻址
       数据总线:负责传输数据
       控制总线:负责控制指令
     寄存器:CPU中内部临时存储空间
    
     I/O设备:负责计算机内部存储设备和外部存储设备(如硬盘,光盘,U盘等)进行交互的设备
    
     程序:指令+数据
       指令:有程序提供,负责加工数据
       数据:系统中数据可以有多种来源,比如来自变量,来自文件,来自输入设备等
       
     标准输入输出设备:
        标准输入设备:键盘(stdin),文件描述符为0
        标准输出设备:显示器(stdout),文件描述符为1
        标准错误输出设备:显示器(stderr),文件描述符为2
     三种数据流:
        标准输入数据流/标准输出数据流/标准错误输出数据流
        
    文件描述符:当在Liunx中打开一个文件时,内核会反复调用,对于文件标识就很重要了,用文件描述符来标识文件,文件加载完成用数字标识,fd:file descriptor(文件描述符)
    
    IO重定向:把默认输入输出数据来源,重新定向到其他的文件或设备
       输出重定向:
         >:覆盖输出重定向
         >>:追加输出重定向
         2>:错误覆盖输出重定向
         2>>:错误追加输出重定向
         &>:混合覆盖输出重定向
         &>>:混合追加输出重定向
       输入重定向:
         <:输入重定向
       
    管道:连接多条命令,把前一条命令的输出结果作为后一条命令的输入条件(组合小程序,实现大功能)
       command1 | command2 | commad3 ....
 
    tr:实现字符转换,不修改源文件,语法:tr [OPTION]... SET1 [SET2]
    tee:read from standard input and write to standard output and files
 
4:命令行编辑
    ctrl+a:光标快速跳转到命令行的行首
    ctrl+e:光标快速跳转到命令行的行尾
    ctrl+u:快速删除从光标位置到命令行行首的字符串
    ctrl+k:快速删除从光标位置到命令行行尾的字符串
    ctrl+l:清屏(命令clear:清屏)
 
5:命令行补齐
    5.1:命令补齐:在PATH变量搜索命令并补齐(PATH变量必须正常;tab键补齐)
        按tab键两次,列出以某个字符开始的所有的命令
        路径和文件补齐:在系统路径中查找
        命令行补齐功能不能补齐选项
    5.2:命令替换(经常用到shell脚本编程中) $(command)或者 `command`(两边是反撇号)
    命令替换就是把命令中的子命令替换成子命令执行结果的过程
     # echo "字符串"
     ""(双引号):弱引用(可是实现变量的替换,把变量名替换为变量值)
     ``(反撇号):命令引用
     ''(单引号):强引用(不能完成变量替换)
 
6:命令行通配:globbing(正则表达式)
     *:匹配任意长度的任意字符
     ?:匹配任意单个字符
     []:匹配指定范围内的任意单个字符
       [ab] [a-m] [a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]
     [^]:匹配指定范围外的任意单个字符
       [^a-z] [^0-9]
    
     [:space:]:表示空格
     [:punct:]:表示所有标点符号
     [:lower:]:表示所有小写字母
     [:upper:]:表示所有大写字母
     [:alpha:]:表示所有字母(包括大小写)
     [:digit:]:表示所有数字
     [:alnum:]:表示所有数字和大小写字母
[展开全文]
Shell: 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
 
shell广义上分为两类:
  GUI:包括GNOME  KDE XFACE等
  CLI:sh csh ksh bash等(Linux发行版本中,bash是默认使用的shell程序)
  
shell启动:当用户登录完成后,系统会自动启动shell程序
    root  student用户
    shell:父shell程序和子shell程序(父子shell之间设置环境互相独立)
    cat /etc/shells //查看当前系统所支持的shell程序
    exit  //退出当前shell程序
 
bash的特性:
  1:命令历史:Linux会自动记录系统过去执行的命令,并保存在内存的缓冲区中
     在每个用户的家目录下,有个隐藏文件.bash_history保存命令历史
     history //查看linux的历史
        -c:清空命令历史
        -d:删除某一条命令历史
        -w:将命令历史保存到某个文件中
 
       HISTSIZE:命令历史大小变量
        $ echo $HISTSIZE    //查看HISTSIZE变量的值,默认的命令历史是1000条
      命令历史使用技巧:
        !n:执行命令历史中的第n条命令(n是命令历史编号)
        !-n:执行命令历史中的倒数第n条命令(n是命令历史编号)
        !word:执行命令历史中最近一次以word开始的命令(word必须能够唯一的标识用户想执行的命令)
        !!:执行上一条命令
        command !$:引用一个命令的最后一次参数
        command ESC键(按完松开) 再按.键:引用一个命令的最后一次参数
 
 (alias定义的别名只在当前shell生效)
    # alias new_command =OLD_COMMAND    //只执行alias命令,列出系统中所有的命令别名
       注意:执行alias命令时,COMMAND最好用引号引起来,因为别名可以等于原命令加选项
    # unalias new_command  //取消命令别名
    
4:命令行编辑
    ctrl+a:光标快速跳转到命令行的行首
    ctrl+e:光标快速跳转到命令行的行尾
    ctrl+u:快速删除从光标位置到命令行行首的字符串
    ctrl+k:快速删除从光标位置到命令行行尾的字符串
    ctrl+l:清屏(命令clear:清屏)
 
5:命令行补齐
    5.1:命令补齐:在PATH变量搜索命令并补齐(PATH变量必须正常;tab键补齐)
        按tab键两次,列出以某个字符开始的所有的命令
        路径和文件补齐:在系统路径中查找
        命令行补齐功能不能补齐选项
    5.2:命令替换(经常用到shell脚本编程中) $(command)或者 `command`(两边是反撇号)
    命令替换就是把命令中的子命令替换成子命令执行结果的过程
     # echo "字符串"
     ""(双引号):弱引用(可是实现变量的替换,把变量名替换为变量值)
     ``(反撇号):命令引用
     ''(单引号):强引用(不能完成变量替换)
 
6:命令行通配:globbing(正则表达式)
     *:匹配任意长度的任意字符
     ?:匹配任意单个字符
     []:匹配指定范围内的任意单个字符
       [ab] [a-m] [a-z] [A-Z] [a-zA-Z] [0-9] [a-zA-Z0-9]
     [^]:匹配指定范围外的任意单个字符
       [^a-z] [^0-9]
    
     [:space:]:表示空格
     [:punct:]:表示所有标点符号
     [:lower:]:表示所有小写字母
     [:upper:]:表示所有大写字母
     [:alpha:]:表示所有字母(包括大小写)
     [:digit:]:表示所有数字
     [:alnum:]:表示所有数字和大小写字母
[展开全文]

file:查看文件类型(windows是用扩展名识别文件类型)

   语法:file [options] [args]

    -b:显示结果时,不显示文件名

    -c:显示执行file命令的执行过程(file是如何去判断文件类型),便于排错或分析file命令执行过程

    -i:输出MIME类型的字符串

    -z:显示压缩文件的内容

    -L:查看软链接对应文件的类型

    -f:查看文件中文件名的类型

 

cat:一次性查看整个文件  

    语法:cat [options] [args]

    从键盘输入创建一个新文件或向现有文件中添加新数据:

    新建新文件:cat >new_file_name <<EOF    //EOF:end of file

 

    向现有文件中追加数据:

       cat >> file_name << EOF

       

    把多个文件内容合并到一个文件输出:

        cat file1 file2 > file3

    

    -n:显示文件内容时同时显示行号,包括空行

    -b:和-n功能相同,但不包括空行

    -S:当文件中有多个空行时,合并为一个空行

    -E:在显示内容时,结尾添加$符号

 

 

cp:复制文件或目录(copy简写)

   语法:cp [options] [src_file] [des_file]

    -f:force,强制复制文件或目录不进行提示

    -r:递归复制目录

    -s:为某个文件创建符号链接(软链接),而不是复制文件

    -b:覆盖已有的文件前,对目标文件进行备份

    -l:为文件创建硬链接,而不是复制文件

    -p:复制文件时保留文件的原有属性

    -d:当复制软链接文件时,把目标文件或目录也会创建为软链接,并指向最原始的文件

    -i:覆盖目标文件前询问(cp = cp -i)

 

mv:move,移动或从命名文件和目录(当原位置和目标位置是同一目录时,是重命名;当原位置和目标位置不是同一目录时,是移动)

    -b:移动前先对源文件进行备份

    -f:强制覆盖

    -i:覆盖目标文件前询问

    -t:将多个文件移动同一个目录(目标目录在前面,后面跟文件 mv -t [directory] file1 file2 ...)

    

rm:remove,删除文件或目录

    -d:删除可能存在数据的目录

    -f:强制删除

    -i:删除前进行询问

    -r:递归删除整个目录

    -v:显示命令执行过程

    

mkdir:make directory,创建空目录

    -m:创建目录时同时设置权限

    -p:递归创建新目录

    -v:显示创建目录的过程

 

touch:创建新文件或者修改文件时间戳

    -a:只改变访问时间

    -c:不创建文件

    -d:使用指定时间戳创建新文件,而不是使用系统时间

    -t:使用指定格式时间戳创建新文件,而不是使用系统时间

    -f:解决与BSD系列Unix系统兼容性

    -m:只更改变动时间

    

tree:查看目录树(tree = ls -R)

 

which:查找命令所在的路径

 

whereis:查看命令所在的路径,源代码文件,帮助信息文件所在的文件

    -b:只查看文件所在的位置(等同于which命令)

    -m:只查看帮助信息所在的位置

    -s:支持看源代码所在的位置

    

查找文件命令:locate

    非实时性,根据自己的数据库查找文件,CentOS每天更新一次数据库,安装完locate后,生成/var/lib/mlocate目录,存放数据库

    模糊匹配

    /var/lib/mlocate/mlocate.db    //locate工具的数据库

  # yum -y install mlocate  //安装locate工具    

  # locate file_name    

  # updatedb   //更新locate数据库

 

 

查看文本文件内容命令:cat more less head tail

  Linux和Windows中文件内容行尾标记是不同的:

     Linux中是以$为结尾

     Windows中是以ENTER键结尾

 

cat:一次性查看文件内容

 

more:可以翻页查看文本文件内容

    enter键:向下翻一行

    空格键:向下翻一屏

    ctrl+b:向上翻一屏

    ctrl+f:向下翻一屏

    =:显示当前的行号

    v:调用vi编辑器

    !command:调用shell执行命令

    q:退出more命令

    

# more +num file_name  //从num行开始查看文件内容

 

less:可以翻页查看文本文件内容

   enter键:向下翻一行

    空格键:向下翻一屏

    pagedown:向下翻一屏

    pageup:向上翻一屏

    上下方向键:向上/向下翻一行

    /word:在该文件中查找word关键字

       n:查找下一个

       N:查找上一个

       

管道:连接多条命令,前一条命令输出结果作为后一条命令的输入条件, 管道符 |

 

 

head:默认查看文件文件的前十行

    -n:查看文件文件前n行

    

tail:默认查看文本文件的后十行

   -n:查看文本文件的后n行

   -f:动态查看文本文件内容,如动态查看日志:  tail -f /var/log/messages

[展开全文]

FHS标准:

FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那么将可能会带来很多管理问题。你能想象,你进入一个企业之后,所接触到的Linux目录配置方法竟然跟你以前学的完全不同吗?很难想象。所以,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。

第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

  

根文件文件系统(/):rootfs:root filesystem

     /bin:二进制,存放命令

     /boot:存放启动和内核相关文件

     /dev:存放设备文件

     /etc:存放应用程序的配置文件

     /home:普通用户的家目录,默认为/home/USERNAME

     /lib和/lib64:存放系统开机时需要用的函数库及/bin和/sbin命令调用函数库

        /lib/modules:存放内核相关的模块(驱动程序等)

     /media和/mnt:挂载点,/media挂载移动设备    /mnt挂载临时设备

     /opt:第三方软件存放目录(用户自行安装的软件存放处),现在一般安装到/usr/local下

     /proc:伪文件系统,数据存放在内存中,存放关于进程的相关信息

     /root:管理员的家目录

     /sbin:存放管理员使用的命令

     /srv:service缩写,存放服务数据目录,如可以把www服务的网页存放到该目录

     /tmp:存放临时文件,所有用户都可以访问创建文件,但是每个用户只能删除自己的文件

     /sys:伪文件系统,存放在内存中,记录内核相关的信息,包括目前加载内核模块和内核检测到的硬件设备等

     /usr:UNIX software resource:存放安装的应用程序

            /usr/bin:普通用户使用的命令(和/bin区别是否与开机有关)

            /usr/sbin:网络服务器命令

            /usr/lib和/usr/lib64:包含各种应用程序函数库

            /usr/share:存放共享文件目录(在线帮助文件,杂项,时区文件等)

            /usr/include:存放头文件

            /usr/src:释放源代码目录

     /var:vary缩写,存放经常变动的文件,比如日志,mail等

           /var/cache:存放应用程序运行时产生的缓存文件

           /var/lib:程序运行时,需要使用的数据文件的存放目录

           /var/lock:设备或资源一次只能被一个应用程序使用,如果多应用程序会产生错误,因为要为设备或资源上锁(存放锁文件)

           /var/log:存放日志目录(系统,用户登录,服务日志等)

           /var/mail:存放个人电子邮件(系统报警产生邮件信息等)

           /var/run:存放应用程序运行时PID文件(进程号.pid结尾)

    /var/spool:存放队列数据,排队等待其他用户程序使用的数据,数据通常使用完成后会被删除

 

[展开全文]

    man目录说明

       1:User Commands:普通用户命令(/bin;/usr/bin ;/usr/local/bin):binary二进制

       2:System Calls:系统调用库

       3:C Library Functions:库调用

       4:Devices and Special Files:设备或特殊文件(硬件设备)(硬件设备存放在/dev)

       5:File Formats and Conventions:查看配置文件格式

       6:Games et. Al.:游戏

       7:Miscellanea:杂项

       8:System Administration tools and Deamons:管理命令(/sbin;/usr/sbin ;/usr/local/sbin)sbin:secret binary

 

man手册页目录:/usr/share/doc(工作中主要是查看内核信息)

      <>:必须使用的选项或参数,不可以省略

      []:可是省略的选项或参数

      ...:可以使用多个选项或参数

      |:代表多选一

      {}:分组,没有特殊意义

 

which:查看命令所在的路径

      

      

whatis:查看命令所属帮助信息目录,该命令在系统启动大约70分钟后会生成whatis的数据库,如果时间太短,该命令不会执行,我们可以使用makewhatis(CentOS 6)初始化该命令,在CentOS 7中使用mandb命令

 

cd:change directory(切换目录)

      cd:不加选项,返回到当前用户的宿主目录

      -:返回到上一次的工作路径

      ~username:切换到username的宿主目录

[展开全文]

Linux命令分类:

    内部命令:shell自带的命令

    外部命令:在Linux文件系统中存在一个应用程序

 

查看Linux命令类型:

type 命令

         buildin关键字说明该命令是内部命令

         /bin/mkdir:有路径显示(外部命令)

 

ls -l:

  -l(--long):以长格式显示

        -rw-------. 1 root root 1207 Nov  6 18:51 anaconda-ks.cfg

        第一位:文件类型

          -:代表普通文件(file)

          d:代表目录(directory)

          b:块设备(block):如硬盘,U盘等

          c:字符设备(char):如键盘等

          s:套接字文件(socket)

          p:命名管道(pipe)

          l:符号链接文件(symbolic link file )

        第二到十位:权限位(rwx:读写执行)

          234位:文件属主权限(owner)

          567位:文件属组权限(group)

          8910位:其他用户权限(other)

        

        1:代表文件硬链接的次数

        

        第一个root:代表文件属主(owner)

        第二个root:代表文件属组(group)

 

        1207:文件的大小

    

        Nov  6 18:51:文件最后被访问的时间戳(stat命令查看文件时间戳)

 

        文件的时间戳:

          access:访问的时间戳

          Modify:文件被修改时间戳(修改文件数据:添加删除数据等)

          change:文件被更改时间戳(更改文件属性)

 

        查看时间戳等信息:

            stat 文件名

 

环境变量:内存中的命名空间

      PATH变量:存放系统命令路径,以冒号隔开

      查看PATH变量:echo $PATH(Linux命令严格区分大小写)

      如果在以$PATH的路径中(命令为外部命令)没有找到相关命令,提示用户command not found

      如果一个命令在以上多个路径中存在,系统会按照从前往后的顺序查找,查找到该命令后,后面的路径的不再查找

    

hash:查看命令缓存及命中率

[展开全文]

 分布式服务器远程连接工具:Xshell、CRT

   

Shell的作用:

      Shell字面理解就是个“壳”,是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用户输入的命令翻译给系统执行。Linux中的shell与Windows下的DOS一样,提供一些内建命令(shell命令)供用户使用,可以用这些命令编写shell脚本来完成复杂重复性的工作。shell中输入命令,shell把命令传递给内核,内核把命令结果反馈给shell,人从shell中读取命令执行结果

   

内核:图形界面/字符界面

 

       linux图形界面:

          GNOME:linux默认图形界面,C语言开发

          KDE:C++开发

          xface:简化的、轻量级的图形界面

 

       linux支持的shell:(具体介绍见文末)

          bash:linux默认支持的shell

          ksh: Korn shell是Bourne shell 的超集(superset)

          csh: C shell 是柏克莱大学(Berkeley)所开发的,且加入了一些新特性

   

内核的作用:

     进程管理

     内存管理

     文件系统

     网络功能

     硬件驱动

     安全功能

    

linux设计思想:

    1:有很多的小程序组成,每个小程序完成单一的功能,实现复杂的任务(http服务需要安装很多小组件)

    2:一切皆文件:所有的外围设备(硬件)或者其他程序

    3:尽量避免捕获用户接口,中间通过shell为桥梁

    4:配置文件保存为纯文本格式(可以用文本编辑器编辑 vim)

    

Linux终端:适应多用户多任务系统

    6个终端切换:ctrl+alt+F1-F6

    退出当前终端:exit

 

    Linux界面:

         GUI:graphical user interface,图形用户接口(图形界面),切换图形界面:ctrl+alt+F7

         CLI: command line interface,命令行接口(字符界面)

    

    切换用户:

        su(switch user)

        su命令:当root用户切换到普通用户时,不需要普通用户的密码;而当普通用户切换到root用户时,需要提供root用户密码

        # su user_name

        $ exit 退出当前用户

    

Linux命令格式:

    命令字 [选项] [参数]:中括号表示可以省略

     命令字:唯一的,实现某一项功能

     选项:修改命令的执行方式(实现特定功能)

       长选项:--引导,是一个单词(多个长选项不能组合)

       短选项:-引导,是一个字符(多个短选项可以组合)

     参数:命令作用的对象

   

3A认证:

    authentication:认证机制

    authorization:授权机制

    audition:审计机制

 

 

三种主要的shell:

在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shell,在 Linux 下是BASH)、C shell(Berkeley shell,在 Linux 下是TCSH)和 Korn shell(Bourne shell的超集)。这三种 shell 在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。

  •   Bourne shell 是标准的 UNIX shell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如 rc start、stop 与shutdown 都是Bourne shell 的命令档,且在单一使用者模式(single user mode)下以 root 签入时它常被系统管理者使用。Bourne shell 是由 AT&T 发展的,以简洁、快速著名。 Bourne shell 提示符号的默认值是 $。
  •   C shell 是柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filename completion)、和工作控制(job control)。对于常在交谈模式下执行 shell 的使用者而言,他们较喜爱使用 C shell;但对于系统管理者而言,则较偏好以 Bourne shell 来做命令档,因为 Bourne shell 命令档比 C shell 命令档来的简单及快速。C shell 提示符号的默认值是 %。
  •   Korn shell 是Bourne shell 的超集(superset),由 AT&T 的 David Korn 所开发。它增加了一些特色,比 C shell 更为先进。Korn shell 的特色包括了可编辑的历程、别名、函式、正规表达式万用字符(regular expression wildcard)、内建算术、工作控制(job control)、共作处理(coprocessing)、和特殊的除错功能。Bourne shell 几乎和 Korn shell 完全向上兼容(upward compatible),所以在 Bourne shell 下开发的程序仍能在 Korn shell 上执行。Korn shell 提示符号的默认值也是 $。在 Linux 系统使用的 Korn shell 叫做 pdksh,它是指 Public Domain Korn Shell。

 

  除了执行效率稍差外,Korn shell 在许多方面都比 Bourne shell 为佳;但是,若将 Korn shell 与 C shell 相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看,Korn shell 是优于 C shell,相信许多使用者对于 C Shell 的执行效率都有负面的印象。

 

  在shell 的语法方面,Korn shell 是比较接近一般程序语言,而且它具有子程序的功能及提供较多的资料型态。至于 Bourne shell,它所拥有的资料型态是三种 shell 中最少的,仅提供字符串变量和布尔型态。在整体考量下 Korn shell 是三者中表现最佳者,其次为 C shell,最后才是 Bourne shell,但是在实际使用中仍有其它应列入考虑的因素,如速度是最重要的选择时,很可能应该采用 Bourne shell,因它是最基本的 shell,执行的速度最快。

 

[展开全文]
操作系统概念:
     是管理和控制计算机硬件软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
  
OS的主要功能:
  1.     进程管理: 进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。linux下查看系统进程的命令是ps。进程是一个动态概念,是可以独立调度的基本单位,具有五个基本特性:动态性、并发性、独立性、异步性、结构性
      
  2.     存储管理:由于存储容量有限,所以操作系统存储器管理模块需要对用户作业和进程进行分配并回收存储空间,进行存储空间的优化管理。包括内存的分配(程序装入与链接)、保护(分区管理、界限寄存器)、映射(段、页、段页式寻址)、扩展(虚拟存储技术)
     
  3.     文件管理:计算机将大量数据与信息以文件的方式存储在大容量存储设备中(如:磁盘、磁带、光盘等),文件管理即对这些数据、信息文件的操作,包括了管理文件的结构体系、存储空间。
     
  4.     IO管理:使的计算机有效的分配和使用设备,协调处理及与设备操作间的时间差异,提高系统的总体性能。包括I/O控制、缓冲、分配、驱动。
     
  5.     操作系统安全性:OS在被授权控制计算机中的实体(内存、I/O、程序及子过程、文件数据)并完成共享时,建立了相应的保护机制。
     
  6.     作业管理与工作环境:为用户提供一个良好的人机交互环境,包括GUI、命令接口、程序接口。
 
以现代观点而言,一个标准个人电脑的OS应该提供以下的功能:
进程管理(Processing management)
内存管理(Memory management)
文件系统(File system)
网络通讯(Networking)
安全机制(Security)
用户界面(User interface)
驱动程序(Device drivers)
 
计算机体系结构:
    CPU中央处理器:控制器、运算器
    存储器:内部存储(Mem) 
    输入设备:鼠标,键盘等
    输出设备:显示器 音频等
 
 
Linux版本号(内核版本号)三部分组成:
    
    A.B.C
    A:主版本号
    B:次版本号(奇数:开发版本  偶数:发行版本)
    C:修订版本号(修订次数)
    
    内核版本:3.6.28   3时主版本号   6:次版本号   28:修订了28次
    
    先把3.6.28拷贝一份进行研发,并把版本号升级为3.7.01(在3.6.28基础上修复漏洞,开发新功能)
    
    3.8.XX:下一个发行版本
 
命令行下的标识:
    [root@www ~]#  管理员登录
    [zhangsan@www ~]$  普通用户登录
    
    root:当前登录的用户名
    www:主机名
    ~:当前用户所处的目录(~代表用户宿主目录)
    #\$
    #:代表当前用户是管理员
    $:代表当前登录用户是普通用户
[展开全文]

授课教师

课程特色

视频(102)
下载资料(1)