命令基础

  • 命令的执行依赖于解释器(默认的解释器:/bin/bash)

    • 用户---》解释器---》内核---》硬件
     [root@localhost ~]# cat /etc/shells     #查看当前系统有哪些解释器
    
  • 命令行的一般格式基本用法

    • 命令字 [选项]… [参数1] [参数2]…
  • Linux执行大多数命令,都要找到对应的执行程序

    • which 查看命令对应的执行程序
      • 大多数命令是有对应的执行程序的
  • 命令行的快捷键

    • Ctrl+C 废弃当前编辑的命令行、结束当前正在运行的命令
    • Ctrl+L 清空屏幕
    • ALT/ESC+. 粘贴上一条命令的最后一个参数
    • Ctrl+U 清楚光标前的内容
    • Ctrl+W 以空格为界定,删除一个参数或命令
    • Tab 自动补全

一、文件和目录管理

1.1、Linux系统的目录结构

  • Linux系统的目录结构:树形结构
    • 哲学理念:一切皆文件。
    • 根目录:用 “ / ” 表示
      • Linux系统的起点

  • /root:管理员用户的家目录
  • /bin :存放二进制可执行文件
  • /boot:存放启动系统所需要的引导文件
  • /etc :存放的是系统管理所用到的配置文件
  • /home:存放普通用户家目录的
  • /dev :存放硬件设备的目录
  • /var :常态性变动的文件,包括日志文件以及某些软件运作所产生的文件

1.2、文件和目录的管理命令

1.2.1、pwd

  • (Print Working Directory)显示出完整的当前工作目录的名称
[root@localhost ~]# pwd
/root

1.2.2、cd

  • (Change Directory)切换目录

  • 命令格式:cd [目标文件夹位置]

[root@localhost ~]# cd /opt/
[root@localhost opt]# pwd
/opt
  • cd 命令常用的几种方式

    1. 直接使用 cd 会切换到当前登录用户的家目录、
    [root@localhost opt]# cd 
    [root@localhost ~]# pwd
    /root
    
    1. cd .. 切换到当前目录的父目录
    [root@localhost ~]# cd ..
    [root@localhost /]# pwd
    /
    
    1. cd ~用户名 切换到目标用户的家目录
    [root@localhost ~]# useradd nsd2005
    [root@localhost ~]# cd ~nsd2005
    [root@localhost nsd2005]# pwd
    /home/nsd2005
    
  • 绝对路径和相对路径

    • 绝对路径:以根目录开始的完整路径
    • 相对路径:以当前所在的目录为参照物的路径

1.2.3、ls

  • (list)显示指定目录下的内容(列出当前工作目录所含文件及子目录)

  • 命令格式:ls [选项] [目录或文件名]…

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
  • 常用的选项
  • -l 长格式显示文件的详细属性
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2727 6月   8 10:24 /etc/passwd
  • -A 显示目标目录下所有的文件和目录,包括隐藏文件
[root@localhost ~]# ls -A /root/
  • -d 显示目录本身的属性
[root@localhost ~]# ls -ld /etc
  • -h 提供一个易读的单位
[root@localhost ~]# ls -lh /etc/passwd
  • -R 递归显示内容
[root@localhost ~]# ls -R /etc/

1.2.4、du

  • 统计文件或者目录使用硬盘空间的大小

  • 命令格式 : du [选项] 文件或目录

  • 常用选项

    • -s 显示文件或目录的大小
    • -h 加一个易读的单位
    [root@localhost ~]# du -sh /etc/passwd
    

1.2.5、cat

  • 将[文件]或标准输入组合输出到标准输出。

  • 命令格式:cat [选项]... [文件]...

[root@localhost ~]# cat /etc/passwd
  • 常用的选项

    • -n 对输出的所有行编号
  [root@localhost ~]# cat -n /etc/passwd

1.2.6、head和tail

  • 查看部分内容的命令

  • head命令格式:head [-n] 数字 文件名

    • 默认查看文件前10行
    [root@localhost ~]# head /etc/passwd		//显示前十行内容
    
    [root@localhost ~]# head -2 /etc/passwd		//显示前两行内容
    
  • tail命令格式: tail [-n] 数字 文件名

    • 默认查看文件后10行
    [root@localhost ~]# tail /etc/passwd		//显示后十行内容
    
    [root@localhost ~]# tail -2 /etc/passwd		//显示后两行内容
    

