目录
在Linux系统中,用户和组管理是确保系统安全性和资源控制的关键部分。正确地管理用户和组不仅有助于权限分配,还能提高系统的整体安全性。
4.1 用户管理
4.1.1 用户的概念
用户是Linux系统中执行操作的主体。每个用户都有一个唯一的用户名和用户ID(UID),用于识别和管理系统中的不同用户。
4.1.2 添加和删除用户
1. useradd
- 功能:创建新用户。
- 示例:
sudo useradd -m -s /bin/bash newuser
- 参数解释:
-m
:创建用户的主目录。-s
:指定用户的默认shell。
2. passwd
- 功能:设置或更改用户密码。
- 示例:
sudo passwd newuser
3. userdel
- 功能:删除用户。
- 示例:
sudo userdel -r newuser
- 参数解释:
-r
:同时删除用户的主目录。
4.1.3 修改用户信息
1. usermod
- 功能:修改现有用户的属性。
- 示例:
sudo usermod -aG groupname username
- 参数解释:
-aG
:将用户添加到指定的组中,而不删除其现有组。
4.1.4 查看用户信息
1. id
- 功能:显示用户的UID和GID信息。
- 示例:
id username
2. getent
- 功能:从用户数据库中获取用户信息。
- 示例:
getent passwd username
4.2 组管理
4.2.1 组的概念
组是用户的集合,用于简化权限管理。每个组都有一个组名和组ID(GID)。用户可以是一个或多个组的成员。
4.2.2 添加和删除组
1. groupadd
- 功能:创建新组。
- 示例:
sudo groupadd groupname
2. groupdel
- 功能:删除组。
- 示例:
sudo groupdel groupname
4.2.3 修改组信息
1. groupmod
- 功能:修改现有组的属性。
- 示例:
sudo groupmod -n newgroupname oldgroupname
- 参数解释:
-n
:更改组名。
4.2.4 查看组信息
1. getent
- 功能:显示组的详细信息。
- 示例:
getent group groupname
4.2.5 用户和组之间的关系
在Linux系统中,用户可以属于多个组,而每个组可以有多个用户。理解用户和组之间的关系有助于设置合理的权限。
4.3 权限管理
4.3.1 文件和目录的权限
每个文件和目录在Linux中都有访问权限,主要分为以下三类:
- 读权限(r):允许读取文件或查看目录内容。
- 写权限(w):允许修改文件或在目录中添加、删除文件。
- 执行权限(x):允许执行文件或进入目录。
4.3.2 查看文件权限
1. ls -l
- 功能:以详细格式列出文件和目录信息,包括权限。
ls -l filename
4.3.3 修改文件权限
1. chmod
- 功能:更改文件或目录的权限。
- 示例:
chmod u+x script.sh # 给予用户执行权限 chmod 755 file.txt # 设置权限为rwxr-xr-x
- 权限模式:
u
:用户(owner)。g
:组(group)。o
:其他用户(others)。a
:所有用户(all)。
4.3.4 修改文件所有者和组
1. chown
- 功能:更改文件或目录的所有者和组。
- 示例:
sudo chown newuser:newgroup file.txt
2. chgrp
- 功能:更改文件或目录的组。
- 示例:
sudo chgrp newgroup file.txt
4.4 sudo权限管理
4.4.1 sudo的概念
sudo
(superuser do)是一个允许普通用户以超级用户(root)身份执行命令的工具。使用sudo
可以提升普通用户的权限。
4.4.2 配置sudoers文件
1. visudo
- 功能:安全地编辑
/etc/sudoers
文件。 - 示例:
sudo visudo
2. sudoers文件的基本格式
user_name ALL=(ALL:ALL) ALL
user_name
:允许使用sudo的用户名。ALL
:可以在所有主机上使用。(ALL:ALL)
:可以以所有用户的身份执行命令。
4.5 实践示例
示例1:创建新用户和组
sudo groupadd developers sudo useradd -m -G developers devuser sudo passwd devuser
示例2:查看用户和组信息
id devuser getent group developers
示例3:设置文件权限
touch myscript.sh chmod u+x myscript.sh # 设置用户可执行权限
示例4:使用sudo执行命令
sudo apt update # 使用sudo更新软件包列表