Arj*_*kar 5 linux sudo selinux access-control
在 Fedora 18 机器上,我作为普通用户在安装过程中创建了以下 SELinux 上下文:
$ sestatus
SELinux status: enabled
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Run Code Online (Sandbox Code Playgroud)
和
$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Run Code Online (Sandbox Code Playgroud)
我想使用受限的 selinux 角色运行一个程序user_r,而不是当前的角色unconfined_r,因此我使用受限的 SELinux 用户创建一个新用户user_r:
# useradd -MN -Z user_u johndoe
# echo 'fubar' | passwd johndoe --stdin
Run Code Online (Sandbox Code Playgroud)
现在,我打开一个新的 tty 并johndoe使用登录agetty。它抱怨/home/johndoe不存在,但本质上,它让我登录。SELinux 上下文:
$ id -Z
user_u:user_r:user_t:s0
Run Code Online (Sandbox Code Playgroud)
user_u:user_r:user_t是完美的,也是我想要的。但我想在已经作为unconfined_u而不是作为新登录运行的脚本中实现这一点。我尝试过sudo:
如果我使用sudo -u,我会得到:
$ sudo -u johndoe id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Run Code Online (Sandbox Code Playgroud)
这意味着 SELinux 用户不会改变。
我也尝试过:
$ sudo -r user_r -u johndoe id -Z
sudo: unconfined_u:user_r:user_t:s0-s0:c0.c1023 is not a valid context
sudo: unable to execute /bin/id: Invalid argument
Run Code Online (Sandbox Code Playgroud)
所以,那里也没有运气。
那么我怎样才能使用or (或其他任何东西)从unconfined_r角色过渡到 ?user_rsudosu
您是否尝试过policycoreutils-sandbox解决方案?这正是您想要的。例如,如果您想在 SELinux 受限环境中执行 Firefox(不幸的是,但有充分理由,“沙箱”仅在 Red Hat 发行版上受支持):
/usr/bin/sandbox -X -t sandbox_web_t firefox
Run Code Online (Sandbox Code Playgroud)
SELinux 与其他基于 LSM 的 MAC 系统的区别在于其灵活性和可定制性。
这可以让你做你想做的事,即使它没有意义。一个先决条件是您至少了解基本原理和概念。
这里需要注意以下几点:
这可以通过以下方式完成:
semanage user -m -L s0 -r s0-s0:c0.c1023 -R "unconfined_r system_r user_r" -P user unconfined_u
Run Code Online (Sandbox Code Playgroud)
这可以通过创建一个简单的策略模块来完成:
cat > myuser.te <<EOF
module myuser 1.0;
require { role unconfined_r, user_r; }
allow unconfined_r user_r;
EOF
checkmodule -M -m myuser.te -o myuser.mod
semodule_package -o myuser.pp -m myuser.mod
sudo semodule -i myuser.pp
Run Code Online (Sandbox Code Playgroud)
需要告知 Sudo 应该将哪种 SELinux 类型安全标识符与指定的 user_r SELinux 角色安全标识符一起使用
sudo -r user_r -t user_t id -Z
我相信我触及了所有考虑因素,但我可能忽略了一些,并且我的示例可能有错字。请参阅我提到的命令的手册页。
| 归档时间: |
|
| 查看次数: |
8128 次 |
| 最近记录: |