1.2.7、grep工具

  • 输出包含指定字符串的行
  • 命令格式: grep 查找条件 目标文件
[root@localhost ~]# grep ^root /etc/passwd		//查询以root开头的行

[root@localhost ~]# grep bash$ /etc/passwd		//查询以bash结尾的行
  • 常用选项

    • -v 结果取反
    • -i 忽略大小写
    [root@localhost ~]# grep -v ^root /etc/passwd   //查询不以root开头的行
    
    [root@localhost ~]# grep -v bash$ /etc/passwd   //查询不以bash结尾的行
    

1.2.8、mkdir

  • 创建目录

  • 命令格式:mkdir [选项]... 目录...

[root@localhost ~]# mkdir /opt/nsd2005
[root@localhost ~]# cd /opt/nsd2005
[root@localhost nsd2005]# pwd
/opt/nsd2005
  • 常用的选项

    • -p 创建一个目录并将它的父目录也创建出来(创建一个连续的目录)
    [root@localhost nsd2005]# mkdir -p /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost nsd2005]# cd /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost ee]# pwd
    /opt/nsd2005/aa/bb/cc/dd/ee
    
    • -m 创建目录时指定权限
    [root@localhost ~]# mkdir -m 444 /opt/nsd05
    [root@localhost ~]# ls -ld /opt/nsd05
    dr--r--r--. 2 root root 6 6月   8 10:50 /opt/nsd05
    

1.2.9、touch

  • 创建文件
  • 命令格式: touch 文件名
[root@localhost ~]# touch 1.txt   //在当前目录下创建文件1.txt
[root@localhost ~]# touch /opt/1.txt   //在指定目录下创建文件1.txt

1.2.10、rm

  • 删除目录或文件

  • 命令格式:rm [选项]... 文件...

  • 常用的选项

    • -r :递归删除(删除目录必须要有)
    • -f : 强制删除
    [root@localhost ~]# rm -rf /opt/1.txt 
    [root@localhost ~]# rm -rf /opt/nsd05/
    [root@localhost ~]# ls /opt/
    

1.2.11、mv

  • (move)移动文件或目录

  • 路径不变的移动(重命名)

  • 命令格式:mv 原文件… 目标路径

    [root@localhost ~]# touch 1.txt
    [root@localhost ~]# mv 1.txt  /opt/1.txt
    
  • 重命名

    [root@localhost ~]# mv  /opt/1.txt /opt/2.txt
    [root@localhost ~]# ls /opt/
    

1.2.12、cp

  • (copy)复制

  • 命令格式:cp [选项]... 原文件1、原文件2… 目标路径

  • 常用选项

    • -r 递归复制,复制目录时必须有的选项
    [root@localhost ~]# cp /etc/passwd /opt/passwd
    [root@localhost ~]# ls /opt/
    
    [root@localhost ~]# cp /etc/passwd /opt/pass
    [root@localhost ~]# ls /opt/
    
    [root@localhost ~]# \cp /etc/passwd /opt/
    

1.3、归档及压缩

  • 归档:将多个文件或目录整理为一个文件,文件总大小不会改变。

  • 压缩:按照某种算法减小文件占用空间的大小

  • Linux系统中常见的压缩格式

    • .gz ==》 gzip
    • .bz2 ==》 bzip2
    • .xz ==》 xz

1.3.1、tar 集成备份工具

  • 创建压缩包

    • 命令格式1: tar 选项 /路径/压缩包的名字 /路径/被压缩归档的数据.........
  • 释放压缩包:

    • 命令格式2: tar 选项 /路径/压缩包的名字 -C(大写) /路径/
  • 常用选项

    • -c 创建归档
    • -x 释放归档
    • -f 指定归档文件名称,必须要有的选项,必须放在所有选项后面。
    • -z 、 -j 、-J : 分别表示gz、bz2、xz
    • -t : 显示归档文件中的清单。不执行解压缩的操作
    • -C : 指定释放路径
[root@localhost ~]# tar -zcf /root/tarfile.tar.gz  /boot  /opt/
tar: 从成员名中删除开头的“/”
[root@localhost ~]# tar -tf /root/tarfile.tar.gz
[root@localhost ~]# mkdir /opt/tarfiles
        
