Linux常用命令

命令格式与目录处理命令ls

命令格式

命令格式:命令 [-选项][参数]
    例:ls -la /etc
说明:1) 个别命令使用不遵循此格式
    2) 当有多个选项时,可以写在一起
    3) 简化选项与完整选项
        -a 等于 --all

目录处理命令ls

命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald][文件或目录]
     -a 显示所有文件,包括隐藏文件
     -l 详细信息显示
     -d 查看目录属性
​
文件权限标志
    -rw-r--r--
    --> 文件类型(-文件 d目录 l软链接文件)
    --> rw-- r-- r--
        u    g   o
        u所有者 g所属组 o其他人
        r读  w写  x执行

目录处理命令:mkdir

命令名称:mkdir 
命令英文原意:make directories 
命令所在路径:/bin/mkdir 
执行权限:所有用户 
语法:mkdir -p [目录名] 功能描述:创建新目录
           -p   递归创建
示例:
#递归增加文件夹
[root@localhost ~]# mkdir -p /tmp/Japan/boduo
#一次创建多个文件夹
[root@localhost ~]# mkdir /tmp/Japan/longze /tmp/Japan/cangjing

目录处理命令:cd

命令名称:cd 
命令英文原意:change directory 
命令所在路径:shell内置命令 
执行权限:所有用户
语法:cd [目录]
功能描述:切换目录
#示例:
[root@localhost ~]#cd /tmp/Japan/boduo  切换到指定目录
[root@localhost ~]#cd ..    回到上一级目录
​

目录处理命令:pwd

命令名称:pwd
命令英文原意:print working directory 
命令所在路径:/bin/pwd 
执行权限:所有用户
语法:pwd 
功能描述:显示当前目录 
#示例:
[root@localhost Japan]#pwd 
/tmp/Japan
​

文件处理命令:rmdir

命令名称:rmdir 
命令英文原意:remove empty directories 
命令所在路径:/bin/rmdir 
执行权限:所有用户
语法:rmdir [目录名] 
功能描述: 删除空目录(注意是空目录,里面什么都木有)
#示例: 
[root@localhost Japan]#rmdir /tmp/Japan/boduo
​

目录处理命令:cp

命令名称:cp 
命令英文原意:copy 
命令所在路径:/bin/cp 
执行权限:所有用户
语法:cp   -rp [原文件或目录] [目标目录]
-r  复制目录
-p  保留文件属性 功能描述:复制文件或目录
#示例:
#将目录/tmp/Japan/cangjing复制到目录/root下
[root@localhost Japan]#cp -r /tmp/Japan/cangjing    /root
#将/tmp/Japan目录下的boduo和longze目录复制到/root下,保持目录属性
[root@localhost Japan]# cp -rp /tmp/Japan/boduo /tmp/Japan/longze /root

目录处理命令:mv

命令名称:mv 
命令英文原意:move 
命令所在路径:/bin/mv 
执行权限:所有用户
语法:mv   [原文件或目录]    [目标目录]
功能描述:剪切文件、改名
#示例:
#将Japan目录下的子目录boduo改名为canglaoshi
[root@localhost Japan]# mv boduo canglaoshi
#将Japan目录下的子目录canglaoshi移动到/temp目录下
[root@localhost Japan]# mv canglaoshi /temp

目录处理命令:rm

命令名称:rm 
命令英文原意:remove 
命令所在路径:/bin/rm 
执行权限:所有用户 
语法:rm   -rf [文件或目录]
          -r   删除目录(递归删除)
          -f   强制执行 功能描述:删除文件(不询问,直接删除)
#注意
    #自杀 (绝对不能使用!!!)
    [root@localhost ~]# rm -r /* 
    #删除当前目录下所有文件
    [root@localhost temp]# rm -r *
    
