Linux笔记

用户管理

创建指令

通常是useraddadduser

  1. 使用useradd命令:

    1
    sudo useradd 选项 用户名
    • 选项:
      • -c comment 指定一段注释性描述。
      • -d 目录 指定用户主目录(如果已存在)。如果此目录不存在,则同时使用-m选项,可以创建主目录。如:sudo useradd –d /home/sam -m sam
      • -g 用户组 指定用户所属的用户组。
      • -G 用户组,用户组 指定用户所属的附加组。
      • -s Shell文件 指定用户的登录Shell。
      • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  2. 使用adduser命令:

    1
    sudo adduser 用户名

创建用户后,系统会自动为该用户分配一个默认的主目录和用户组。

设置密码

passwd命令:

1
sudo passwd 选项 用户名

选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

修改帐号

usermod命令,其格式如下:

1
usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

删除帐号

userdel命令,其格式如下:

1
userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。

用户组管理

增加用户组

groupadd命令:

1
groupadd 选项 用户组

选项:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

删除用户组

groupdel命令

1
groupdel 用户组

修改用户组

groupmod命令

1
groupmod 选项 用户组

选项:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字

用户在用户组之间切换

newgrp命令

1
newgrp root

(前提条件是root用户组确实是该用户的主组或附加组)这条命令将当前用户切换到root用户组,

权限控制

授予用户sudo权限

用户到sudo用户组:

  • 在某些Linux发行版中,可以将用户添加到sudo用户组来赋予其sudo权限。

  • 使用以下命令将用户添加到sudo用户组:

    1
    sudo usermod -aG sudo 用户名

文件权限

文件权限位包括读取(read)、写入(write)和执行(execute)权限。

  • 读取权限(r)允许用户查看文件内容和属性。
  • 写入权限(w)允许用户修改文件内容和属性。
  • 执行权限(x)允许用户以可执行文件的形式运行文件(例如,脚本或可执行程序)或进入目录。

每个文件都有三组权限位,分别对应文件的所有者、用户组和其他用户

更改文件权限

chmod 命令可以更改文件的权限

数字模式:

可以使用三个八进制数字(0-7)来表示权限位。每个数字代表一个权限组,分别表示所有者、用户组和其他用户的权限。

  • 每个权限位用一个数字表示,对应的值为:
    • r:4 w:2 x:1 -:0
  • 将三个权限位的数字相加,得到一个三位数,例如:
    • rwx:4 + 2 + 1 = 7
    • rw-:4 + 2 + 0 = 6
    • r–:4 + 0 + 0 = 4
    • —:0 + 0 + 0 = 0

符号模式:

可以使用 +-= 符号来添加、移除或设置权限。符号前表示用户u(所有者)、g(用户组)、o(其他用户)、a(所有用户),后表示所操作的权限。

  1. 给予读取权限:
    • 给予所有者读取权限:chmod u+r 文件名
    • 给予用户组读取权限:chmod g+r 文件名
    • 给予其他用户读取权限:chmod o+r 文件名
    • 给予所有用户(包括所有者、用户组和其他用户)读取权限:chmod a+r 文件名
  2. 给予写入权限:
    • 给予所有者写入权限:chmod u+w 文件名
    • 给予用户组写入权限:chmod g+w 文件名
    • 给予其他用户写入权限:chmod o+w 文件名
    • 给予所有用户写入权限:chmod a+w 文件名
  3. 给予执行权限:
    • 给予所有者执行权限:chmod u+x 文件名
    • 给予用户组执行权限:chmod g+x 文件名
    • 给予其他用户执行权限:chmod o+x 文件名
    • 给予所有用户执行权限:chmod a+x 文件名

远程登录

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22

第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。

第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。

密钥连接

1.生成ssh key的文件

windows 用户可以使用 WSL,或使用 Git Bash进行执行命令

ssh-keygen 命令

1
ssh-keygen 参数

可选参数:

  • -t:指定密钥类型。常见的选项包括 rsadsaecdsaed25519。默认为 rsa
  • -b:指定密钥位数。默认为 2048 位。常见的选项包括 1024、2048、4096。
  • -C:添加注释。可以在生成的公钥文件中添加一段注释,用于标识该密钥的用途或所有者等信息。
  • -f:指定生成的密钥文件名。可以自定义密钥文件的名称和路径。
  • -N:设置密码短语(passphrase)。可以为私钥文件设置密码短语,以增加安全性。
  • -q:静默模式。生成密钥时不显示进度或警告信息。
  • -y:从私钥文件中提取公钥。可以使用私钥文件生成对应的公钥文件。