[root@localhost ~]# tar -xf /root/tarfile.tar.gz -C  /opt/tarfiles/
[root@localhost ~]# ls /opt/tarfiles/
boot  opt

1.3.2、zip

  • zip归档工具:可跨平台的

    • 归档+压缩
    • zip -r 备份文件.zip 被归档的文件或目录
  [root@localhost ~]# zip -r /root/zipfiles.zip /home /boot
  • 释放+解压
  • unzip 备份文件.zip -d [目标文件夹]
[root@localhost ~]# mkdir /zipfiles
[root@localhost ~]# unzip /root/zipfiles.zip -d /zipfiles
[root@localhost ~]# ls /zipfiles
boot  home

1.4、管道和重定向

  • 管道 | 将前面命令的输出结果,传递给后面的命令作为参数

  • 重定向 > 将前面命令的输出作为内容,写入到目标文件中

    • (不存在会自动创建)
    • 覆盖重定向: >
    • 追加重定向: >>

1.5、find命令

  • 命令格式: find [目录] [条件1] [条件2]

  • 常用的条件

    • -type 类型 (f 文本文件、 d 目录、 L快捷方式)
    • -name “文件名称”
    • -size + | - 文件大小(k、M、G、TB、PB、EB)
    • -user 用户名
    • -mtime 修改时间
    [root@localhost ~]# find /boot/ -type f
    
  • 高级使用:处理查找的内容

  • 命令格式:find [范围] [条件] -exec 处理命令 {} ;

    • -exec
    • 示例
    [root@localhost ~]# find /boot/ -type f  -exec cp {} /opt/ \;
    
    [root@localhost ~]# find /opt/ -type f  -exec rm -rf  {}  \;
    [root@localhost ~]# ls /opt/
    

1.6、链接文件

  • 制作连接(链接)文件(制作快捷方式)
    • 格式: ln -s /路径/源数据 /路径/快捷方式的名字 #软连接
[root@localhost ~]# ln   -s    /etc/redhat-release        /opt/r.txt

[root@localhost ~]# ls   -l   /opt/r.txt 
lrwxrwxrwx. 1 root root 19 7月   8 14:16 /opt/r.txt -> /etc/redhat-release
[root@localhost ~]# cat    /opt/r.txt
CentOS Linux release 7.5.1804 (Core)
  • 制作硬连接文件
    • 格式: ln /路径/源数据 /路径/快捷方式的名字 #硬链接
[root@localhost ~]# echo  123456   >   /opt/A.txt
[root@localhost ~]# cat   /opt/A.txt

[root@localhost ~]# ln   /opt/A.txt    /opt/C.txt   #硬链接
[root@localhost ~]# ls   /opt/
  • 软连接的特点:

    • 若原始文件或目录被删除,连接文件将失效
    • 软连接可存放在不同分区/文件系统
  • 硬链接的特点:

    • 若原始文件被删除,连接文件仍可用
    • 硬链接与原始文件必须在同一分区/文件系统

二、Linux软件包管理

  • 常见的软件包
    • Red Hat系列 : rpm软件包
    • Debian系列 : deb软件包
    • 源代码软件包 :通常以 .tar.gz、.tar.bz2 格式的压缩包提供,包含程序的原始代码文件
    • 绿色版软件 :免安装

2.1、rpm 命令

2.1.1、查询已软件的软件

  • 命令格式: rpm -q[子选项] [软件名称]

  • 常用的子选项

    • -qa:列出已安装的所有软件包
    • -qi :查看指定软件的详细信息
    • -ql:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -q firefox
    [root@localhost ~]# rpm -qi firefox
    [root@localhost ~]# rpm -ql firefox
    

2.1.2、查询目录或文件是由那个RPM包产生的

  • 命令格式 :rpm -qf [文件路径]…

    • 即使目标被删除也可以查询
    [root@localhost ~]# rpm -qf /etc/passwd
    

2.1.3、查询未安装的软件包信息

  • 命令格式:rpm -q[子选项] [RPM包文件路径]

  • 常用的子选项

    • -qpi:查看指定软件的详细信息
    • -qpl:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -qpi /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    
    [root@localhost ~]# rpm -qpl /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    

