Linux学习笔记

Linux学习

103 min read

Linux的介绍

Linux之父:Linux Tovalds Git创作者,世界著名黑客
Linux主要的发行版:Ubuntu(乌班图),RedHat(红帽),Centos、Debain(蝶变),Fedora、SuSE、OpenSUSE(示意图)
Linux内核网站:https://www.kernel.org/

安装Centos7.6

这里的centos7镜像文件我提供的是国内的阿里云镜像:
打开VMware16 PRO软件,创建一个新的虚拟机
选择典型然后下一步
选择稍后安装操作系统
操作系统选择Linux系统,版本选择红帽的centos 7
这里可以改一下名称和位置
分配的内存空间按照默认
选择自定义硬件,来给我们的虚拟机分配内存空间
这里就按照推荐的2GB内存就可以
在这里可以分配虚拟机设置cpu的数量和核数
那么应该怎么看自己的母机的信息呢?
打开任务管理器
打开资源监视器
可以看到我只有一个cpu和12个核0~11
这里的光驱先不用管
这里网络适配器先按照默认,后面展示
后面几项默认就行,点击关闭。最后点击完成
挂载centos镜像文件
然后开启虚拟机
选择第一个回车安装
这里可以选择语言
在这里软件安装,默认是最小安装是不带界面的,后面为了方便演示,这里点击软件选择
选择GNOMF界面
这里选择安装位置为系统分区
这里选择我要配置分区
我们这里一般为Linux分3个区,boot分区(也叫引导分区),交换分区(swap),根分区(root)。boot分区一般给1gb就行,交换分区和你分配的内存大小有关,刚才分配的2GB内存,这里就分2GB就行。剩下的给根分区。
点击加号添加一个boot分区
如下图
将这里的文件系统更改为ext4
同样的我们创建一个swap分区,分配2GB内存
改一下设备类型
最后是根分区,将剩余的17GB全部给它
改一下设备类型和文件系统
最后点击完成
点击接受更改
那么什么是KDMP呢?
KDMP是一个内核崩溃转储机制,它会在系统崩溃时将系统信息保存下来,但是会占用一定内存,如果在真正项目中药勾上,这里是为了演示,为了节省内存就拿掉了
接下来是网络和主机名把它打开,这里更换一下主机名
最后一个安全策略可以把它关掉,主要是设置用户密码。最后点击开始安装
这里的root密码可以设置一下
这里我们最好创建一个用户,我这里创建一个Tom
等待安装完成后选择重启
在这里要同意许可证
进入系统后,选择汉语--》前进
输入这里选择拼音
隐私关闭位置服务
这样就完成了
怎么设置系统的分辨率呢?
选择这里的设备
可以调整分辨率

Linux网络连接的三种方式

  • 桥接模式:虚拟机直接连接路由器,与物理机处于对等地位。
真实主机中安装的虚拟主机,需要和外界主机进行通讯的时候,数据需要通过真实主机的网卡进行传输,但是虚拟主机内核无法对真实主机的网卡进行控制,一般情况下需要将虚拟主机先将数据包发送给真实主机的内核,再由真实主机内核将该数据通过真实物理网卡发送出去,该过程成为NAT(网络地址转换),虽然可以实现该功能,但是数据传数度较慢。
可以由真实主机的内核虚拟出来一个接口br0,同时这个也是一个对外的虚拟网卡设备,通过该接口可以将虚拟主机网卡和真实主机网卡直接连接起来,进行正常的数据通讯,提升数据传输效率。该过程就是桥接。
VMnet0:用于虚拟桥接网络下的虚拟交换机;
VMnet1:用于虚拟Host-Only网络下的虚拟交换机;
VMnet8:用于虚拟NAT网络下的虚拟交换机。
VMware NetworkAdepter VMnet1:Host用于与Host-Only虚拟网络进行通信的虚拟网卡;
VMware NetworkAdepter VMnet8:Host用于与NAT虚拟网络进行通信的虚拟网卡。
  • NAT模式:虚拟机借助物理机进行路由器联网。缺点是由于需要地址转换,可能会增加交换延迟。