1
2
3
4
5
6
7
XiaoWei@XiaoWEI MINGW64 ~/.ssh
$ ssh-keygen -t rsa -b 4096 -f aliyun_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): //如果不想在之后登录的时候还需要输入密码请直接回车
Enter same passphrase again: //如果不想在之后登录的时候还需要输入密码请直接回车
Your identification has been saved in aliyun_rsa
Your public key has been saved in aliyun_rsa.pub

注意

密钥用于鉴权,请谨慎保管。公钥文件以 .pub 扩展名结尾,可以公开给其他人,而没有 .pub 扩展名的私钥文件不要泄露给任何人!

2.部署公钥到服务器

  1. 创建 SSH 目录和授权文件:在目标服务器上,如果尚未存在,请创建 .ssh 目录,并将其权限设置为 700

    1
    2
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  2. 添加公钥到授权文件:将公钥粘贴到服务器上的 ~/.ssh/authorized_keys 文件中。如果该文件不存在,请创建它,并将其权限设置为 600

    1
    2
    vim ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  3. 保存并退出:保存对 authorized_keys 文件的更改,并退出服务器。

3.更改配置文件

有些Linux可能默认禁止ssl的密钥登录

  1. SSH 配置文件位于 /etc/ssh/sshd_config,可使用以下命令进行配置

    1
    sudo vi /etc/ssh/sshd_config

    如果您只想更改用户级别的 SSH 配置,可以编辑 ~/.ssh/config 文件。

  2. 在配置文件中,常见的 SSH 配置选项:

    • Port:指定 SSH 服务器监听的端口号。
    • PermitRootLogin:允许或禁止使用 root 用户进行 SSH 登录。
    • PasswordAuthentication:允许或禁止使用密码进行身份验证。
    • PubkeyAuthentication:允许或禁止使用公钥进行身份验证。
    • AllowUsersAllowGroups:限制允许登录的用户或组。
    • DenyUsersDenyGroups:禁止登录的用户或组。
    • PrintMotd:显示登录时的欢迎信息。
    • Banner:指定自定义的登录横幅文件。

4.本机ssh的config设置(快捷登录)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Host 名称(自己决定,方便输入记忆的)
HostName 主机名 #172.16.8.152
User root # SSH 连接的用户名
# Port 29172 端口 默认22
# PreferredAuthentications publickey,password # 选项publickey/password/publickey,password 设置首选的身份验证方法,先尝试公钥验证,然后尝试密码验证
# IdentityFile ~/.ssh/work_id_rsa # 使用的身份验证密钥文件路径
# ForwardAgent yes # 启用 SSH 代理转发
# ForwardX11 yes # 启用 X11 转发
# Compression yes # 启用连接压缩
# StrictHostKeyChecking yes # 设置主机密钥检查级别为严格检查
# LogLevel VERBOSE # 设置 SSH 客户端的日志级别为详细模式
# ServerAliveInterval 60 # 设置 SSH 连接的保活机制,每60秒发送保活消息
# ServerAliveCountMax 3 # 设置 SSH 连接的保活机制,最多发送3个保活消息
# ProxyJump jumpbox # 使用跳板机(代理主机)访问目标主机

软件安装

  1. Ubuntu/Debian:

    • 使用APT包管理器:
      • 安装软件:sudo apt-get install 软件名称
      • 卸载软件:sudo apt-get remove 软件名称
      • 更新软件包列表:sudo apt-get update
      • 升级已安装的软件包:sudo apt-get upgrade
  2. CentOS/RHEL/Fedora:

    • 使用YUM包管理器:
      • 安装软件:sudo yum install 软件名称
      • 卸载软件:sudo yum remove 软件名称
      • 更新软件包列表:sudo yum update
      • 升级已安装的软件包:sudo yum upgrade
  3. Alpine Linux:

    • 使用apk包管理器:

      • 安装软件:apk add 软件名称

      • 卸载软件:apk del 软件名称

      • 更新软件包列表:apk update

      • 升级已安装的软件包:apk upgrade

常用命令

前置知识

1.目录符号