2.1.4、安装rpm包

  • 命令格式: rpm -i RPM软件包路径

  • 辅助选项

    • -v : 显示安装细节信息
    • -h : 显示安装进度
    • --force : 强制安装、覆盖安装
    • --test : 测试安装,不做真实安装动作
    [root@localhost ~]# rpm -q httpd			//查询是否安装
    
    [root@localhost ~]# rpm -ivh  /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm
    
  • 恢复被删除的程序

[root@localhost ~]# which hostname
/usr/bin/hostname
[root@localhost ~]# rm -rf /usr/bin/hostname
[root@localhost ~]# rpm -qf /usr/bin/hostname
hostname-3.13-3.el7.x86_64
[root@localhost ~]# rpm -ivh --force /mydvd/Packages/hostname-3.13-3.el7.x86_64.rpm 

2.1.5、卸载软件

  • 命令格式: rpm -e 软件名
[root@localhost ~]# rpm -e httpd
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd 

2.1.6、导入红帽签名信息

  • 命令格式: rpm --import 签名信息文件存放路径
[root@localhost ~]# rpm --import /mydvd/RPM-GPG-KEY-CentOS-7

2.2、yum仓库

  • 基于RPM包构建的软件更新机制

  • 自动解决软件包依赖关系

  • 所有软件包由集中的YUM软件仓库提供

2.2.1、构建本地的yum仓库

[root@localhost ~]# mkdir /etc/yum.repos.d/repo_bak
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]                       //仓库的标识
name=dvd.repo               //仓库的描述信息
baseurl=file:///dvd         //仓库在哪里,file://代表本机
enabled=1                   //是否启用本文件
gpgcheck=0 					//是否检测红帽签名
#gpgkey= 签名文件路径         //gpgcheck=0时gpgkey不需要写
    
[root@localhost ~]# yum repolist

2.2.2、使用yum安装软件

[root@localhost ~]# yum -y install httpd

2.2.3、使用yum卸载软件

[root@localhost ~]# yum -y remove httpd

2.2.4、yum 常用操作

  • yum 查询
[root@localhost ~]# yum list ftp		//查询软件

[root@localhost ~]# yum provides ftp	
//查询提供ftp命令的软件包,也可以查询文件由那个软件包提供

[root@localhost ~]# yum search ftp		//查询与ftp有关的软件包
  • yum 缓存
[root@localhost ~]# yum makecache 		//手动建立缓存
[root@localhost ~]# yum clean all		//清楚缓存

2.2.5、mount挂载操作

  • 让目录成为设备的访问点

  • 以光驱设备为例。