linux NAT网络原理 :
首先我们查看虚拟机上linux操作系统的地址:
接下来我们再看看我们vmnet8的ip地址和以太网的ip地址: 在windows操作系统里面使用ipconfig命令: vmnet8的ip:
以太网的ip:
接下来我们来互相ping一下,看能否ping通。
**在windows操作系统里面ping linux的ip地址: **
C:\Users\kriss>ping 192.168.10.137
正在 Ping 192.168.10.137 具有 32 字节的数据:
来自 192.168.10.137 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.137 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.137 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.10.137 的回复: 字节=32 时间<1ms TTL=64
192.168.10.137 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
我们发现可以ping通过,接下来我们在linux操作系统里面ping wmnet8的ip地址:
[root@xq100 ~]# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.120 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.188 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.162 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=0.141 ms
64 bytes from 192.168.10.1: icmp_seq=5 ttl=64 time=0.175 ms
如果ping不同,就是windows防火墙的问题,我们关闭防火墙即可。
** linux网络环境配置(固定ip的方式) **
默认情况下,我们linux操作系统ip获取的方式是自动获取的方式,我们可以查看自己linux操作系统, 看看ip的获取方式:
这种自动获取ip的方式不需要任何设置就可以实现,但是非常容易造成ip冲突,而且在公司里面,我们 一般都会将linux操作系统的ip地址固定下来,所以接下来我们需要手动固定linux操作系统的ip地址。 第一步 编辑我们linux的网卡文件 这个网卡文件在/etc/sysconfig/network-scripts/ifcfg-ens33 打开这个文件,进行编辑 编辑网卡文件ifcfg-enss33
  • 仅主机模式:不能联网,只能进行ping通虚拟机。

Red Hat Enterprise Linux 9

修改密码

没忘密码

sudo passwd root

忘记密码

重新启动RHEL系统,再看到GRUB菜单后按键盘‘e’进行中断
在命令行按ctrl+e转到行尾,添加rd.break,完成后按ctrl+x运行修改后的内核程序,等待进入系统的紧急救援模式。
输入命令mount发现根为ro= readonly
mounteeee
重新挂载
mount -o remount,rw /sysroot/
改变根
chroot /sysroot/
输入
passwd
修改root密码,注意两次输入不显示
输入touch /.autorelabel启动SELinux重新标记
最后输入exit,exit
重启后可以使用修改过的密码进行登录

Linux目录结构

  • /bin :是Binary的缩写,这个目录存放着常用的命令,包括普通程序,系统程序
  • /:根目录
  • /boot:存放Linux内核和其他一些启动有关的文件
  • /tmp:一般只有启动时产生的临时文件才会存放在哪里
  • /mnt:用来存放安装其他设备的子目录
  • /lib:启动时所用到的库文件都放在这个目录下,内核模块放在lib/modules
  • /proc:该目录在磁盘上是不存在的,里面的文件都是关于系统的状态
  • /etc:存放系统配置文件
  • /usr:除上述外的所有文件

vmware Tools的问题

  1. 提示sudo: ./vmware-install.pl找不到命令
//先使用cd命令或者直接在包含vmware-install.pl的文件夹中打开命令行窗口
sudo apt-get install perl  //这是安装perl,根据提示输入yes 或 no ,然后一路狂按Enter键
sudo perl vmware-install.pl //安装好perl,就能用perl来安装VMware Tools了,安装好界面就能全屏了
  1. Linux安装vmware Tools后不能复制粘贴
sudo apt-get upgrade  //这一步是更新你的软件下载库,能确保你下载最新版的软件
sudo apt-get install open-vm-tools-desktop -y  //这一步就是直接在VMware Tools官网上直接下载最新版本的,一步到位,下载后直接安装好
sudo reboot           //这一步是重启,重启后就能使用了
  1. 卸载VMware Tools
sudo apt-get autoremove open-vm-tools  //简单直接,一步到位

Ubuntu改软件源

软件源路径
cd /etc/apt/source.list
提权打开source.list修改软件源
sudo gedit source.list

1. 更新成清华源

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

源碼

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

预发布软件源,不建议启用

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

Canonical 合作伙伴和附加

deb http://archive.canonical.com/ubuntu/ xenial partner

deb http://extras.ubuntu.com/ubuntu/ xenial main

2. 更新成阿里云源

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

3. 其它源列表

4. 更新成本地源

1、创建挂载点:mkdir -p /mnt/cdrom
2、临时挂载ISO镜像:mount /dev/cdrom /mnt/cdrom
 永久挂载ISO镜像:echo "/dev/cdrom /mnt/cdrom iso9660 defaults 0 0" >> /etc/fstab
