如何将一个用户的文件限制为另一用户

如何将一个用户的文件限制为另一用户

我的机器上有用户帐户。我的问题是如何限制对用户文件的访问。这意味着其他人根本无法访问我的文件。我该如何设置此限制?

一台 Linux 机器可以有多少个 root 用户?

编辑: 我是我的系统的用户之一TOM(实际上我的系统有两个用户TOMJERRY),我安装
了所有软件包root

yum install <package name>

限制:TOM没有其他人访问用户 中包含的我的包和文件

答案1

限制对文件的访问的典型方法是拥有对主目录的权限chmod 700(如果主目录的组所有者与其他人共享),或者chmod 770如果您拥有“自己的”组,而其他人都不是其成员的。

root用户(uid 0)始终可以访问这些文件。

只能有一个名为 name 的用户root,但可以有多个与 uid 0 关联的名称,因此您可以有多个具有 root 权限的用户。

如果其他人对您的主目录所在的计算机具有 root 访问权限,则您不应将敏感信息保留在那里,除非以加密形式(但加密应在不同的系统上完成)。

答案2

您使用的“访问”可以更详细地解释为读/写/删除等。粘性位将帮助您删除其他人,您可以按照@Anthon所说的进行操作。 root 是超级用户,所以不要保留“敏感”数据,除非......

您是否尝试过在目录上设置粘滞位?我假设你使用的是linux。

例如http://www.thegeekstuff.com/2013/02/sticky-bit/这里的例子对于你的情况来说是不言自明的。

[https://serverfault.com/questions/10353/what-is-the-sticky-bit-in-unix-file-systems-when-is-it-used]

答案3

你不能使用yum像 yum 这样的普通用户命令TOM,yum 命令只能由 root 权限使用,如果你用 yum 安装了一个软件包,每个用户都可以使用它。但如果你有tar包裹您可以更改安装目录,如下所示:(如果该软件包是使用 GNU 自动工具生成的)

./configure --prefix=/home/myusername/bin
make; make install

并将 /home/myusername/bin 放入您的PATH变量中。通过这个解决方案,该包只需使用 myusername 用户名运行!

但如果你的文件是二进制或txt文件您只需设置适当的权限,如果我们看起来更精确并且您想要写一个程序它仅适用于特定的情况UIDUSERNAME您可以简单地检查 UID 变量,因为它是只读的并且您可以信任它。请参阅下面的脚本并将其放入 check.sh 文件中:(我编写了 SHELLSCRIPT 因为这里是 Unix & Linux 论坛)

#!/bin/bash

COUNTER=0
FLAG=0
declare -r MYUID=500
declare -r USNAME=Sepahrad

for i in `cut -d: -f3 /etc/passwd`
do
    COUNTER=$(( COUNTER + 1 ))
    [ $i -eq $MYUID ] && TMP=$(head -n`echo $COUNTER` /etc/passwd | tail -n1 | cut -d: -f1) && [ "$TMP" == "$USER" ] && [ $MYUID -eq $UID ] &&  FLAG=1
done

if [ $FLAG -eq 1 ]
then

    echo "Hello $USNAME ($UID)"
elif [ $FLAG -eq 0 ]
then
    echo "You don't have permission to see thi file $USER ($UID)"; exit 1
fi

该脚本仅针对 UID=500 和 Sepahrad 用户名的用户运行。 (您可以通过编辑器更改它)但是如果您不希望任何用户甚至root用户看到您的源代码,您可以使用shc如下命令编译它:shc -v -r -T check.sh

相关内容