[root@localhost ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 6月   8 15:17 /dev/cdrom -> sr0
	
[root@localhost ~]# mkdir /dvd				//创建挂载点
[root@localhost ~]# mount /dev/cdrom /dvd	

[root@localhost ~]# df -ah | grep dvd
/dev/sr0                 8.8G  8.8G     0  100% /dvd
  • 卸载操作
[root@localhost ~]# umount /dvd/
[root@localhost ~]# df -ah | grep dvd

三、用户和组管理

3.1、用户管理

  • 用户的标识: UID

  • 管理员用户 root 的UID 为0 ; 普通用户的UID从1000开始。

  • 一个用户必须属于一个组,在创建用户的用时,也会创建一个与这个用户相对应得基本组。

  • /etc/passwd,保存用户帐号的基本信息

    • 每个用户记录一行,以:分割为7个字段
    [root@localhost ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    

    用户名:密码占位符:用户的UID:基本组的GID:描述信息:家目录:解释器

  • /etc/shadow,保存用户密码/有效期等信息

    • 每个用户记录一行,以:分割为9个字段
    [root@localhost ~]# grep root /etc/shadow
    root:$6$Jw6.2w9W$NSXSyOBuR.afacfARXMyylkpvhb1X847sSmeeP15pAZo8JhGbBlaaYCBWh9U/SIHoTvUctpOqK2deERW8R/Sh.:18421:0:99999:7:::
    

    字段1:用户帐号的名称
    字段2:加密后的密码字符串
    字段3:上次修改密码的时间(上一次修改密码的时间:从1970-1-1到达上一次修改密码的时间经历的天数)
    字段4:密码的最短有效天数,默认0
    字段5:密码的最长有效天数,默认99999
    字段6:密码过期前的警告天数,默认7
    字段7:密码过期后多少天禁用此用户账号
    字段8:帐号失效时间,默认值为空
    字段9:保留字段(未使用)

  • 用户初始配置文件

    • 新建用户时,根据 /etc/skel 模板目录复制

3.1.1、创建用户

  • useradd 命令

    • 命令格式: useradd [选项]... 用户名

    • 常用选项

      • -u:指定 UID 标记号
      [root@localhost ~]# useradd -u 2005 nsd01
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01) 组=2005(nsd01)
      
      • -d:指定宿主目录(家目录),缺省为 /home/用户名
      [root@localhost ~]# useradd -d /opt/nsd02 nsd02
      [root@localhost ~]# ls -ld /opt/nsd02/
      drwx------. 3 nsd02 nsd02 78 6月   8 15:56 /opt/nsd02/
      
      • -G:指定所属的附加组
      [root@localhost ~]# useradd -G nsd2005 nsd03
      [root@localhost ~]# id nsd03
      uid=2007(nsd03) gid=2008(nsd03) 组=2008(nsd03),2007(nsd2005)
      
      • -s:指定用户的登录解释器
      [root@localhost ~]# useradd -s /sbin/nologin nsd04
      [root@localhost ~]# su - nsd04
      This account is currently not available.		//次账户目前不可用
      

3.1.2、修改用户属性

  • usermod 命令

    • 命令格式: usermod [选项]... 用户名

    • 常用的选线:

      • -u:用户id
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01) 组=2005(nsd01)
          
      [root@localhost ~]# usermod -u 3000 nsd01
      [root@localhost ~]# id nsd01
      uid=3000(nsd01) gid=2005(nsd01) 组=2005(nsd01)
      
      • -s:登录解释器
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/sbin/nologin
      
      [root@localhost ~]# usermod -s /bin/bash nsd04
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/bin/bash
      
      • -l:更改用户帐号的登录名称
      [root@localhost ~]# id nsd100
      id: nsd100: no such user
      
      [root@localhost ~]# usermod -l nsd100 nsd01
      
      [root@localhost ~]# id nsd01
      id: nsd01: no such user
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01) 组=2005(nsd01)
      
      • -G:附加组 //重置附加组
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01) 组=2005(nsd01)
      [root@localhost ~]# groupadd test1
      groupadd:“test1”组已存在
      
      [root@localhost ~]# usermod -G test1 nsd100
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01) 组=2005(nsd01),1000(test1)
      
      • -d:家目录路径
      [root@localhost ~]# cd ~nsd100
      [root@localhost nsd01]# pwd
      /home/nsd01
      
      [root@localhost nsd01]# usermod -d /opt/nsd100 nsd100
      
      [root@localhost nsd01]# cd ~nsd100
      -bash: cd: /opt/nsd100: 没有那个文件或目录
      
      [root@localhost nsd01]# mkdir /opt/nsd100
      [root@localhost nsd01]# cd ~nsd100
      [root@localhost nsd100]# pwd
      /opt/nsd100
      [root@localhost nsd100]# ls -ld /opt/nsd100
      drwxr-xr-x. 2 root root 6 6月   8 16:08 /opt/nsd100
      

3.1.3、给用户设置密码

  • passwd 命令
    • 命令格式: passwd [选项]... 用户名
[root@localhost ~]# passwd 				//直接使用passwd可修改当前登录用户的密码
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 取消交互式设置密码
[root@localhost ~]# echo 123456 | passwd --stdin root
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。

3.1.4、删除用户

  • userdel 命令

    • 命令格式: userdel [-r] 用户名

    • 常用选项

      • -r 连同家目录/用户邮件一起删除
      [root@localhost ~]# userdel -r nsd02
      [root@localhost ~]# userdel -r nsd03
      [root@localhost ~]# userdel -r nsd100
      userdel:/opt/nsd100 并不属于 nsd100,所以不会删除
      

3.2、组管理

  • /etc/group,保存组帐号的基本信息

    • 每个组记录一行,以:分割为4个字段
    [root@localhost ~]# groupadd nsd2005
    groupadd:“nsd2005”组已存在
    [root@localhost ~]# grep nsd2005 /etc/group
    nsd2005:x:2007:
    

    组名:组的密码占位符:GID:组的成员列表

3.2.1、创建组

  • groupadd 命令

    • 命令格式: groupadd [选项] 组
    [root@localhost ~]# groupadd nsd2005
    