3、备份与修改软件源:将/etc/apt/sources.list文件先备份,再将文件中deb在线apt源注释掉;
4、添加本地软件源:1)命令方式:sudo apt-cdrom -m -d=/mnt/cdrom add
 或者 2)直接修改sources.list文件:deb file:///mnt/cdrom xenial main
5、更新软件:sudo apt-get clean all & sudo apt-get update
【PPA源】:
Ubuntu中增加PPA源:add-apt-repository ppa:用户名/ppa名
【多软件版本时,更新默认版本】(如下jdk):

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_05/bin/java 300

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_05/bin/javac 300

update-alternatives –config java #系统会列出系统中所有的jdk版本进行选择。

【常用命令】:
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get source package 下载该包的源代码
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-cache depends package 了解使用该包依赖那些包
sudo apt-mark hold/unhold 软件名 #屏蔽/开启更新某个软件
ls -al ~/ 查询所有详细信息

Centos换源

centos 7换源

  1. 安装wget
yum -y install wget
  1. 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
下载源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  1. 生成缓存
yum makecache

centos8换源

  1. 进入yum.repos.d目录
cd /etc/yum.repos.d/
  1. 创建文件夹并将源文件备份为repo.bak
mkdir backup && mv *repo backup/
  1. 下载国内yum源文件
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
  1. 更新yum源地址
sed -i -e"s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g " /etc/yum.repos.d/CentOS-*
sed -i -e "s|releasever|releasever-stream|g" /etc/yum.repos.d/CentOS-*
  1. 生成缓存
yum clean all && yum makecache

Ubuntu设置共享文件夹

  1. 更新最新的VMware组件
编辑->首选项->更新->立即下载所有组件
  1. 安装VMware-tools
虚拟机->安装VMware-tools
安装后执行脚本文件
sudo vmware-install.pl
  1. 开启共享文件夹
虚拟机->设置->选项->共享文件夹->总是启用
添加共享文件夹

共享文件夹访问

如果顺利的化可以在mnt/fgfs/目录下查看到共享文件

无共享文件夹的解决方法

  1. 查看共享文件夹是否创建成功
vmware-hgfsclient 
若创建成功,则会显示出已经创建的文件夹名称
  1. 手动挂载共享文件夹
// 创建挂载目录
sudo mkdir /mnt/hgfs/d		
// 挂载	
sudo mount -t fuse.vmhgfs-fuse .host:/D /mnt/hgfs/d/ -o allow_other	
// 卸载
sudo umount -a fuse.vmhgfs-fuse .host:/D /mnt/hgfs/d/
<span style="color: #DF2A3F; font-weight: bold;">.host:/D</span>:共享名称,<span style="color: #DF2A3F; font-weight: bold;">vmware-hgfsclient</span>查看得到
<span style="color: #DF2A3F; font-weight: bold;">/mnt/hgfs/d/</span>:挂载点
  1. <font style={{color: 'rgba(0, 0, 0, 0.75)'}}>自动挂载共享文件夹
    系统启动后自动挂载文件夹
sudo vim /etc/fstab
// 在文件最后加入
.host:/D        /mnt/hgfs/d/    fuse.vmhgfs-fuse        allow_other     0       0

改变Linux默认方式

  • ctrl+alt+F1centos进入图形化界面
  • ctrl+alt+F2centos进入命令行界面
通过systemctl get-default命令,获取当前模式
  1. 修改默认启动命令模式
systemctl set-default multi-user.target
reboot
  1. 修改默认启动图形模式
systemctl set-default multi-user.target
reboot

没有安装图形化界面

yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

查看命令文档

  • 通过man命令查看
例如查看ls的帮助手册,man ls
  • 通过info命令查看
例如查看ls的帮助手册,info ls.查看info自身手册pinfo

Linux修改用户密码

修改密码使用passwd命令,用root用户运行passwd,passwd user_name可以设置任何用户的密码,普通用户运行passwd只能修改自己的密码
例:
[root@localhost ~]# passwd hadoop ##修改hadoop用户密码
Changing password for user hadoop.
New password: ##输入新密码
Retype new password: ##再次确认新密码
passwd: all authentication tokens updated successfully.

passwd 常用参数如下:

<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-k ##keep-tokens keep non-expired authentication tokens 注:保留即将过期的用户在期满后能仍能使用;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-d ##delete delete the password for the named account (root only) 注:删除用户密码,仅能以root权限操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-l ##lock lock the named account (root only) 注:锁住用户无权更改其密码,仅能通过root权限操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-u ##unlock unlock the named account (root only) 注:解除锁定;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-f ##force force operation 注:强制操作;仅root权限才能操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-x ##maximum=DAYS maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能root权限操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-n ##minimum=DAYS minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能root权限操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-w ##warning=DAYS 注:在距多少天提醒用户修改密码;仅能root权限操作;
<font style={{color: 'rgb(0, 0, 0)', backgroundColor: 'rgb(254, 254, 242)'}}>-i ##inactive=DAYS 注:在密码过期后多少天,用户被禁掉,仅能以root操作;
-S ##status report password status on the named account (root only) 注:查询用户的密码状态,仅能root用户操作;
  1. 让hadoop不能更改密码
passwd -l hadhoop        #锁定hadhoop用户
  1. 清除一个用户的密码,使用参数d
passwd -d hadhoop

Linux文件管理

在Linux系统上,任何软件和I/O设备都被视为文件
  • Linux中的文件区分大小写
  • Linux中的文件名最大支持256个字符,分别用AZ,az,和0~9等字符来命名
  • Linux没有盘符的概念,只有目录,不同的磁盘分区是被挂载在不同的目录下
  • Linux的文件没有拓展名

Linux下的5种文件类型

  • 普通文件,目录文件,链接文件,设备文件,管道文件
系统在建立每一个目录时,都会自动为它设定两个目录文件。
  • 一个是“.”,代表目录自己
  • 一个是“..”,代表目录的父目录

用户主目录

  • 用户可以通过“~”来引用自己的主目录
例:user1用户的主目录位于/home/user1
“~/tool”和“/home/user1/tool”相同
通常用户的主目录位于/home下,root用户比较特殊,其主目录为/root

显示文件命令

cat命令

用来显示文件,可依次读取其后所指文件的内容并将其输出到标准设备上。

more命令

用于一次显示一屏文本,并在终端底部打印出“more”,系统还将同时显示出以显示的内容文本占全部文本的百分比。,enter和空格可继续展示,按q键退出

less命令

和more命令的功能基本相同,也用于按页显示文件,不同的是more只能向后翻阅文件,less命令既可以向后翻页也可以向前翻页

head命令

只显示或标准输入头的几行内容
head -number filename

tail命令

和head命令的功能对应,查看文件的尾部
tail [option] filename

文件内容查找命令

grep、egrep、fgrep命令

  • grep一次只能搜索一个指定的模式
  • egrep命令检索拓展的正则表达式(包括命令组和可选项)
  • fgrep命令检索固定字符串,但并不识别正则表达式
例:
grep 'txt file' stdc.h   ##表示在文件stdc.h中搜索字符串'txt file'
grep data *   ##表示在当前目录所有文件下搜索data字符串的行
grep stdio.h *.c    ##表示在c程序中搜索包含stdio.h头文件的所有文件

文件查找命令

find命令

find [option] filename

locate命令

用于查找文件币find命令的搜索速度快,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db
locate [option] filename

文件处理命令

sort命令

对文件中的各行进行排序。该命令逐行的对文件内容进行排序,如果两行的首字母相同,那该命令将会继续比较这两行的下一个字符

文件内容处理命令

wc命令

统计给定文件中的字节数,字数,行数。如果没有给出文件名,则从标准输入读取
  • wc同时也给出所有指定文件的总统计数
  • 字是由空格字符区分开的最大字符串
wc [option] filename
  1. -c:统计字节数
  2. -l:统计行数
  3. -w:统计字数

文件比较命令

diff命令

逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示两个文件中所有不同的行,不要求事先对文件进行排序
常用格式:
  • diff [option] file1 file2
  • diff [option] dir1 dir2

文件的复制、移动和删除命令

cp命令

将给出的文件或目录复制到另一个文件中或目录中
cp [option] [src_file|src_dir] [dst_fiel|dst_dir]

mv命令

为文件或目录改名或将文件有一个目录移入另一个目录中。
  • 当第二个参数是文件时,mv命令完成文件的重命名
  • 当第二个参数是已存在的目录时,mv将个参数指定的源文件均移到目标目录

rm命令

删除一个目录中的一个文件或多个文件,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除链接,原有文件均保持不变。
rm [option] files | dirs

文件链接命令

ln命令

