Linux

剝奪使用者的讀/寫/執行權限

  • November 19, 2014

所以我有一個使用者能夠進入/etc並讀取httpd.conf.

我想拒絕該使用者訪問任何關鍵位置,例如/etc/var等等。

最好的方法是什麼?我真的不想只為一個使用者修改我的整個文件夾/文件權限。

您可能想設置一個chroot 監獄看看Jailkit

監獄將根****更改/為新路徑,如。


作為一個簡單的例子作為開始。

首先,您很可能希望將 chroot 目錄放在單獨的分區上 - 這樣使用者就無法填充您的系統分區。

但為了簡單起見:

  1. 製作 chroot 目錄:
# mkdir /usr/chroot_test
# cd /usr/chroot_test
  1. 製作系統目錄:
# mkdir bin etc home lib var
  1. 添加一些基本工具:

這裡可以ldd用來查找依賴項。

# ldd /bin/bash
linux-gate.so.1 =>  (0xb774d000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0xb770a000)
libdl.so.2 => /lib/libdl.so.2 (0xb7705000)
libc.so.6 => /lib/libc.so.6 (0xb755a000)
/lib/ld-linux.so.2 (0xb774e000)

將它們複製到 chroot 的庫中:

# cp /lib/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux.so.2} lib/

現在輸入 chroot

# chroot /usr/chroot_test
bash-4.2# ls
bash: ls: command not found
bash-4.2# pwd
/
bash-4.2# exit
exit

好的。作品。添加更多工具:

# sed '/=>/!d;/=>\s*(/d;s/.*=>\s*\([^ ]*\) .*/\1/' < <(ldd /bin/{ls,cat,vi}) | sort -u)

... copy

等等。

然後添加 chroot 登錄(http://kegel.com/crosstool/current/doc/chroot-login-howto.html)。


但是,如前所述,通過使用 jailkit,這可以簡化:http ://olivier.sessink.nl/jailkit/howtos_chroot_shell.html 。

您可以使用文件訪問控制列表來刪除特定使用者的權限。該命令是 setfacl,它在文件上設置(創建)ACL。

範例用法:

root@host:/tmp# date > f1
root@host:/tmp# ls -l f1
-rw-r--r-- 1 root root           30 Mar 28 12:12 f1
root@host:/tmp# setfacl -m u:johan:0 f1
root@host:/tmp# ls -l f1
-rw-r--r--+ 1 root root          30 Mar 28 12:12 f1

注意權限後的 + 符號。它告訴您該文件有一個 ACL 集。setfacl 命令選項 -m 告訴它創建/修改 ACL。參數“u:johan:0”導致使用者“johan”的使用者條目設置為“0”,這是權限模式“0 0 0”的縮寫,相當於“— — – - 用於傳統的“rwx rwx rwx”權限集。

root@host:/tmp# getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:johan:---
group::r--
mask::r--
other::r--

root@host:/tmp# cat f1
Thu Mar 28 12:12:07 SAST 2013
root@host:/tmp# exit

退出後命令具有指定使用者的權限,例如“johan”

johan@host:/tmp> cat f1
cat: f1: Permission denied

現在說了這麼多要非常小心。不加選擇地從 /etc 中刪除訪問權限會導致各種故障,使用者可能無法登錄。許多系統功能以登錄使用者的權限讀取 /etc 中的各種配置文件。但是,阻止使用者訪問特定的單個文件是完全可以接受的。

引用自:https://unix.stackexchange.com/questions/70394