- 在Linux系统中,每个用户都有一个唯一的用户标识号(UID)。
- 用户信息存储在`/etc/passwd`文件中,包括用户名、UID、登录Shell等信息。
- `adduser`或`useradd`命令用于创建新用户。
- `passwd`命令用于设置用户密码。
- `usermod`命令用于修改用户属性。
- `userdel`命令用于删除用户。
# 示例:创建新用户
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
- 用户可以属于一个或多个用户组。
- 用户组信息存储在`/etc/group`文件中。
- 文件和目录有三种基本权限:读(r)、写(w)、执行(x)。
- 权限分为用户(owner)、组(group)、其他用户(others)。
# 示例:更改文件权限
chmod u+rwx file # 用户具有读、写、执行权限
chmod g+rw file # 组具有读、写权限
chmod o-rwx file # 其他用户无权限
6. 文件所有者和所属组更改:
- `chown`命令用于更改文件所有者。
- `chgrp`命令用于更改文件所属组。
# 示例:更改文件所有者和所属组
sudo chown user:group file
7. 权限继承和递归:
- `-R`选项可用于递归地应用权限更改。
- 新创建的文件默认继承父目录的权限。
# 示例:递归更改目录权限
sudo chmod -R 755 directory
- `setuid`(`s`):以文件所有者的身份执行文件。
- `setgid`(`s`):以文件所属组的身份执行文件。
- `sticky`(`t`):防止其他用户删除非自己的文件。
# 示例:设置setuid权限
chmod u+s executable_file
- `sudo`命令允许普通用户以超级用户的身份执行命令。
- `visudo`命令用于编辑sudoers文件,配置用户的sudo权限。
# 示例:添加用户到sudo组
sudo usermod -aG sudo username
- `su`命令用于切换用户。
- `sudo -u`命令用于以其他用户身份执行命令。
# 示例:切换用户
su - username
- 使用SSH密钥对实现安全的远程登录。
- `ssh-keygen`命令用于生成SSH密钥对。
# 示例:生成SSH密钥对
ssh-keygen -t rsa -b 4096
- PAM提供了可插拔的认证模块,用于定制用户认证过程。
- 配置文件位于`/etc/pam.d/`目录下。
- 使用`sudo`配置文件限制用户能够执行的特定命令。
- 使用`ulimit`命令限制用户进程的资源使用。
# 示例:限制用户能够执行的命令
username ALL=(ALL:ALL) /path/to/command
- ACL提供了更细粒度的权限控制,可以赋予用户或组额外的权限。
# 示例:设置ACL权限
setfacl -m u:username:rw file
- 使用系统日志(`/var/log/auth.log`等)监控用户登录和权限更改。
- 定期审计系统日志以检测潜在的安全问题。
- 使用`/etc/security/access.conf`文件可以限制用户从特定的终端登录。
# 示例:限制用户登录
+: username : ALL
- 修改SSH配置文件(通常为`/etc/ssh/sshd_config`)以加强安全性,例如禁用root登录、限制用户登录等。
# 示例:禁用root登录
PermitRootLogin no
- 通过`/etc/security/pwquality.conf`等文件配置密码策略,包括密码长度、复杂性等。
# 示例:配置密码策略
minlen = 8
minclass = 3
- 禁止或关闭系统上不必要的服务,以减少攻击面。
# 示例:停止并禁用不必要的服务
sudo systemctl stop servicename
sudo systemctl disable servicename
- 通过设置密码到期时间,强制用户定期更改密码。
# 示例:设置密码到期时间
sudo chage -M 30 username
- 使用SSH密钥认证时,确保私钥文件权限受限。
# 示例:私钥文件权限
chmod 600 ~/.ssh/id_rsa
- 使用`last`命令查看用户登录历史。
# 示例:查看用户登录历史
last username
- 通过修改PAM配置文件,可以实现更灵活的用户认证和会话管理。
# 示例:修改PAM配置
sudo nano /etc/pam.d/sshd
- 使用`getfacl`和`setfacl`命令查看和设置ACL权限。
# 示例:查看ACL权限
getfacl filename
# 示例:设置ACL权限
setfacl -m u:username:rw filename
- 针对更高级的安全需求,使用SELinux来强化系统安全性。
# 示例:查看SELinux状态
sestatus
- 使用`visudo`命令来编辑sudoers文件,以确保语法正确性。
# 示例:使用visudo编辑sudoers文件
sudo visudo
- 使用`/var/log/secure`等系统日志文件监控登录失败的尝试。
# 示例:查看登录失败日志
grep "Failed password" /var/log/secure
- 确保文件系统的权限正确设置,以防止未授权访问。
# 示例:设置文件系统权限
sudo chmod 755 directory
- 使用加密协议如SSH、SFTP等,以确保文件传输的安全性。
# 示例:使用SFTP传输文件
sftp username@hostname
- 安装和配置`fail2ban`来自动封锁频繁登录失败的IP地址。
# 示例:安装fail2ban
sudo apt-get install fail2ban