在文件之间创建链接。这种操作实际是给系统中已有的某一个文件指定另一个可用于访问它的名称。对于这个新的文件名,可以为其指定不同的访问权限,以控制对信息的共享和安全性的问题。
ln [option] file link

目录的创建和删除命令

mkdir命令

创建目录
mkdir [option] [dirname]
  • -m:对新建目录设置存取权限
  • -p:可以是一个路径名称。若路径中的某些目录不存在,系统将自动创建好不存在的目录。

rmdir命令

删除目录
rmdir [option] [dirname]
  • -p:递归删除目录,当其子目录删除后,若其父目录为空时,也被一同删除。

改变工作目录、显示路径及显示内容的命令

pwd命令

显示当前工作目录的路径

ls命令

列出目录的内容

改变文件/目录的访问权限

每个文件或目录的访问权限都有三组,每组3位,分别为:
  • 文件属的读,写和执行权限
  • 与属主同组的用户的读,写和执行权限
  • 系统中的其他用户的读写和执行权限。
b:代表块设备

chmod命令

主用于改变文件或目录的访问权限
两种用法:
  • 包含字母和操作符表达式的文字设定法。
  • 包含数字的数字设定法。
  1. 文字设置法
chmod [who] [+|-|=] [mode] filename
who:
  • u:用户
  • g:同组用户
  • o:其他用户
  • a:所有用户,系统默认
+-=:
  • +:表示增加某个权限
  • -:表示取消某个权限
  • =:表示授予给定权限并取消其他所有权限
例:
  1. chmod a+x sort表示给sort文件的所有用户增加执行权限
  2. chmod ug+w,o-x text表示给text文件的所有执行者和同组用户添加写权限,其他用户取消执行权限
  3. chmod u+s sniffer 使执行该文件的用户暂时拥有该文件拥有者的权限
  4. 数字设置法
  • 数字设置法用3个二进制位来表示文件权限,设定好后将其换算为十进制数。
    • 第一位表示r权限
    • 第二位表示w权限
    • 第三位表示x权限
  • 也可以用十进制数计算,0表示没有权限,1表示x权限,2表示w权限,4表示r权限,然后将其相加。
数字设定法
chmod 644 mm.txt
表示给mm.txt文件的所有用户增加执行权限
chmod 750 fib.c
表示给text文件的所有者和同组用户添加写权限,其他用户取消执行权限。

umask命令

用于显示和设置用户创建文件的默认权限
  • umask:不带参数系统会直接输出当前umask的值
  • umask nnn:带参数设置文件的默认值,n是0~7之间的整数
umask设置的是权限的补码,而chmod设置的是文件权限码
对文件而言,文件的最高设定值为6(不允许初始创建就有执行权限)目录为7
可以将最高可选值减去umask中的值即可得到默认文件的创建权限

chown命令

用来更改某个文件或目录的属主和属组
chown [option] [user | group] filename
  • 指定用户可以是用户名或用户ID
  • 指定用户组可以是组名或组ID
  • 可以指定多个文件,以空格分隔,支持通配符。
选项含义:
  • -R:递归地改变指定目录及其下面的所有子目录和文件的拥有者。
  • -V:显示chown命令所做的工作。

文件目录的打包和压缩

文件压缩-gzip压缩

gzip命令

gizp压缩利用Lempel-Ziv(LZ77)算法,相关命令有:gzip(压缩),gunzip(解压缩),zcat(解压并输出到标准输出设备)
使用gzip需要以下几点:
  1. 默认gzip压缩文件会以.gz结尾,同时删除原始文件
  2. 若不希望使用.gz后缀,则需要用-S覆盖
  3. gunzip -c和zcat功能相同

bzip2命令

与之相关的命令有bzip2(压缩),bunzip2(解压缩),bzcat(解压并输出到标准输出设备),bz2recover(从损坏的bzip2文件中恢复数据)
例:
  1. 压缩hello.c,压缩后文件以“.bz2”结尾,原始文件以删除。
bzip2 hello.c
  1. 解压缩hello.c.bz2并输出到std,bzcat不会删除原始文件
bzcat hello.c.bz2
  1. 使用-k参数的bunzip2,不删除原始文件hello.c.bz2
bunzip2 -k hello.c.bz2

文件归档-tar压缩

tar命令

