如何限制标准(非管理员)用户对 NTFS 分区的访问?

Nir*_*mik 5 users ntfs restricted-access

我使用的是 Ubuntu 12.04。我有 4 个 NTFS 分区。我创建了 2 个用户:一名为我自己(管理员),另一名为家庭(标准/非管理员)。

我成功限制了该标准用户对我的主文件夹的访问。现在我想限制它访问我的所有 NTFS 分区。我怎样才能做到这一点?

我检查了“限制其他用户对 NTFS 分区的访问”,但尽管答案已被接受,但正如稍后的评论中所见,它似乎也没有帮助该OP。

Rah*_*ara 4

  1. 使用以下命令打开 fstab 文件

    gksudo gedit /etc/fstab
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您应该在 /etc/fstab 文件中添加如下行,

    /dev/sda7   /media/EXTRA    ntfs-3g noauto,uid=XXX,unmask=7 0   0
    
    Run Code Online (Sandbox Code Playgroud)

    XXX是我的用户 ID。id您可以使用命令找到您的分区,/dev/sda7这就是我要限制访问的分区。

  3. 创建一个文件夹,命名EXTRA如下/media/

    sudo mkdir /media/EXTRA
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在,每当您登录时,您都需要将其安装为,

    sudo mount /dev/sda7 /media/EXTRA
    
    Run Code Online (Sandbox Code Playgroud)

完毕!

说明:
如果某个特定分区包含 VFAT 或 NTFS 文件系统,并且您只希望自己能够访问它,则非常简单:

将选项包含"noauto", "uid=XXX", and "umask=7"在 fstab 行中,并删除“user”和/或“users”选项(如果它们现在出现在那里)。

这意味着在启动时系统将显示该分区unmounted,并且只有您(以 root 身份操作,可能使用 sudo )才能挂载它。

安装后,它将由您的非特权用户拥有(假设该用户的 uid 是 XXX,它被赋予在 MDV 安装时安装时创建的第一个用户 - 检查以该用户身份运行的“id”命令,并调整 fstab相应地)并且所有其他本地用户将无法访问。


通过发出mount四次命令来安装受限制的 4 个分区是一项无聊的任务。为了减少这个无聊的任务,我编写了一个 shell 脚本:

#!/bin/bash
#Mount Unmount secret partitions now with choice of partition
function checkPartitions(){
    local state=$1
    local dev=$2
    case $state in
    "unmounted")
        mount | grep -q $dev
        if [ $? -eq 1 ]; then
            echo $dev
        fi
        ;;
    "mounted")
        mount | grep -q $dev
        if [ $? -eq 0 ]; then
            echo $dev
        fi
        ;;
    esac
}

function safeUnmount() {
    local dev=$1
    mount | grep -q $dev
    if [ $? -eq 0 ]; then
        echo "Device $dev found. Unmounting now"
        sudo umount $dev
        if [ $? -eq 0 ]; then
            echo "Device $dev unmounted successfully."
        else
            echo "You are not root??"
        fi
    else
        echo "Device $dev is already unmounted."
    fi 
}

function safeMount() {
    local dev=$1
    mount | grep -q $dev
    if [ $? -eq 1 ]; then
        echo "Device $dev not found. Mounting now"
        sudo mount $dev
        if [ $? -eq 0 ]; then
            echo "Device $dev mounted successfully."
        else
            echo "You are not root??"
        fi
    else
        echo "Device $dev is already mounted."
    fi 
}

echo -e "What you want to do? \n 1. Mount Secret Partitions \n 2. Unmount Secret Partitions"
read -p "Enter your choice :" choice

case $choice in
1)
    echo -e "You want to Mount your secret partitions"
    echo "-------List of Unmounted secret partitions-------"
    checkPartitions "unmounted" "/dev/sdaX1"
    checkPartitions "unmounted" "/dev/sdaX2"
    checkPartitions "unmounted" "/dev/sdaX3"
    checkPartitions "unmounted" "/dev/sdaX4"
    anythingelse="y"
    #echo -e "\n"
    while [ $anythingelse == y -o $anythingelse == Y ]; do
        read -p "Which partition should be mounted?" partNum
            safeMount "/dev/sda"$partNum
        read -p "Do you want to mount any other partition? [y/n]" anythingelse
    done
    ;;
2)
    echo -e "You want to Unmount your secret partitions\n"
    echo "--------List of Mounted secret partitions--------"
    checkPartitions "mounted" "/dev/sdaX1"
    checkPartitions "mounted" "/dev/sdaX2"
    checkPartitions "mounted" "/dev/sdaX3"
    checkPartitions "mounted" "/dev/sdaX4"
    anythingelse="y"
    #echo -e "\n"
    while [ $anythingelse == y -o $anythingelse == Y ]; do
        read -p "Which partition should be unmounted?" partNum
            safeUnmount "/dev/sda"$partNum
        read -p "Do you want to unmount any other partition? [y/n]" anythingelse
    done
    ;;
esac
Run Code Online (Sandbox Code Playgroud)

替换/dev/sdaX为您的 4 个分区。

另存secret-mount-unmount.sh为然后发出命令

chmod +x /path/to/file/secret-mount-unmount.sh
Run Code Online (Sandbox Code Playgroud)

双击该文件,然后点击Run in Terminal并继续。