3.2.2、管理组成员

  • gpasswd 命令

    • 命令格式: gpasswd [选项]... 组名

    • 常用选项

      • -a 添加组成员,一次一个
      [root@localhost ~]# useradd haha
      [root@localhost ~]# gpasswd -a haha nsd2005
      
      • -d 删除组成员,一次一个
      [root@localhost ~]# gpasswd -d haha nsd2005
      正在将用户“haha”从“nsd2005”组中删除
      
      • -M 定义组成员用户列表,可设置多个
        • 覆盖之前,重定义
      [root@localhost ~]# gpasswd -M haha,xixi,hehe nsd2005
      [root@localhost ~]# grep nsd2005 /etc/group
      nsd2005:x:2007:haha,xixi,hehe
      
      • -A 定义组管理员列表,可定义多个
        • 覆盖之前,重定义
      [root@localhost ~]# gpasswd -A www1 nsd2005
      
      [root@localhost ~]# su - haha
      上一次登录:一 6月  8 16:40:36 CST 2020pts/0 上
      [haha@localhost ~]$ gpasswd -d haha nsd2005
      gpasswd:没有权限。
      
      [root@localhost ~]# su - www1
      [www1@localhost ~]$ gpasswd -d hah nsd2005
      正在将用户“hah”从“nsd2005”组中删除
      gpasswd:用户“hah”不是“nsd2005”的成员
      

3.2.3、删除组

  • groupdel 命令

    • 命令格式: groupdel 组名
    • 删除的组不能是用户的基本组
    [root@localhost ~]# groupdel nsd2005
    [root@localhost ~]# grep nsd2005 /etc/group
    

四、权限管理

4.1、基本权限和归属

  • 基本权限:

    • 读 : r (read)
    • 写 : w (write)
    • 执行 : x (excute)
  • 归属关系:

    • 所有者 : u (user)
    • 所属组 : g (group)
    • 其他用户 : o (other)
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2635 6月   5 19:04 /etc/passwd
    权限  硬链接数  属主  属组   大小   最后修改时间   文件名
    
    • -rw-r--r--
      • 最前面的 - 表示 文件类型是普通文件(d,表示目录,l,表示链接文件)
      • 第二到第四个字符 rw- 表示属主(所有者)具有可读可写的权限
      • 第五到第七个字符 r-- 表示属组(所属组)具有可读的权限
      • 第八到第十个字符 r-- 表示其他人具有可读的权限

4.2、修改权限

  • chmod命令
    • 命令格式1:chmod [ugoa] [+-=] 文件
    • 命令格式2: chmod [nnn] 文件
    • 常用选项
      • -R 递归修改权限
    • 权限的8进制数表示
      • r = 4
      • w = 2
      • x = 1
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 6月   8 16:51 1.txt
[root@localhost ~]# chmod a+x 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxr-xr-x. 1 root root 0 6月   8 16:51 1.txt

[root@localhost ~]# chmod 777 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxrwxrwx. 1 root root 0 6月   8 16:51 1.txt

4.3、修改归属关系

  • chown 命令
    • 命令格式1: chown 属主 文件
    • 命令格式2: chown 属主:属组 文件
    • 命令格式3: chown :属组 文件
    • 常用的选项
    • -R : 递归修改归属关系
[root@localhost ~]# useradd test1
[root@localhost ~]# mkdir -p /opt/aa/bb/cc

[root@localhost ~]# chown test1 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/
drwxr-xr-x. 3 test1 root 16 6月   8 16:59 /opt/aa/

[root@localhost ~]# chown -R test1:test1 /opt/aa/
[root@localhost ~]# ls -lR /opt/aa/