tar是一个归档程序,就是说tar可以把许多文件打包成为一个归档文件或者把它们写入备份设备,例如一个磁带驱动器。
  • tar命令创建的归档文件可以完整地保存文件及目录的权限信息
  1. 创建tar包
    1. 创建归档可以使用-cf参数,如果需要显示日志,可以使用-cvf参数。
例:将/etc目录归档为当前目录下etc.tar文件命令如下:
tar -cf etc.tar /etc
  1. 查看tar包内容
    1. 查看归档可以使用-tf参数
例:查看etc.tar文件命令如下:
tar -tf etc.tar | more
  1. 还原tar包
    1. 还原归档可以使用-xf参数,如果需要显示日志,可以使用-xvf参数
例:将etc.tar文件解包命令如下:
tar -xf etc.tar
  1. 直接在tar包中使用压缩选项
    1. 可以直接在tar命令中调用压缩功能,加入相应参数即可。
例如:
  • 将hello.c和hello.c.bz2打包后用gzip压缩并输出位hello.tar.gz,显示执行过程,可以使用-czvf参数。
tar -czvf hello.tar.gz hello.c hello.c.bz2
  • 显示hello.tar.gz中内容命令如下,可用-tzf参数
tar -tzf hello.tar.gz
  • 直接解包hello.tar.gz并显示执行过程,命令如下,可以用-xzvf参数
tar -xzvf hello.tar.gz

zip命令

与zip相关的指令主要有
  • zip
  • unzip
例:
  1. 压缩当前目录下的etc.tar包和hello.bak目录及其下的所有文件,命令如下:
zip -r compress.zip etc.tar hello.bak

unzip命令

  1. 将compress.ziph中除etc.tar外的内容解压到"/tmp"目录的命令如下:
unzip compress.zip -d /tmp -x etc.tar

用户和用户组管理

用户和账号文件

passwd文件

/etc/passwd文件时UNIX安全的关键文件之一
该文件用于用户的登录时校验用户的登录名,加密的口令数据项、用户ID(UID)、默认的用户组ID(GID)、用户信息、用户主目录以及登录后使用的shell
  • 该文件的每一行保存一个用户的资料,而用户数据域以冒号分隔
passwd文件的每一行格式:
username:password:uid:gid:userinfo:home:shell
其中:
username:登录名
password:加密的用户口令
uid:用户id
gid:用户组id
home:分配给用户的主目录
shell:用户登陆后执行的shell
  • 用户的UID是独一无二的,其他用户不应当有相同的UID数值,只有UID等于0时可以除外
  • 任何UID值为0的用户都有root用户访问权限
    • 管理员:UID为0
    • 系统用户:UID为1~999
    • 普通用户UID从1000开始,是由管理员创建用于日常工作的用户。
id   #查询用户的基本信息
id  + 用户名

用户影子文件

shadow文件

shadow(影子)文件存放的是passwd文件的加密口令,存放在/etc/shadow
格式如下:
username:password:lastchg:min:max:warn:inactive:expire:flag
  • username:用户登录名
  • password:加密的用户口令
  • lastchg:表示从1970年1月1日起到上次修改口令所经历的天数
  • min:表示两次修改口令之间至少经过的天数
  • max:表示口令有效的最大天数,如果是99999则表示永不过期
  • warn:表示口令过期前多少天内系统向用户发出警告(默认一周)
  • inactive:表示口令过期多少天后账号会被锁定
  • expire:表示从1970年1月1日起到多少天后账号失效
  • flag:保留域,暂未使用

用户组账号文件

group文件

用户组文件存放的是用户组信息,存放在/etc/group下
格式如下:
group_name:group_password:group_id:group_members
含义
group_name用户组名
group_password加密后的用户组口令
group_id用户组ID(GID)
group_members以逗号分隔的成员用户清单

使用命令行方式管理用户和组

使用useradd命令添加用户

**主要功能:**添加用户或更改新创建用户的默认信息
useradd [option] username
  1. -c comment:描述新用户账号
  2. -d home_dir:设置用户主目录
  3. -D: 创建新用户后保存为新账号设置的默认信息
  4. -e:账号的到期时间,格式为YYYY-MM-DD
  5. -f:设置口令失效时间。值为0时,口令失效后账号立即失效,为-1时,该选项失效
  6. -g:设置基本组
  7. -k:设置框架目录,该目录包含用户的初始配置信息,创建用户时该目录下的文件都被复制到用户的主目录。
  8. -m:自动床用户主目录。
  9. -M:不创建用户主目录。
  10. -r:允许保留的系统账号使用用户ID创建一个新账号。
  11. -s:设定用户使用登录的shell类型
  12. -u:设置用户ID

