linux限定怎么执行
linux限定怎么执行详细介绍
在 Linux 系统中,“限定执行” 通常指对用户、进程或操作施加各种限制,包括权限控制、资源限制、访问限制等。以下是常见的 “限定执行” 场景及操作方法:
一、
权限限定:限制用户执行特定命令
1.
通过 sudo 配置(推荐)
- 场景:允许特定用户以管理员权限执行部分命令(而非全部),或禁止执行危险命令。
- 操作:
- 用
visudo编辑 sudo 配置文件(避免直接修改/etc/sudoers导致语法错误):bashvisudo - 添加规则(示例):
- 允许用户
user1以 root 权限执行/usr/bin/apt-get(无需密码):bashuser1 ALL NOPASSWD: /usr/bin/apt-get - 禁止用户
user2执行rm命令(需结合权限控制):bashuser2 ALL /usr/bin/rm
- 允许用户
- 保存后生效,用户需通过
sudo <命令>执行受限命令。
- 用
2.
文件权限控制(chmod/chown)
- 场景:限制普通用户执行特定脚本或二进制文件。
- 操作:bash
/path/to/command
o-x /path/to/command
二、
资源限定:限制进程资源使用
1.
临时限制(ulimit 命令)
- 场景:限制当前会话中进程的资源(如内存、文件描述符、CPU 时间等)。
- 常用选项:bash
- 注:临时限制仅对当前会话有效,登录后重置。
2.
永久限制(/etc/security/limits.conf)
- 场景:对所有用户或特定用户设置全局资源限制。
- 操作:
- 编辑配置文件:bash
/etc/security/limits.conf - 添加规则(格式:
<用户名> <限制类型> <限制项目> <值>):bashuser1 hard memlock
* soft nofile
* hard nofile
- 生效需重新登录或重启服务。
- 编辑配置文件:bash
三、
用户限定:限制用户操作范围
1.
用户组与权限分组
- 场景:通过用户组控制访问权限(如
sudo组、docker组)。 - 操作:bash
user1
gpasswd user1
2.
Chroot 监狱(限制根目录)
- 场景:将用户或程序限制在特定目录树中,无法访问外部文件系统。
- 基本步骤:
- 创建根目录并复制必要文件(如
ls、bash等命令的依赖库):bash/chroot/env/bin /chroot/env/
/lib64 /chroot/env/
- 启动受限 shell:bash
/chroot/env /bin/bash
- 创建根目录并复制必要文件(如
- 注:需手动配置依赖,适用于特定服务(如 FTP 服务器)。
四、
网络限定:限制网络访问
1.
防火墙规则(iptables/nftables)
- 场景:限制特定 IP、端口或协议的网络连接。
- 示例(限制 SSH 访问):bash
iptables INPUT tcp .1.0/24 ACCEPT
iptables INPUT tcp DROP
2.
TCP Wrapper(/etc/hosts.allow//etc/hosts.deny)
- 场景:限制对特定服务(如
sshd、ftp)的主机访问。 - 操作:bash
/etc/hosts.allow
/etc/hosts.deny
五、
安全增强工具
1.
SELinux 或 AppArmor
- 场景:强制访问控制(MAC),限制程序的文件 / 网络访问权限。
- 示例(SELinux 限制 Apache 访问目录):bash
semanage fcontext httpd_sys_content_t /var/www/custom
restorecon /var/www/custom
2.
systemd 资源限制(服务配置)
- 场景:限制 systemd 管理的服务资源(如 CPU、内存)。
- 操作:
- 编辑服务文件(如
/etc/systemd/system/myservice.service):ini - 重新加载配置:bash
systemctl daemon-reload
- 编辑服务文件(如
总结
根据具体需求选择合适的限制方式:
- 权限控制:优先使用
sudo配置或文件权限(chmod)。 - 资源限制:临时用
ulimit,永久用limits.conf或 systemd 服务配置。 - 用户 / 网络限制:结合用户组、Chroot、防火墙或 TCP Wrapper。
- 深度安全:使用 SELinux/AppArmor 等强制访问控制工具。
操作前建议备份配置文件,并通过 man 命令查看具体工具的详细文档(如 man sudoers、man iptables)。