/ 表示从 根目录

~表示从 家目录(即/home/用户名,root用户为/root)

. 代表当前目录

.. 代表上一级目录

2.绝对目录与相对目录

相对路径 在输入路径时,使用.或者..,表示相对 当前目录 所在的目录位置

绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置,特点:需要写入完整地址

3.>>>重定向 命令

功能:将命令执行结果重定向到一个文件,将本应显示在终端上的内容 输出或追加 到指定文件中

> 表示输出,会覆盖文件原有的内容

>> 表示追加,会将内容追加到已有文件的末尾

4.|管道符

  • Linux 允许将 一个命令的输出 可以通过管道| 做为 另一个命令的输入
  • 这里 | 的左右分为两端, 左端塞东西(写),右端取东西(读)

pwd 命令

对应单词:print working directory

功能:打印当前工作目录

ls 命令

对应单词:list

功能:列出目录的内容或者使用通配符列出文件名匹配的文件

格式:

1
ls [参数]

可选参数

-a 显示指定目录下所有目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小

注意:以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示

find 命令

对应单词:find

功能:指定目录及其子目录下查找文件和目录

格式

1
find [路径] [匹配条件] [动作]

常用的匹配条件:

可选匹配条件 作用
-name 按文件名查找,支持使用通配符 *?
-type 按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size[+-] 按文件大小查找,支持使用 +- 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
-mtime 按修改时间查找,支持使用 +- 表示在指定天数前或后,days 是一个整数表示天数。
-user 按文件所有者查找。
-group 按文件所属组查找。

cd 命令

对应单词:change directory

功能:更改当前的工作目录

格式:

1
cd 目录

cd搭配符号

命令 含义
cd /cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd – 可以在最近两次工作目录之间来回切换

touch命令

功能:

  • 如果文件不存在,可以创建一个空白文件
  • 如果文件已经存在,可以修改文件的末次修改日期

mkdir命令

对应单词:make directory

功能:创建一个新的目录

选项 含义
-p 创建多级目录
需要创建一个目录的同时,也需要创建其上级目录(如果上级目录不存在)

注意:新建目录的名称 不能与当前目录中 已有的目录同名

rm命令

对应单词:remove

功能:删除文件或目录

可选参数 含义
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数

cp命令

对应单词:copy

功能:复制文件或者目录

可选参数 含义
-i 覆盖文件前提示
-r 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

mv命令

对应单词:move

功能:移动文件或者目录/文件或者目录重命名

可选参数 含义
-i 覆盖文件前提示

cat命令

对应单词: concatenate

功能:查看文件内容、创建文件、文件合并、追加文件内容等功能.,适合查看内容较少的文本文件

可选参数 含义
-b 对非空输出行编号
-n 对输出的所有行编号

more命令

对应单词: more

功能: 分屏显示文件内容

使用 more 的操作键:

操作键 功能
空格键 显示手册页的下一屏
Enter 键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索 word 字符串

echo命令

对应单词: more

功能: 在终端中显示参数指定的文字,通常会和重定向联合使用

进程命令

ps命令:

英文: process status

作用:显示当前正在运行的进程的快照。

命令 作用
ps aux 查看进程的详细状况
ps -ef 显示所有进程的完整信息
ps 进程代号 显示特定进程代号的详细信息
top
kill [-9] 进程代号 终止指定代号的进程, -9 表示强行终止

ps 默认只会显示当前用户通过终端启动的应用程序 ps 选项说明

选项 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程

top命令:

作用: 动态显示运行中的进程并且可以按 CPU 使用率、内存使用率等对进程进行排序

输入 q退出 top 命令界面

kill命令:

作用: 向进程发送信号以终止或操作进程

常见用法

命令 作用
kill 进程代号 向指定进程代号的进程发送默认的终止信号
kill -9 进程代号 向指定进程代号的进程发送强制终止信号

提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃

pgrep命令:

作用: 向进程发送信号以终止或操作进程

1
pgrep [选项] <进程名称>

其中,<进程名称> 是要匹配的进程名称或模式。可以使用通配符进行模糊匹配

可选选项 说明
-u <用户名> 根据用户名过滤进程。
-n 仅返回最新的匹配进程的进程 ID。
-x 精确匹配进程名称,不进行模糊匹配。
-d <分隔符> 指定输出的分隔符,默认为换行符。

参考文章