passwd命令

为每一个新用户增加设置口令。
常用格式:
passwd username
  • 不带参数可以修改自己的密码

使用usermod命令修改用户信息

usermod命令

修改使用者的账户
常用形式:usermod [option] username
  • 该命令使用参数和useradd一致
  • usermod不允许改变正在系统中使用的用户账户
例:
//将用户jeffery的组改为super,UID更改为5600
# usermod -g super -u 5600 jeffery

//将用户jone的用户名改为honey-jone,登陆shell改为/bin/ash,用户描述改为honey-jone
# usermod -l honey-jone -s /bin/ash -c "honey-jone" jone

userdel命令

主要功能:删除系统中的用户信息
常用格式:userdel [option] username
  • 删除账号时,非用户主目录下的用户文件并不会删除
选项含义:
  1. -r:删除账号时,连同账号主目录一起删除
例:
//删除用户manager,并用find命令删除该用户主目录下的文件
# userdel manager
# find / -user manager -exec rm{} \

使用groupadd命令添加用户组

groupadd命令

常用形式:groupadd [option] groupname
选项含义:
  1. -g:设置组ID,除非使用-o参数,否则值必须唯一,值不可为负值
  2. -o:和-g配合使用,可以设定不唯一的组ID
  3. -r:磁参数用来建立系统账号
  4. -e:账号到期时间,格式为YYYY-MM-DD
  5. -f:若新增一个已存在的用户组,那系统出现错误信息结束命令。
例:
//创建一个GID为5400,组名为testbed的用户组
# groupadd -g 5400 tested

//创建一个GID为5401,组名为testbed的用户组,由于组名不唯一,创建失败
# groupadd -g 5401 testbed

//创建一个GID为5400,组名为supersun的用户组,由于GID不唯一,创建失败
# group -g 5400 supersun

groupmod命令

修改用户组信息
常用格式:groupmod [option] groupname
选项含义:
  1. -g:设置组ID,除非使用-o参数,否则该值必须唯一,值不可为负数
  2. -o:和-g配合使用,可以设定不唯一的组ID
  3. -n:更改组名
例:
//将组testbed的名称改为testbed-new
# groupmod -n tested-new testbed

//将testbed-new的GID改为5404
# groupmod -g 5404 testbed-new

//将组testbed-new的GID改为5405,名称改为testbed-old
# group -g 5405 -n testbed-old testbed-new

groupdel命令

删除用户组信息
常用格式:groupdel groupname
  • 使用该命令时必须确认待删除的用户组存在
  • 如果有任何一个组群的用户在系统中使用,并且要删除该用户组的主分组的时候,则不能移除该组,必须先删除该用户后才能删除该组。

去掉文件中所有的注释

例如: 要删除 vsftpd.conf 文件中的所有注释(以 # 开头的行),可以使用 sed 命令,这是一种非常有效的文本处理工具。可以通过以下步骤来完成此任务:

命令解释

  1. **sed**** 命令**:用于编辑文件中的文本。
  2. **/^#/d**:这是一个 sed 删除命令,用于匹配以 # 开头的行并删除它们。
  3. **-i**** 选项**:表示直接修改文件,而不是将结果输出到终端。
sed -i '/^\s*#/d' /etc/vsftpd/vsftpd.conf

创建文件的权限

创建file的默认权限是644,创建dir的默认权限是755
默认权限-umask值=实际权限
umask:权限掩码
file默认权限:666
dir默认权限:777

相关文章推荐

基于标签和内容相似度为您推荐

推荐 #1
2024/12/19

欢迎来到我的博客

我想要传达的技术和理念

3 min read
阅读
推荐 #2
2026/2/21

React 学习笔记

React 是一个用于构建 Web 和原生交互界面的库

1 min read
阅读
推荐 #3
2025/12/13

Docker实战攻略

Docker的实战教程。涵盖了Docker的所有常用功能与命令

56 min read
阅读

💡 推荐算法基于标签匹配度、标题相似性和内容相关性智能计算

评论

觉得这篇文章有用?

分享给更多需要的朋友,让知识传递下去! ❤️

Linux学习笔记 | Niutr's Blog | Niutr's Blog