Linux命令——3.网络与用户
文章目录
- 一、网络
- 1.网络测试与诊断
- 2.网络接口配置
- 3.无线网络配置
- 4.防火墙与网络管理
- 6.防火墙管理
- 1)`firewalld`命令
- 2)`iptables`命令
- 二、用户和群组
- 1.管理员模式
- 2.用户账户管理
- 1)`useradd`创建
- 2)`usermod`修改
- 3)`userdel` 删除
- 4)常用命令
- (1)切换用户
- (2)查看所有用户
- 3.用户组管理
- 4.权限管理
- 1)权限标识的结构
- (1)权限符号
- (2)权限进制表示
- (3)权限组
- 2)chmod 命令修改权限
- (1)数字方式
- (2)字母方式
- (3)其他用法
- 3)特殊权限命令
一、网络
1.网络测试与诊断
指令 | 解析 |
---|---|
ping ip地址 | 测试网络是否正常连接 |
traceroute ip地址 | 跟踪数据包到达目的地的路径 |
netstat -rn | 显示路由表信息 |
nslookup domain | 查询域名的DNS信息 |
dig domain | 查询域名信息和解析 |
2.网络接口配置
指令 | 解析 |
---|---|
ifconfig | 显示或配置网络接口(较旧,已被 ip 命令替代) |
ifconfig eth0 | 显示eth0网卡的配置 |
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | 配置eth0网卡的IP地址和子网掩码 |
ifdown eth0 | 禁用eth0网络设备 |
ifup eth0 | 启用eth0网络设备 |
ip addr show | 显示所有网络接口的IP地址 |
ip addr add 192.168.1.1/24 dev eth0 | 配置eth0网卡的IP地址和子网掩码 |
ip link set eth0 up | 启用eth0网络接口 |
ip link set eth0 down | 禁用eth0网络接口 |
3.无线网络配置
指令 | 解析 |
---|---|
iwconfig | 显示或配置无线网络接口 |
iwconfig eth1 | 显示eth1无线网卡的配置 |
iwlist scan | 扫描附近的无线网络 |
nmcli device wifi list | 列出可用的Wi-Fi网络 |
nmcli device wifi connect SSID password PASS | 连接到指定的Wi-Fi网络 |
4.防火墙与网络管理
指令 | 解析 |
---|---|
firewall-cmd --state | 检查防火墙状态 |
firewall-cmd --list-all | 列出当前防火墙配置 |
firewall-cmd --add-port=80/tcp --permanent | 添加防火墙规则,允许80端口(永久) |
firewall-cmd --reload | 重新加载防火墙规则 |
systemctl status NetworkManager | 查看NetworkManager服务状态 |
systemctl restart NetworkManager | 重启NetworkManager服务 |
hostname | 显示或设置系统主机名 |
hostnamectl set-hostname newhostname | 设置新的系统主机名 |
6.防火墙管理
firewalld
是动态防火墙管理工具,支持区域和服务的概念,使用更现代的管理方式。iptables
是传统的防火墙管理工具,提供了更细粒度的控制,适合有深度需求的用户。
选择 firewalld
还是 iptables
主要取决于用户的需求和使用习惯。firewalld
提供了更易于管理和动态调整的方式,而 iptables
则提供了更直接的防火墙控制。
1)firewalld
命令
在其他许多现代 Linux 发行版中,firewalld
是默认的防火墙管理工具。它提供了一种动态管理防火墙规则的方式,可以在不中断连接的情况下应用新的规则。以下是 firewalld
以及一些传统的 iptables
命令的详细说明。
- 区域 (Zone): 定义了允许和拒绝的规则集。系统预定义了几个区域,如
public
、home
、work
等。 - 服务 (Service): 定义了要允许或拒绝的服务,如 HTTP、HTTPS、SSH 等。
- 永久性 (Permanent):
firewalld
区分即时规则和永久规则。即时规则只在系统运行时有效,而永久规则在系统重启后依然有效。
-
启动、停止和重启
firewalld
:sudo systemctl start firewalld # 启动防火墙服务 sudo systemctl stop firewalld # 停止防火墙服务 sudo systemctl restart firewalld # 重启防火墙服务 sudo systemctl enable firewalld # 设置防火墙开机启动 sudo systemctl disable firewalld # 禁止防火墙开机启动
-
查看状态:
sudo firewall-cmd --state
-
列出所有区域:
sudo firewall-cmd --get-zones
-
查看活动区域:
sudo firewall-cmd --get-active-zones
-
查看当前区域的规则:
sudo firewall-cmd --list-all
-
查看指定区域的规则:
sudo firewall-cmd --zone=public --list-all
-
添加服务到某个区域:
sudo firewall-cmd --zone=public --add-service=http
添加
http
服务到public
区域。若要永久添加,需加上--permanent
选项。 -
移除服务:
sudo firewall-cmd --zone=public --remove-service=http
-
开放特定端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp
开放 8080 端口的 TCP 协议。
-
移除端口:
sudo firewall-cmd --zone=public --remove-port=8080/tcp
-
重新加载规则:
sudo firewall-cmd --reload
重新加载永久规则,使之生效。
-
永久添加规则:
在添加或移除服务、端口等操作时,如果希望规则永久生效,需要加上--permanent
选项,然后reload
。 -
查看防火墙设置:
sudo firewall-cmd --list-all
显示所有的设置,包括开放的端口、服务等。
2)iptables
命令
iptables
是传统的 Linux 内核防火墙工具,它操作的规则直接作用于内核的 netfilter 模块。尽管 firewalld
是现代系统的默认工具,iptables
仍然被广泛使用。
-
查看规则:
sudo iptables -L
列出所有的防火墙规则。
-
添加规则:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许 HTTP 流量(端口 80)。
-
删除规则:
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
删除允许 HTTP 流量的规则。
-
保存规则:
sudo iptables-save > /etc/iptables/rules.v4
将当前规则保存到文件。
-
加载规则:
sudo iptables-restore < /etc/iptables/rules.v4
从文件中加载规则。
二、用户和群组
这些命令用于管理用户、用户组以及文件和目录的权限。可以根据需要进行用户添加、删除、密码修改、组管理和权限设置等操作。
1.管理员模式
命令 | 解释 |
---|---|
su root | 用管理员身份进入 |
logout | 退出管理员模式 |
logout
- 功能:注销当前用户会话。
- 用法:直接输入
logout
并按回车键。 - 特点
- 通常用于退出登录 shell 会话。
- 主要用于登录 shell(例如通过 SSH 或控制台登录的会话)。
- 执行
logout
命令时,会运行~/.bash_logout
文件中的命令(如果存在)
与exit
区别:
- 适用范围:
exit
可以用于任何 shell 会话,而logout
通常用于登录 shell 会话。 - 行为差异:
logout
会执行~/.bash_logout
文件中的命令,而exit
不会。 - 退出状态:
exit
可以接受一个退出状态码,而logout
通常不接受参数。
2.用户账户管理
指令 | 解析 |
---|---|
who | 查看当前登录系统的用户 |
cat etc/passwd | 查看用户信息 |
passwd user1 | 修改用户user1 的密码(需root权限) |
chage -E 2005-12-31 user1 | 设置用户user1 密码的失效日期为2005-12-31 |
useradd user1 | 创建一个新用户user1 |
useradd -c "Name Surname" -g admin -d /home/user1 -s /bin/bash user1 | 创建一个属于"admin"用户组的新用户user1 ,并指定详细信息、主目录和Shell |
userdel -r user1 | 删除用户user1 及其主目录 |
1)useradd
创建
useradd
是 Linux 系统中用于创建新用户账户的命令。它允许系统管理员轻松地添加新用户,并提供各种可定制的选项。以下是 useradd
命令的详细解释:
useradd [选项] 用户名
常用选项和参数
选项 | 描述 | 示例 |
---|---|---|
-d | 指定用户的主目录 | useradd -d /home/test_user test_user |
-m | 创建用户的主目录 | useradd -m test_user |
-u | 指定用户的用户ID (UID) | useradd -u 1234 test_user |
-g | 指定用户的主组 | useradd -g group_name test_user |
-G | 指定用户的附加组 | useradd -G group1,group2 test_user |
-s | 指定用户的登录shell | useradd -s /bin/bash test_user |
-c | 添加用户的注释或描述 | useradd -c "This is a test user" test_user |
-e | 设置用户账户的过期日期 | useradd -e 2024-12-31 test_user |
-f | 设置用户密码过期后账户被禁用的天数 | useradd -f 30 test_user |
-M | 不创建用户的主目录 | useradd -M test_user |
示例:
-
添加新用户:
sudo useradd test_user
这个命令会添加一个名为
test_user
的新用户。 -
指定用户的主目录:
sudo useradd -d /home/test_user test_user
这个命令会将新用户的主目录设置为
/home/test_user
。 -
创建用户并指定用户ID:
sudo useradd -u 1234 test_user
这个命令会创建一个用户ID为
1234
的新用户。 -
创建用户并指定主组和附加组:
sudo useradd -g group_name -G group1,group2 test_user
这个命令会将新用户添加到主组
group_name
和附加组group1,group2
。 -
设置用户的登录shell:
sudo useradd -s /bin/bash test_user
这个命令会将新用户的登录shell设置为
/bin/bash
。 -
添加用户的注释或描述:
sudo useradd -c "This is a test user" test_user
这个命令会为新用户添加注释 “This is a test user”。
-
设置用户账户的过期日期:
sudo useradd -e 2024-12-31 test_user
这个命令会将新用户账户的过期日期设置为 2024 年 12 月 31 日。
-
不创建用户的主目录:
sudo useradd -M test_user
这个命令会创建一个没有主目录的用户。
2)usermod
修改
usermod
命令是 Linux 系统中用于修改用户账户属性的命令。它允许系统管理员更改用户的多种属性,如用户名、用户ID、用户组、主目录等。下面详细介绍 usermod
的使用方法及常用选项:
usermod [选项] 用户名
选项
:用于指定要修改的属性。用户名
:要修改的用户账户的名称。
注意:
- 修改用户账户属性时,必须具有超级用户权限(root 权限)。
- 更改用户的主目录或用户名等关键属性时,建议在单用户模式或用户未登录时进行,以避免对系统造成干扰。
usermod
不会更新用户的家目录中的文件和目录名,这意味着手动更改用户主目录后,仍需手动更新目录内容。
选项 | 描述 | 示例 |
---|---|---|
-l | 修改用户的登录名 | usermod -l 新用户名 旧用户名 |
-u | 修改用户的ID。新用户ID应是唯一的,且未被其他用户使用 | usermod -u 新用户ID 用户名 |
-d | 更改用户的主目录。注意,这不会移动现有的文件,需要使用 -m 选项来移动内容 | usermod -d 新主目录 用户名 |
-m | 使用 -m 选项将当前主目录的内容移到新的主目录 | usermod -d 新主目录 -m 用户名 |
-s | 修改用户的登录shell | usermod -s /bin/bash 用户名 |
-g | 修改用户的主组 | usermod -g 组名 用户名 |
-G | 添加用户到多个附加组,组名之间用逗号分隔。注意,这会替换用户当前的所有附加组 | usermod -G group1,group2 用户名 |
-aG | 使用 -a 选项表示追加附加组而不是替换 | usermod -aG group1,group2 用户名 |
-L | 锁定用户账户,禁止用户登录 | usermod -L 用户名 |
-U | 解锁已锁定的用户账户 | usermod -U 用户名 |
-e | 设置用户账户的过期日期。格式为 YYYY-MM-DD | usermod -e YYYY-MM-DD 用户名 |
-f | 设置用户密码过期后,账户被禁用的天数 | usermod -f 过期天数 用户名 |
示例:
-
更改用户名:
sudo usermod -l new_username old_username
这个命令会将用户的登录名从
old_username
更改为new_username
。 -
更改用户ID:
sudo usermod -u 1234 username
这个命令会将用户
username
的用户ID更改为1234
。 -
更改主目录并移动内容:
sudo usermod -d /new/home -m username
这个命令会将用户
username
的主目录更改为/new/home
并移动现有内容。 -
更改默认shell:
sudo usermod -s /bin/zsh username
这个命令会将用户
username
的登录shell更改为/bin/zsh
。 -
添加用户到附加组:
sudo usermod -aG group1,group2 username
这个命令会将用户
username
添加到group1
和group2
附加组。 -
锁定和解锁用户账户:
sudo usermod -L username # 锁定账户 sudo usermod -U username # 解锁账户
这些命令分别用于锁定和解锁用户
username
的账户。 -
设置用户账户的有效期限:
sudo usermod -e 2024-12-31 username
这个命令会将用户
username
的账户过期日期设置为 2024 年 12 月 31 日。
3)userdel
删除
userdel
是 Linux 系统中用于删除用户账户的命令。它允许系统管理员删除用户及其相关文件。以下是 userdel
命令的详细解释:
userdel [选项] 用户名
常用选项和参数:
选项 | 描述 | 示例 |
---|---|---|
-f | 强制删除用户账户及其主目录,即使用户正在登录 | userdel -f 用户名 |
-r | 删除用户账户及其主目录和邮件存储 | userdel -r 用户名 |
-h | 显示帮助信息并退出 | userdel -h |
-R | 在指定的 CHROOT_DIR 中应用更改 | userdel -R /path/to/chroot 用户名 |
-Z | 删除用户的 SELinux 用户映射(适用于启用了 SELinux 的系统) | userdel -Z 用户名 |
示例:
-
删除用户:
sudo userdel 用户名
这个命令会删除指定的用户账户。
-
强制删除用户:
sudo userdel -f 用户名
这个命令会强制删除用户账户及其主目录,即使用户正在登录。
-
删除用户及其主目录:
sudo userdel -r 用户名
这个命令会删除用户账户及其主目录和邮件存储。
-
在 chroot 环境中删除用户:
sudo userdel -R /path/to/chroot 用户名
这个命令会在指定的 chroot 环境中删除用户。
-
删除用户的 SELinux 用户映射:
sudo userdel -Z 用户名
这个命令会删除用户的 SELinux 用户映射。
userdel
命令是一个低级工具,用于从系统中删除用户账户及其相关文件。使用该命令时需要具备管理员权限。
4)常用命令
(1)切换用户
在 CentOS 中,你可以使用 su
命令来切换用户。以下是具体步骤:
-
切换到其他用户:
su - 用户名
例如,要切换到
john
用户,输入:su - john
然后输入
john
用户的密码。 -
切换到 root 用户:
su -
或者:
su - root
然后输入 root 用户的密码。
-
从 root 用户切换到普通用户:
su - 用户名
例如,要从 root 切换到
john
用户,输入:su - john
使用 su -
命令不仅切换用户身份,还会切换到目标用户的环境,这样可以避免环境变量错误。如果你有其他问题或需要进一步的帮助,请告诉我!¹²³
(2)查看所有用户
在 CentOS 中,你可以通过以下几种方法查看所有用户:
-
查看
/etc/passwd
文件:
这个文件包含系统中所有用户的信息。你可以使用cat
命令来查看:cat /etc/passwd
这将显示所有用户的详细信息。
-
使用
less
或more
命令:
如果用户很多,可以使用less
或more
命令分页查看:less /etc/passwd
或者:
more /etc/passwd
-
使用
awk
命令:
只显示用户名而不包含其他信息:awk -F':' '{ print $1}' /etc/passwd
-
使用
getent
命令:
这个命令可以从系统数据库中获取用户信息:getent passwd
3.用户组管理
指令 | 解析 |
---|---|
groupadd group_name | 创建一个新用户组 |
groupdel group_name | 删除一个用户组 |
groupmod -n new_group_name old_group_name | 重命名一个用户组 |
4.权限管理
1)权限标识的结构
通过ls -l
命令可以查看文件类型,下列第一个字母后的字母就是文件权限
[mcjy@localhost etc]$ ls -l
总用量 1304
drwxr-xr-x. 3 root root 28 7月 28 01:04 accountsservice
-rw-r--r--. 1 root root 16 7月 28 01:09 adjtime
在 Linux 系统中,文件和目录的权限标识由 10 个字符组成,前三个字符表示文件类型和权限,后九个字符分为三组,每组三个字符,分别表示文件所有者、文件所属组和其他用户的权限。以下是详细解释:
- 第一个字符:表示文件类型
-
:普通文件d
:目录l
:符号链接c
:字符设备文件b
:块设备文件
- 后三组字符:每组三个字符,分别表示读(r)、写(w)和执行(x)权限
- 第一组:文件所有者的权限
- 第二组:文件所属组的权限
- 第三组:其他用户的权限
字符位置 | 含义 | 示例 | 解释 |
---|---|---|---|
1 | 文件类型 | d | 目录 |
2-4 | 文件所有者权限 | rwx | 读、写、执行 |
5-7 | 文件所属组权限 | r-x | 读、执行 |
8-10 | 其他用户权限 | r-x | 读、执行 |
以 drwxr-xr-x
为例:
- 第一个字符
d
:表示这是一个目录。 - 第一组
rwx
:表示文件所有者(root)有读、写和执行权限。 - 第二组
r-x
:表示文件所属组(root)有读和执行权限,但没有写权限。 - 第三组
r-x
:表示其他用户有读和执行权限,但没有写权限。
(1)权限符号
符号说明 | 含义 | 数字表示 |
---|---|---|
r | 可读(read) | 4 |
w | 可写(write) | 2 |
x | 可执行(execute) | 1 |
- | 无权限 | 0 |
权限设置案例
权限符号 | 数字表示 | 含义 |
---|---|---|
— | 0 | 无任何权限 |
–x | 1 | 仅执行权限 |
-w- | 2 | 仅写权限 |
-wx | 3 | 写和执行权限 |
r– | 4 | 仅读权限 |
r-x | 5 | 读和执行权限 |
rw- | 6 | 读和写权限 |
rwx | 7 | 读、写和执行权限 |
(2)权限进制表示
权限 | 二进制 | 八进制 |
---|---|---|
rwx | 111 | 7 |
r-x | 101 | 5 |
rw- | 110 | 6 |
r-- | 100 | 4 |
--- | 000 | 0 |
计算权限的八进制表示
r = 4
,w = 2
,x = 1
- 权限
rwx
转换为二进制111
,再转为八进制7
。 - 权限
r-x
转换为二进制101
,再转为八进制5
。
权限字符串 drwxr-xr-x
解释:
d
表示目录。rwx
是拥有者的权限,表示拥有者可以读、写、执行。r-x
是所属组的权限,表示所属组成员可以读、执行,但不能写。r-x
是其他人的权限,表示其他人可以读、执行,但不能写。
这个表格概述了文件权限和类型的基本信息,以及如何使用符号表示不同的权限和文件类型。
(3)权限组
在 Linux 中,每个文件或目录都有三个不同的权限组:所有者(Owner)、组(Group)和其他人(Others)。chmod
命令可以使用数字(八进制)或字母来设置这些权限。
u表示拥有者 ; g表示所属组 ; o表示其他用户 ; a表示所有的权限
用户分类 | 描述 |
---|---|
拥有者 (Owner) | 文件的创建者或所有者,通常拥有最高权限。 |
所属组 (Group) | 文件所属的用户组,组内用户共享特定的权限。 |
其他人 (Others) | 系统中所有其他用户。 |
2)chmod 命令修改权限
chmod
是 Linux 中用于更改文件或目录权限的命令。权限主要包括读(Read, r)、写(Write, w)和执行(Execute, x)。
(1)数字方式
数字方式使用三位数,每位数分别代表所有者、组和其他人的权限。例如:
chmod 755 filename
表示设置文件filename
的权限为所有者有读、写、执行权限,组和其他人有读、执行权限。
(2)字母方式
字母方式使用符号表示权限和目标用户(所有者、组、其他人)。例如:
符号 | 含义 |
---|---|
u | 所有者(User) |
g | 组(Group) |
o | 其他人(Others) |
a | 所有用户(All) |
+ | 增加权限 |
- | 移除权限 |
= | 设置为特定权限 |
示例:
chmod u+x filename
为文件filename
的所有者增加执行权限。chmod go-rw filename
移除文件filename
中组和其他人的读写权限。
命令 | 说明 |
---|---|
chmod 644 file | 设置文件权限为所有者读写,组和其他人只读 |
chmod 700 script.sh | 设置脚本文件的所有者为读写执行,组和其他人无权限 |
chmod u=rwx,g=rx,o= file | 设置所有者读写执行,组读执行,其他人无权限 |
使用 chmod
命令时要特别注意,设置不当可能导致文件或目录无法访问或被错误使用。
(3)其他用法
所有者和组管理命令 | 解析 |
---|---|
chown user1 file1 | 改变文件file1 的所有者为user1 |
chown -R user1 directory1 | 递归改变目录directory1 及其下所有文件的所有者为user1 |
chgrp group1 file1 | 改变文件file1 的所属组为group1 |
chown user1:group1 file1 | 改变文件file1 的所有者为user1 和所属组为group1 |
find / -perm -u+s | 罗列系统中所有使用了SUID权限的文件 |
3)特殊权限命令
- SUID(Set User ID): 当文件具有 SUID 位时,执行该文件的用户将临时具有文件所有者的权限。适用于需要权限提升的程序,例如
/usr/bin/passwd
。 - SGID(Set Group ID): 当目录具有 SGID 位时,新创建的文件将继承目录的组属性,而不是继承创建者的主组属性。
- 粘滞位(Sticky Bit): 当目录设置了粘滞位时,即使其他用户具有写权限,他们也只能删除自己拥有的文件。这在共享目录中很有用,例如
/tmp
目录。
指令 | 解析 |
---|---|
ls -lh | 以长格式显示目录内容,包括文件的权限、所有者、组、大小和最后修改时间。 |
chmod u+s /bin/file1 | 设置文件 /bin/file1 的 SUID 位。当普通用户执行此文件时,将临时获得文件所有者的权限。SUID 的符号为 s 。 |
chmod u-s /bin/file1 | 禁用文件 /bin/file1 的 SUID 位。 |
chmod g+s /home/public | 设置目录 /home/public 的 SGID 位。新建文件将继承目录的组权限。SGID 的符号为 s 。 |
chmod g-s /home/public | 禁用目录 /home/public 的 SGID 位。 |
chmod o+t /home/public | 设置目录 /home/public 的粘滞位(Sticky Bit)。只有文件所有者或根用户才能删除该目录中的文件。粘滞位的符号为 t 。 |
chmod o-t /home/public | 禁用目录 /home/public 的粘滞位。 |
chmod 777 directory1 | 设置目录 directory1 对所有用户开放读(r)、写(w)和执行(x)权限。 |
chmod 700 directory1 | 设置目录 directory1 仅对所有者开放读、写和执行权限。 |