#示例:
#删除文件/tmp/yum.log
[root@localhost ~]# rm /tmp/yum.log
rm: remove regular empty file `/tmp/yum.log'? 
输入y(yes删除) or n(no取消删除)
#删除目录/tmp/Japan/longze(不询问,直接删除)
[root@localhost ~]# rm -rf /tmp/Japan/longze

权限管理命令

权限管理命令:chmod

命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod 
执行权限:所有用户
语法:chmod    [{ugoa}{+-=}{rwx}] [文件或目录]
               [mode=421 ]  [文件或目录]
               -R   递归修改 
功能描述:改变文件或目录权限
权限的数字表示
r   4
w   2
x   1
rwxrw-r-- 7 6   4
#示例:
[root@localhost ~]# chmod   g+w testfile
赋予文件testfile所属组写权限
[root@localhost ~]# chmod   -R 777  testdir 
修改目录testfile及其目录下文件为所有用户具有全部权限

文件目录权限总结

代表字符  权限    对文件的含义     对目录的含义
r        读权限  可以查看文件内容  可以列出目录中 的内容
w        写权限  可以修改文件内容  可以在目录中创建、删除文件
x        执行权限 可以执行文件     可以进入目录

权限管理命令:chown

命令名称:chown 
命令英文原意:change file ownership 
命令所在路径:/bin/chown 
执行权限:所有用户
语法:chown    [用户] [文件或目录] 
功能描述:改变文件或目录的所有者 
#示例:
#改变文件demo的所有者为zhangsan
[root@localhost ~]# chown   zhangsan demo

权限管理命令:chgrp

命令名称:chgrp
命令英文原意:change file group ownership 
命令所在路径:/bin/chgrp 
执行权限:所有用户
语法:chgrp  [用户组]  [文件或目录] 
功能描述:改变文件或目录的所属组 
#示例:
#改变文件demo的所属组为lampbrother
[root@localhost ~]# chgrp lampbrother demo

权限管理命令:umask

命令名称:umask
命令英文原意:the user file-creation mask 
命令所在路径:Shell内置命令 
执行权限:所有用户
语法:umask [-S]
-S  以rwx形式显示新建文件缺省(默认)权限 
功能描述:显示、设置文件的缺省权限 
示例: 
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx

关机重启命令

shutdown命令(推荐)

[root@localhost ~]#shutdown [选项] 时间
选项:
    -c: 取消前一个关机命令
    -h: 关机
    -r: 取消前一个关机命令

其他关机命令

[root@localhost ~]#halt
[root@localhost ~]#poweroff
[root@localhost ~]#init 0

其他重启命令

[root@localhost ~]#reboot
[root@localhost ~]#init 6

系统运行级别

0       关机
1       单用户
2       不完全多用户,不含NFS服务
3       完全多用户
4       未分配
5       图形界面
6       重启
​
[root@localhost ~]#cat /etc/inittab
#修改系统默认运行级别
id:3:initdefault:
​
#查询系统运行级别
[root@localhost ~]#runlevel

退出登录命令

#注销用户
[root@localhost ~]#logout
​
#退出控制台
[root@localhost ~]#exit
​
#logout和exit的区别
logout 注销用户 
exit 退出控制台,对于多层shell,用于逐层退出,到最顶层shell,作用就和logout相同。
如果没有切换过用户的话,这两个命令都是退出控制台了。
如果切换过用户的话,这两个命令都是注销当前用户,返回上一个用户

链接命令

ln链接命令

命令名称:ln
命令英文原意:link
命令所在路径:/bin/ln
执行权限:所有用户
语法:
    ln -s [原文件] [目标文件]
       -s 创建软链接
    ln    创建硬链接
功能描述:生成链接文件
​
示例
#创建文件/etc/issue的软链接/tmp/issue.soft
[root@localhost ~]#ln -s /etc/issue /tmp/issue.soft
​
#创建文件/etc/issue的硬链接/tmp/issue.hard
[root@localhost ~]#ln /etc/issue /tmp/issue.hard

软链接和硬链接的区别

#软链接特征:类似Windows快捷方式
1、lrwxrwxrwx l 软链接
   软链接文件权限都为rwxrwxrwx
2、文件大小-只是符号链接
3、/tmp/issue.soft -> /etc/issue 
   箭头指向原文件
​
#硬链接特征:
1、拷贝cp -p + 同步更新
echo "this is a test" >> /etc/motd
2、可通过i节点识别
3、不能跨分区
4、不能针对目录使用

文件处理命令

touch创建文件命令

命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
​
语法:
    touch [文件名]
​
功能描述:创建空文件
#示例:
[root@localhost ~]#touch demo.txt

cat查看文件内容命令

命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
​
语法:
    cat [文件名]
​
功能描述:显示文件内容
     -n  显示行号
​
#示例: 
     [root@localhost ~]#cat demo.txt
     hello!
     linux
​
     [root@localhost ~]#cat -n demo.txt
     1 hello!
     2 linux

more查看长文件内容命令

命令名称:more
命令所在路径:/bin/more
执行权限:所有用户
​
语法:
    more [文件名]
    (空格)或f 翻页
       (Enter)  换行
       q或Q    退出
功能描述:分页显示文件内容
​
示例: 
     [root@localhost ~]#more /etc/services        
​

less查看长文件内容命令

命令名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
​
语法:
    less [文件名]
    
功能描述:分页显示文件内容(可向上下翻页↑↓)
​
示例: 
     [root@localhost ~]#less /etc/services      

head查看文件前几行命令

命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
​
语法:
    head [文件名]
    
功能描述:显示文件前面几行
      -n   指定行数
​
示例: 
     [root@localhost ~]#head -n 20 /etc/services

tail查看文件后面几行命令(动态日志查看)

命令名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
​
语法:
    tail [文件名]
    
功能描述:显示文件后面几行
      -n   指定行数
      -f    动态显示文件末尾内容
​
示例: 
     [root@localhost ~]#tail -n 20 /etc/services
     [root@localhost ~]#tail -f /tomcat/logs/catalina.out
​

 

vim编辑器

vim常用操作

vim简介

vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。

vim没有菜单,只有命令

vim工作模式

 

插入命令

命令 作用

a 在光标所在字符后插入

A 在光标所在行尾插入

i 在光标所在字符前插入

I 在光标所在行行首插入

o 在光标下插入新的一行

O 在光标上插入新的一行

定位命令

命令 作用

:set nu 设置行号

:set nonu 取消行号

gg 到第一行

G 到最后一行

nG 到第n行

:n 到第n行

$ 移至行尾

0 移至行首

删除命令

命令 作用

x 删除光标所在处的字符

nx 删除光标所在处后n个字符

dd 删除光标所在行,ndd删除n行

dG 删除光标所在行到文件末尾内容

D 删除光标所在处到行尾内容

n1,n2d 删除指定范围的行

复制和剪切命令

命令 作用

yy 复制当前行

nyy 复制当前行以下n行

dd 剪切当前行

ndd 剪切当前行以下n行

p 粘贴在当前光标所在行下

P 粘贴在当前光标所在行上

替换和取消命令

命令 作用

r 取代光标所在处字符

R 从光标所在处开始替换字符,按Esc结束

u 取消上一步操作

搜索和搜索替换命令

命令 作用

/string 搜索指定字符串

​ 搜索时忽略大小写:set ic

n 搜索指定字符串的下一个出现位置

:%s/old/new/g 全文替换指定字符串

:n1,n2s/old/new/g 在指定范围内替换指定字符串

保存和退出命令

命令 作用

:w 保存修改

:w new_filename 另存为指定文件

:wq 保存修改并退出

ZZ 快捷键,保存修改并退出

:q! 不保存修改退出

:wq! 强制保存修改并退出(文件所有者及root可使用)

vim使用技巧

  1. 导入文档中的内容 r 文件名

    示例:r demo.txt

  2. 导入命令执行结果:r !命令

    示例:r !date

    ​ 2017年 07月 17日 星期一 10:14:36 CST

  3. 自定义快捷键:map 快捷键 触发命令 (命令可以任意组合)

    示例:map ^P I#<ESC> 注释

    ​ :map ^B 0x 取消注释

  4. 连续行注释:n1,n2s/^/#/g

    ​ :n1,n2s/^#//g

    ​ :n1,n2s/^/\/\/g //(java中的单行注释)

  5. 替换:ab syso System.out.println(""); (eclipse中快捷键syso)

  6. 自定义快捷键,电脑重启之后,设置的快捷键需要重新设置,如果需要自定义的编辑模式永久生效,需要在用户根目录(root用户[/root] 普通用户[/home/fei])配置.vimrc文件

    示例:cd ~ 打开根目录

    ​ touch .vimrc 创建配置文件

    ​ vim .vimrc 编辑配置文件

    ​ set nu 显示行号

    ​ map ^P I#<ESC> 注释

    ​ :wq 退出并保存

软件包管理简介

1、软件包分类

  • 源码包

    ​ 脚本安装包

  • 二进制包

    ​ RPM包

    ​ 系统默认包

2、源码包

源码包的优点:

  1. 开源,如果有足够的能力,可以修改源码

  2. 可以自由选择所需的功能

  3. 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

  4. 卸载方便

源码包的缺点:

  1. 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误

  2. 编译过程时间较长,安装比二进制安装时间长

  3. 因为是编译安装,安装过程中一旦报错新手很难解决

 

3、RPM包

二进制包的优点:

  1. 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

  2. 安装速度比源码包安装快的多

二进制包的缺点

  1. 经过编译,不再可以看到源代码

  2. 功能选择不如源码包灵活

  3. 依赖性

RPM包管理-rpm命令管理

1、RPM包命名规则

举例:httpd-2.2.15-15.el6.centos.1.i686.rpm
​
httpd                   软件包名
​
2.2.15                  软件版本
​
15                      软件发布的次数
​
el6.centos              适合的Linux平台
​
i686                    适合的硬件平台
​
rpm                     rpm包扩展名

2、RPM包依赖性

  • 树形依赖:a→b→ c

  • 环形依赖:a→b→c→a

  • 模块依赖:模块依赖查询网站

    ​ www.rpmfind.net

3、包全名与包名

#包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
#包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库

4、RPM安装

rpm -ivh 包全名
选项:
    -i(install)     安装
    -v(verbose)     显示详细信息
    -h(hash)        显示进度
    --nodeps        不检测依赖性

5、RPM包升级

rpm -Uvh 包全名
选项:
    -U(upgrade)     升级

6、卸载

rpm -e 包名
选项:
    -e(erase)       卸载
    --nodeps        不检查依赖性

7、查询是否安装

[root@localhost ~]# rpm -q  包名
#查询包是否安装
选项:
-q  查询(query)
[root@localhost ~]# rpm –qa
#查询所有已经安装的RPM包
选项:
-a  所有(all)
​

8、查询软件包详细信息

[root@localhost ~]# rpm –qi 包名
选项:
-i  查询软件信息(information)
-p  查询未安装包信息(package)

9、查询包中文件安装位置

[root@localhost ~]# rpm –ql 包名 选项:
-l  列表(list)
-p  查询未安装包信息(package)
​

10、查询系统文件属于哪个RPM包

[root@localhost ~]# rpm –qf 系统文件名 选项:
-f  查询系统文件属于哪个软件包(file)

11、RPM包校验

[root@localhost ~]# rpm –V 已安装的包名 选项:
-V  校验指定RPM包中的文件(verify)
#验证内容中的8个信息的具体内容如下:
 S 文件大小是否改变
 M 文件的类型或文件的权限(rwx)是否被改变
 5 文件MD5校验和是否改变(可以看成文件内容是否 改变)
 D 设备的中,从代码是否改变
 L 文件路径是否改变
 U 文件的属主(所有者)是否改变
 G 文件的属组是否改变
 T 文件的修改时间是否改变
#文件类型
1   c   配置文件(config file)
2   d   普通文档(documentation)
3   g   “鬼”文件(ghost file),很少见,就是该文件不 应该被这个RPM包包含
4   l   授权文件(license file)
5   r   描述文件(read me)
​

12、RPM包中文件提取

[root@localhost ~]# rpm2cpio 包全名 |  \ cpio -idv .文件绝对路径
​
#将rpm包转换为cpio格式的命令
rpm2cpio
​
#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
cpio
​
[root@localhost ~]# cpio 选项 < [文件|设备]
#选项:
    -i:copy-in模式,还原
    -d:还原时自动新建目录
    -v:显示还原过程
​
#示例
#查询ls命令属于哪个软件包 
[root@localhost ~]# rpm -qf /bin/ls
​
#将ls命令移动到/tmp文件夹,造成ls命令误删除假象
[root@localhost ~]# mv /bin/ls /tmp/
​
#提取RPM包中ls命令到当前目录的/bin/ls下
[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils- 8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
​
#把ls命令复制会/bin/目录,修复文件丢失
[root@localhost ~]# cp /root/bin/ls /bin/

RPM包管理-yum在线管理

1、IP地址配置和网络yum源

1.1 IP地址配置
[root@localhost ~]# setup
#使用setup工具
​
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
把ONBOOT=“no” 改为
ONBOOT=“yes“
#启动网卡
​
[root@localhost ~]# service network restart
#重启网络服务
1.2 网络yum源
[root@localhost yum.repos.d]# vi /etc/yum.repos.d/CentOS-Base.repo
 [base]    容器名称,一定要放在[]中
 name  容器说明,可以自己随便写
 mirrorlist    镜像站点,这个可以注释掉
 baseurl   我们的yum源服务器的地址。默认是CentOS官方的yum源服务 器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地 址
 enabled   此容器是否生效,如果不写或写成enable=1都是生效,写成
enable=0就是不生效
 gpgcheck  如果是1是指RPM的数字证书生效,如果是0则不生效
 gpgkey    数字证书的公钥文件保存位置。不用修改

2、yum命令

2.1 查询
1)查询
[root@localhost yum.repos.d]# yum list
#查询所有可用软件包列表
​
[root@localhost yum.repos.d]# yum search 关键字
#搜索服务器上所有和关键字相关的包
2.2 安装
2)安装
[root@localhost yum.repos.d]# yum –y install 包名 选项:
install 安装
-y  自动回答yes
2.3 升级
[root@localhost yum.repos.d]# yum -y update 包名 选项:
update  升级
-y  自动回答yes
注意:升级一定要加包名,否则linuk系统全盘升级,一般很牛逼的人都不会轻易去尝试。
2.4 卸载
[root@localhost yum.repos.d]#   yum -y  remove  包名 选项:
remove  卸载
-y  自动回答yes
注意:尽量不要使用yum卸载,因为它会自动把依赖包也卸载掉,但是有些依赖包不仅仅是一个软件在使用,其他软件也在使用这个依赖包。
2.5 yum软件组管理命令
[root@localhost ~]# yum grouplist
#列出所有可用的软件组列表
​
[root@localhost ~]# yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来
​
[root@localhost ~]# yum groupremove 软件组名
#卸载指定软件组

3、光盘yum源搭建

3.1 光盘yum源搭建步骤
1)挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
2)让网络yum源文件失效
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak  
[root@localhost yum.repos.d]# mv CentOS-Debuginfo.repo Centos-Debuginfo.repo.bak
[root@localhost yum.repos.d]# mv CentOS-Vault.repo CentOS-Vault.repo.bak
3)修改光盘yum源文件
[root@localhost yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever-Media
baseurl=file///mnt/cdrom
#地址为你自己的光盘挂载地址
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释这两个不存在的地址
gpgcheck=1
enabled=1
#把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RRM-GPG-KEY-CentOS-6
​
注意:一般配置文件有严格的格式限制,不能多加空格或者注释。

源码包管理

1、源码包与RPM包的区别

1、区别
 安装之前的区别:概念上的区别
 安装之后的区别:安装位置不同
 
#RPM包安装位置
是安装在默认位置中
#RPM包默认安装路径
/etc/               配置文件安装目录
/usr/bin/           可执行的命令安装目录
/usr/lib/           程序所使用的函数库保存位置
/usr/share/doc/     基本的软件使用手册保存位置
/usr/share/man/     帮助文件保存位置
​
#源码包安装位置
安装在指定位置当中,一般是
/usr/local/软件名/
​
#安装位置不同带来的影响
 RPM包安装的服务可以使用系统服务管 理命令(service)来管理,例如RPM包安 装的apache的启动方法是:
/etc/rc.d/init.d/httpd start
service httpd start
​
#而源码包安装的服务则不能被服务管理命 令管理,因为没有安装到默认路径中。所 以只能用绝对路径进行服务的管理,如:
    /usr/local/apache2/bin/apachectl start
​

2、源码包的安装过程

2.1 安装准备
#安装C语言编译器
[root@localhost ~]# yum –y install gcc
#下载源码包
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.gz

 

2.2 安装注意事项
#源代码保存位置:/usr/local/src/
#软件安装位置:/usr/local/
#如何确定安装过程报错:
    a.安装过程停止
    b.并出现error、warning或no的提示

 

2.3 源码包安装过程
#下载源码包
[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.gz
#解压缩下载的源码包
[root@localhost ~]# tar -xvf httpd-2.2.34.tar.gz /usr/local/apache2
#进入解压缩目录
[root@localhost ~]# cd /usr/local/apache2/httpd-2.2.34
#定义安装位置
[root@localhost httpd-2.2.34]# ./configure  --prefix=/usr/local/apache2

 

2.4 ./configure 软件配置与检查
Ø  定义需要的功能选项。
​
Ø  检测系统环境是否符合安装要求。
​
Ø  把定义好的功能选项和检测系统环境的信息 都写入Makefile文件,用于后续的编辑。

 

2.5 源码包的编译与安装
#编译解压后的源码包
[root@localhost httpd-2.2.34]# make
​
#清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件
[root@localhost httpd-2.2.34]# make clean
​
#将编译成功的可执行文件安装到系统目录中,一般为/usr/local/bin目录。 
[root@localhost httpd-2.2.34]# make install

 

2.6 测试是否安装成功
#启动apache服务
[root@localhost httpd-2.2.34]# /usr/local/apache2/bin/apachectl start
#在浏览器输入
localhost:80
#浏览器显示内容
It works!

 

2.7 源码包的卸载
#不需要卸载命令,直接删除安装目录即可。不会遗留任何垃圾文件

 

脚本安装包

1、 脚本安装包简介

# 脚本安装包并不是独立的软件包类型,常见 安装的是源码包。
# 是人为把安装过程写成了自动安装的脚本, 只要执行脚本,定义简单的参数,就可以完 成安装。
# 非常类似于Windows下软件的安装方式

2、 Webmin的作用

#Webmin 是一个基于 Web 的 Linux 系统管 理界面。您就可以通过图形化的方式设置 用户帐号、Apache、DNS、文件共享等服 务。

3、Webmin安装过程

#创建文件夹webmin
[root@localhost ~]# mkdir /usr/local/webmin
#进入/usr/local/webmin
[root@localhost ~]# cd /usr/local/webmin
​
#下载软件
[root@localhost webmin]# wget https://sourceforge.net/projects/webadmin/files/webmin/1.850/webmin-1.850.tar.gz/download
​
# 解压缩,并进入解压缩目录
[root@localhost webmin-1.850]# tar -xvf webmin-1.850.tar.gz
# 执行安装脚本
[root@localhost webmin-1.850]# ./setup.sh 
​
注意:安装过程中,键盘enter键,就表示执行下一步;
    :安装过程中,需要设置登录名和密码
小技巧:Ctrl+Backspace(退格键)  删除
# 安装完之后,测试是否安装成功
# 开启防火墙10000端口
[root@localhost webmin-1.850]# /sbin/iptables -I INPUT -p tcp --dport 10000 -j ACCEPT
[root@localhost webmin-1.850]# /etc/rc.d/init.d/iptables save
​
# 浏览器测试,输入linux Ip+端口号(10000)
 成功的话,会进入一个登陆界面

用户和用户组管理

1、用户管理简介

# 越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和 服务器操作规范。
# 在Linux中主要是通过用户配置文件来查 看和修改用户信息

2、用户配置文件

2.1 用户信息文件/etc/passwd
#查看用户信息配置文件信息
[root@localhost ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
demo:x:500:500::/home/demo:/bin/bash
liqi:x:501:501::/home/liqi:/bin/bash
mysql:x:498:498:MySQL server:/var/lib/mysql:/bin/bash
ucenter:x:502:502::/ucenter:/bin/bash
​
#当打开配置文件时 窝草,看的劳资很懵逼
#可以利用man 命令 (man 5 配置文件名) 查看帮助
[root@localhost ~]# man 5 passwd
#看主要内容 The field descriptions are:
    accout 
    password
    UID
    ...
    
#第1字段:用户名称
#第2字段:密码标志
#第3字段:UID(用户ID)
       0:          超级用户
       1-499:      系统用户(伪用户)
        例如:mysql:x:498:498:MySQL server:/var/lib/mysql:/bin/bash
       500-65535:  普通用户
        例如:demo:x:500:500::/home/demo:/bin/bash
        
#第4字段:GID(用户初始组ID)
#第5字段:用户说明
#第6字段:家目录
       普通用户:/home/用户名/
       超级用户:/root/
#第7字段:登录之后的Shell
    //shell是用户和计算机交流的中介,“登录shell”保证用户和计算机交流(一般Linux默认的用户shell都是bash ,也就是说你可以登录进去敲命令。),“非登陆shell(/bin/nologin 就是一个非登陆shell)”无法让用户与计算机交流。
2.2 初始组和附加组
#初始组:就是指用户一登录就立刻拥有这 个用户组的相关权限,每个用户的初始组 只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
#附加组:指用户可以加入多个其他的用户 组,并拥有这些组的权限,附加组可以有 多个。
2.3 Shell是什么
#Shell就是Linux的命令解释器。
#在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin(用户禁用),/usr/bin/passwd等。    

3、影子文件/etc/shadow

3.1 影子文件/etc/shadow
[root@localhost ~]# cat /etc/shadow
root:$6$CDD56Ji0/1P8TRCD$9QaqGR9Jpy6v9tYbs12rnhMynPdyYy2Y.AEsfUbh4bEgc7aF5UvIWB5DjYc6owmWsHus0WAfTOzJPTWAfp2.b/:17350:0:99999:7:::

配置文件详解

#第1字段:用户名
#第2字段:加密密码
    加密算法升级为SHA512散列加密算法
    如果密码位是“!!”或“*”代表没有密码,不能登 录
# 第3字段:密码最后一次修改日期
    使用1970年1月1日作为标准时间,每过一天时间戳 加1
    //改密码提示 it is based on a dictionary word(它是基于字典的词)        is too similar to the old one(和之前设置的密码太相似)
    
# 第4字段:两次密码的修改间隔时间(和 第3字段相比)
# 第5字段:密码有效期(和第3字段相比)
# 第6字段:密码修改到期前的警告天数( 和第5字段相比)
# 第7字段:密码过期后的宽限天数(和第5 字段相比)
   0:代表密码过期后立即失效
  -1:则代表密码永远不会失效。
# 第8字段:账号失效时间
   要用时间戳表示
# 第9字段:保留
3.2 时间戳换算
#把时间戳换算为日期
   date -d "1970-01-01 16066 days"
# 把日期换算为时间戳
   echo $(($(date --date="2017/07/29" +%s)/86400+1)) 
    注意:时间 +%s 有个空格 一定要加上

4、组信息文件/etc/group和组密码文件/etc/gshadow

4.1 组信息文件/etc/group
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
demo:x:500:
liqi:x:501:
​
第一字段:组名
第二字段:组密码标志
第三字段:GID
第四字段:组中附加用户
4.2 组密码文件/etc/gshadow
[root@localhost ~]# cat /etc/gshadow
root:::
bin:::bin,daemon
demo:!::
liqi:!::
​
第一字段:组名
第二字段:组密码
第三字段:组管理员用户名 
第四字段:组中附加用户

5、 用户管理相关文件

5.1 用户的家目录
# 普通用户:/home/用户名/,所有者和所属
组都是此用户,权限是700
# 超级用户:/root/,所有者和所属组都是
root用户,权限是550
​
[root@localhost ~]# cd /home
[root@localhost home]# ll
总用量 24
drwx------. 4 demo demo  4096 7月   6 23:45 demo
drwx------. 4 liqi liqi  4096 7月   6 09:32 liqi
drwx------. 2 root root 16384 7月   4 02:36 lost+found
5.2 用户的邮箱
# /var/spool/mail/用户名/长度
​
[root@localhost ~]# cd /var/spool/mail
[root@localhost mail]# ll
总用量 8
-rw-rw----. 1 demo    mail    0 7月  24 08:22 demo
-rw-rw----. 1 liqi    mail  609 7月   6 01:55 liqi
-rw-------. 1 root    mail 1215 7月   6 01:57 root
-rw-rw----. 1 rpc     mail    0 7月   4 02:43 rpc
-rw-rw----. 1 ucenter mail    0 7月   7 01:51 ucenter
5.3 用户的模板目录
# /etc/skel ,每创建一个用户时,系统会按照模板文件给新得生成对应的文件
​
[root@localhost ~]# cd /etc/skel
[root@localhost skel]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2
​
示例:
[root@localhost skel]# touch warning.txt
[root@localhost skel]# vim warning.txt
随便写点内容
#创建一个用户
[root@localhost skel]# useradd user1
#为用户设置密码
[root@localhost skel]# passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
​
#切换到use1用户
[root@localhost user1]# su user1
[user1@localhost ~]$ ls -a
.   .bash_logout   .bashrc  warning.txt
..  .bash_profile  .gnome2
我们可以看到这个用户的家目录生成了warning.txt

6、用户管理命令

6.1 用户添加命令useradd

useradd命令格式

[root@localhost ~]#useradd [选项] 用户名
选项:
-u UID: 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录
-c 用户说明:    手工指定用户的说明
-g 组名:  手工指定用户的初始组
-G 组名: 指定用户的附加组
-s shell:   手工指定用户的登录shell。默认是/bin/bash

添加默认用户

#最简单的添加用户
[root@localhost ~]# useradd lamp
[root@localhost ~]# grep "lamp" /etc/passwd
[root@localhost ~]# grep "lamp" /etc/shadow
[root@localhost ~]# grep "lamp" /etc/group
[root@localhost ~]# grep "lamp" /etc/gshadow
[root@localhost ~]# ll -d /home/lamp/
[root@localhost ~]# ll /var/spool/mail/lamp

指定选项添加用户

#添加lamp用户组
[root@localhost ~]# groupadd lamp1
# ↑ 见useradd命令格式
[root@localhost ~]# useradd -u 550 -g lamp1 -G root -d /home/lamp1 -c "test user" -s /bin/bash lamp1
[root@localhost ~]# grep "lamp1" /etc/passwd
lamp1:x:550:503:test user:/home/lamp1:/bin/bash
lamp1:用户名
x:密码标识
550:UID
503:GID(用户初始组ID)
test user:用户说明
/home/lamp1:用户家目录
/bin/bash:用户登录之后的shell

用户默认值文件

#   /etc/default/useradd
    GROUP=100   #用户默认组
    HOME=/home  #用户家目录
    INACTIVE=-1 #密码过期宽限天数(7)
    EXPIRE= #密码失效时间(8)
    SHELL=/bin/bash #默认shell
    SKEL=/etc/skel  #模板目录
    CREATE_MAIL_SPOOL=yes   #是否建立邮箱
#   /etc/login.defs
    PASS_MAX_DAYS 9999   #密码有效期(5)
    PASS_MIN_DAYS   0   #密码修改间隔(4)
    PASS_MIN_LEN    5   #密码最小5位(PAM)
    PASS_WARN_AGE 7      #密码到期警告(6)
    UID_MIN 500         #最小和最大UID范围
    GID_MAX 60000
    ENCRYPT_METHOD SHA512 #加密模式
6.2 修改用户密码passwd

passwd命令格式

[root@localhost ~]#passwd [选项] 用户名
选项:
-S  查询用户密码的密码状态。仅root用户 可用。
-l  暂时锁定用户。仅root用户可用
-u  解锁用户。仅root用户可用
--stdin 可以通过管道符输出的数据作为用户 的密码。

查看密码状态

[root@localhost ~]# passwd -S lamp
lamp PS 2013-01-06 0 99999 7 -1
#用户名密码设定时间(2013-01-06) 密码修改间隔时间(0)
#密码有效期(99999 ) 警告时间(7) 密码不失效(-1)

锁定用户和解锁用户

#锁定用户
[root@localhost ~]# passwd -l lamp
#解锁用户
[root@localhost ~]# passwd -u lamp

使用字符串作为用户的密码

[root@localhost ~]# echo "123" | passwd --stdin lamp1
Changing password for user lamp1.
passwd: all authentication tokens updated successfully.
6.3 修改用户信息usermod
[root@localhost ~]#usermod [选项] 用户名
选项:
-u UID: 修改用户的UID号
-c 用户说明:    修改用户的说明信息
-G 组名:  修改用户的附加组
-L: 临时锁定用户(Lock)
-U: 解锁用户锁定(Unlock)
#示例
[root@localhost ~]# usermod -c "test user" lamp
#修改用户的说明
[root@localhost ~]# usermod -G root lamp
#把lamp用户加入root组
[root@localhost ~]# usermod -L lamp
#锁定用户
[root@localhost ~]# usermod -U lamp
#解锁用户
6.4 修改用户密码状态chage
[root@localhost ~]#chage [选项] 用户名
选项:
-l    :  列出用户的详细密码状态
-d 日期:  修改密码最后一次更改日期(shadow3字段)
-m 天数: 两次密码修改间隔(4字段)
-M 天数: 密码有效期(5字段)
-W 天数: 密码过期前警告天数(6字段)
-I 天数:  密码过后宽限天数(7字段)
-E 日期: 账号失效时间(8字段)
示例:
[root@localhost ~]# chage -d 0 lamp
#这个命令其实是把密码修改日期归0了(shadow第3字段)
#这样用户一登陆就要修改密码
6.5 删除用户userdel

删除用户userdel

[root@localhost ~]# userdel [-r] 用户名
选项:
-r  删除用户的同时删除用户家目录
手工删除用户
[root@localhost ~]# vi /etc/passwd
[root@localhost ~]# vi /etc/shadow
[root@localhost ~]# vi /etc/group
[root@localhost ~]# vi /etc/gshadow
[root@localhost ~]# rm -rf /var/spool/mail/lamp
[root@localhost ~]# rm -rf /home/lamp/

查看用户ID

[root@localhost ~]# id 用户名

6.6 切换用户身份su

[root@localhost ~]# su [选项] 用户名
选项:
- :  选项只使用“-”代表连带用户的环境
变量一起切换
-c 命令: 仅执行一次命令,而不切换用户身份
​
#示例
[lamp@localhost ~]$ su – root
# 切换成 root
[lamp@localhost ~]$ su - root -c "useradd user3"
# 不切换成 root ,但是执行 useradd 命令添加 user1 用户
​
#注意su 后面一定要跟-,不带 - ,用户的环境变量是不会改变的。
​
[liqi@localhost ~]$ su root
密码:
[root@localhost liqi]# env
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=192.168.80.6 55397 22
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
SSH_TTY=/dev/pts/1
USER=liqi
​
我们可以看到用户的环境变量没有切换user=liqi
​
​
所以需要加上- 
# su - root 必须要加上 -
[liqi@localhost ~]$ su - root 
密码:
[root@localhost ~]# env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
USER=root
​
我们可以看到用户的环境变量已经切换了

7、用户组管理命令

7.1 添加用户组
[root@localhost ~]# groupadd [选项] 组名
选项:
    -g GID:     指定组ID
7.2 修改用户组
[root@localhost ~]# groupmod [选项] 组名
选项:
    -g GID:     修改组ID
    -n 新组名:   修改组名
#示例
[root@localhost ~]# groupmod -n testgrp group1 
#把组名group1修改为testgrp
7.3 删除用户组
[root@localhost ~]# groupdel 组名
​
注意:如果删除的组有初始用户,需要先删除用户,然后才能删除用户组
7.4 把用户添加入组或从组中删除
[root@localhost ~]# gpasswd 选项 组名
选项:
 -a 用户名:    把用户加入组
 -d 用户名:    把用户从组中删除

ACL权限

1、ACL权限简介与开启

ACL权限简介

 

查看分区ACL权限是否开启
[root@localhost ~]# dumpe2fs -h /dev/sda3
#dumpe2fs 命令是查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级块中信息,而不显示磁盘块组的详细信
息
临时开启分区ACL权限
[root@localhost ~]# mount -o remount,acl /
# 重新挂载根分区,并挂载加入 acl 权限
永久开启分区ACL权限
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl 1 1
# 加入 acl
[root@localhost ~]# mount -o remount /
# 重新挂载文件系统或重启动系统,使修改生效

文件特殊权限

SetUID

1、SetUID的功能
1.只有可以执行的二进制程序才能设定SUID权限 
2.命令执行者要对该程序拥有x(执行)权限
3.命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主) 
4.SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
示例:
    passwd命令拥有SetUID权限,所以普通可以修改自己的密码 
[root@localhost ~]# ll /usr/bin/passwd  
-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd 
 
    cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容 
[root@localhost ~]# ll /bin/cat  
-rwxr-xr-x 1 root root 47976 6月  22 2012 /bin/cat 
普通用户明明对它(/etc/shadow)文件木有操作权限
如何写入的呢?因为passwd这个命令的作用
因为passwd用户suid权限                    系统会认为你是把内裤穿在外面的男人(root用户),暂时变身为root用户

 

 

2、设定SetUID的方法
4代表SUID 
   chmod 4755 文件名 
   chmod u+s 文件名 
举例:
[root@localhost ~]# chmod 4755 /tmp/test
[root@localhost ~]# chmod u+s /tmp/test
3、取消SetUID的方法
chmod 755 文件名 
chmod u-s 文件名
举例:
4、危险的SetUID
1.关键目录应严格控制写权限。比如“/”
、“/usr”等 
2.用户的密码设置要严格遵守密码三原则(复杂性、易记忆性、时效性)
3.对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

文件下载链接:https://pan.baidu.com/s/1ggl8odVhQMV0DAclA-MRUQ 密码: 5qjf

转载于:https://my.oschina.net/u/3568600/blog/1821575

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值