4.4、ACL策略

  • 针对个别用户,个别组设置独立的权限

  • setfacl 命令

    • 命令格式1: setfacl [选项] u:用户名:权限 文件

    • 命令格式2: setfacl [选项] g:组名:权限 文件

    • 常用选项

      • -m:定义一条ACL策略
      [root@localhost ~]# useradd dc
      [root@localhost ~]# setfacl -m u:dc:rw /opt/aa/
      
      • -x:清除指定的ACL策略
      [root@localhost ~]# setfacl -x u:dc /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      
      • -b: 清楚所有已设置的ACL策略
      [root@localhost ~]# setfacl -b /opt/aa/
      
      • -R:递归设置ACL策略
      [root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/bb/
      

4.5、附加权限

  • Set GID权限(s权限)

    • 使用方式:chmod g+s 目标目录
      • 占用属组(Group)的 x 位
      • 显示为 s 或 S,取决于属组是否有 x 权限
      • 对目录有效
      • 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
  • Set UID

    • 使用方式:chmod u+s 目标目录
    • 占用属主的x位
      • 显示为s或S,取决于属主是否有x权限(有x权限,就是s。没有就是S)
      • 仅对可执行的程序有意义
      • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
  • 粘滞位,sticky Bit权限(t权限)

    • 使用方式:chmod o+t 目标目录
    • 占用其他人的x位
    • 显示为t或T,取决于其他人是否有x权限(有x权限,就是s。没有就是S)
    • 适用于目录,用来限制用户滥用写入权限、

•Set GID权限
–占用属组(Group)的 x 位
–显示为 s 或 S,取决于属组是否有 x 权限
–对目录有效
–在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份

五、vim编辑器

  • 命令模式
    • 行间跳转: gg 跳转到首行、G跳转到尾行
      • 扩展: ngg (n表示行号) 跳转到指定行
    • 列间跳转: ^ 跳转到行首 、 $ 跳转到行尾
      • 扩展: n| (n表示列号)
    • 复制: yy 复制一行 nyy 复制多行
    • 粘贴: p 复制到光标下面的一行, P 复制到光标的上一行
    • 删除 : dd 删除光标所在行
      • C 删除光标后的内容,与d$相同
      • d^ 删除光标前的内容
    • 文本查找:
      • /word 向后查找字符串
      • n 向下 N 向上
    • 撤销编辑
      • u 撤销最近的一次修改。长摁就相当于多次u,返回到最开始的状态
      • U 撤销对当前行的修改
      • CTRL+R 撤销前一次的撤销操作
    • 保存退出
      • ZZ

  • 末行模式
    • 保存 :w
    • 退出 :q! 放弃更改退出
    • 保存并退出 :wq
    • 另存为 :w /目标文件路径
    • 读入其它文件内容 :r 目标文件
    • 字符串替换
      • 行内替换
        • : s /old/new 替换当前行第一个“old”
        • : s /old/new/g 替换当前行所有的“old”
      • 区域内替换
        • :n,m s/old/new/g 替换n到m行所有的old
        • :% s/old/new/g 替换文件内所有的old
    • 显示行号:
      • :set nu | nonu 显示和不显示行号
      • :set ai|noai 启用和关闭自动缩进

六、补充的命令

  • 通配符

    • “ * ” : 任意多个字符

    • “ ? ” :任意单个字符

    • [a-z] : 连续范围内的一个

    • {a,min,max}:多个不连续的字符串,全匹配

  • less 分屏阅读工具

    • 命令格式:less 文件名…
    • 优势:支持上下键滚动
    [root@localhost ~]# less /etc/passwd     //按q可以退出
    
  • 列出CPU处理器信息

[root@localhost ~]# lscpu
  • 列出内存信息
[root@localhost ~]# cat /proc/meminfo
  • 列出当前系统的主机名称
[root@localhost ~]# hostname
  • 列出网卡信息
[root@localhost ~]# ifconfig
  • 关机:poweroff

  • 重启:reboot

  • 别名: 复杂的命令简单化

    • 查看已设置的别名

    • alias [别名名称]

    • 定义新的别名

    • alias 别名名称= '实际执行的命令行'

    • 取消已设置的别名

    • unalias [别名名称]

  • date,查看/调整系统日期时间

    • date +%F、date +%R
    • date +"%Y-%m-%d %H:%M:%S"
    • date -s "yyyy-mm-dd HH:MM:SS"
[root@localhost ~]# date
2020年 06月 03日 星期三 16:22:01 CST

[root@localhost ~]# date +%Y      #显示年
[root@localhost ~]# date +%m     #显示月
[root@localhost ~]# date +%d      #显示日期

[root@localhost ~]# date +%H      #显示小时
[root@localhost ~]# date +%M      #显示分钟
[root@localhost ~]# date +%S       #显示秒
[root@localhost ~]# date +%F       #显示年-月-日

[root@localhost ~]# date   -s   "2008-10-1    12:10:21"
[root@localhost ~]# date
[root@localhost ~]# date    -s    "2020-6-3      16:28"
2020年 06月 03日 星期三 16:28:00 CST
[root@localhost ~]#