用户夜猫子 發表於 2023-7-22 00:00:00

在Linux上给用户赋予指定目录的读写权限

<p>
        <img title="在Linux上给用户赋予指定目录的读写权限" alt="在Linux上给用户赋予指定目录的读写权限" src="https://zhuji.jb51.net/uploads/img/202305/7e45438c236ebdd08df68baf260dc669.jpg"></p>
<p>
        在上篇文章中我们向您展示了如何在 Linux 上创建一个共享目录。这次,我们会为您介绍如何将 Linux 上指定目录的读写权限赋予用户。</p>
<p>
        有两种方法可以实现这个目标:***种是 使用 ACL (访问控制列表) ,第二种是创建用户组来管理文件权限,下面会一一介绍。</p>
<p>
        为了完成这个教程,我们将使用以下设置。</p>
<ul>
<li>
                操作系统:CentOS 7</li>
        <li>
                测试目录:/shares/project1/reports</li>
        <li>
                测试用户:tecmint</li>
        <li>
                文件系统类型:ext4</li>
</ul>
<p>
        请确认所有的命令都是使用 root 用户执行的,或者使用 sudo 命令 来享受与之同样的权限。</p>
<p>
        让我们开始吧!下面,先使用 mkdir 命令来创建一个名为 reports 的目录。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># mkdir -p /shares/project1/reports </span></span>
</li>
</ol>
<p>
        使用 ACL 来为用户赋予目录的读写权限</p>
<p>
        重要提示:打算使用此方法的话,您需要确认您的 Linux 文件系统类型(如 ext3 和 ext4, NTFS, BTRFS)支持 ACL。</p>
<p>
        1、 首先, 依照以下命令在您的系统中检查当前文件系统类型,并且查看内核是否支持 ACL:</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># df -T | awk </span><span class="string">'{print $1,$2,$NF}'</span><span> | grep </span><span class="string">"^/dev"</span><span> </span></span>
</li>
        <li>
                <span># grep -i acl /boot/config* </span>
</li>
</ol>
<p>
        从下方的截屏可以看到,文件系统类型是 ext4,并且从 CONFIG_EXT4_FS_POSIX_ACL=y 选项可以发现内核是支持 POSIX ACL 的。</p>
<p>
        <img title="在Linux上给用户赋予指定目录的读写权限" alt="在Linux上给用户赋予指定目录的读写权限" src="https://zhuji.jb51.net/uploads/img/202305/a959eac2b8d9ec6faaf0abca10fe4bbf.jpg"></p>
<p>
        查看文件系统类型和内核的 ACL 支持。</p>
<p>
        2、 接下来,查看文件系统(分区)挂载时是否使用了 ACL 选项。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># tune2fs -l /dev/sda1 | grep acl </span></span>
</li>
</ol>
<p>
        <img title="在Linux上给用户赋予指定目录的读写权限" alt="在Linux上给用户赋予指定目录的读写权限" src="https://zhuji.jb51.net/uploads/img/202305/ff39f8404ed69c60deead011e805869f.jpg"></p>
<p>
        查看分区是否支持 ACL</p>
<p>
        通过上边的输出可以发现,默认的挂载项目中已经对 ACL 进行了支持。如果发现结果不如所愿,你可以通过以下命令对指定分区(此例中使用 /dev/sda3)开启 ACL 的支持。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># mount -o remount,acl / </span></span>
</li>
        <li>
                <span># tune2fs -o acl /dev/sda3 </span>
</li>
</ol>
<p>
        3、 现在是时候指定目录 reports 的读写权限分配给名为 tecmint 的用户了,依照以下命令执行即可。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># getfacl /shares/project1/reports # </span><span class="keyword">Check</span><span> the </span><span class="keyword">default</span><span> ACL settings </span><span class="keyword">for</span><span> the directory </span></span>
</li>
        <li>
                <span># setfacl -m <span class="func">user</span><span>:tecmint:rw /shares/project1/reports # Give rw access </span><span class="keyword">to</span><span> </span><span class="func">user</span><span> tecmint </span></span>
</li>
        <li class="alt">
                <span># getfacl /shares/project1/reports # <span class="keyword">Check</span><span> new ACL settings </span><span class="keyword">for</span><span> the directory </span></span>
</li>
</ol>
<p>
        <img title="在Linux上给用户赋予指定目录的读写权限" alt="在Linux上给用户赋予指定目录的读写权限" src="https://zhuji.jb51.net/uploads/img/202305/9b43ef833aae1e4ed6ba9c6b3bb6cd2d.jpg"></p>
<p>
        通过 ACL 对指定目录赋予读写权限</p>
<p>
        在上方的截屏中,通过输出结果的第二行 getfacl 命令可以发现,用户 tecmint 已经成功的被赋予了 /shares/project1/reports 目录的读写权限。</p>
<p>
        如果想要获取 ACL 列表的更多信息。可以在下方查看我们的其他指南。</p>
<ul>
<li>
                如何使用访问控制列表(ACL)为用户/组设置磁盘配额</li>
        <li>
                如何使用访问控制列表(ACL)挂载网络共享</li>
</ul>
<p>
        现在我们来看看如何使用第二种方法来为目录赋予读写权限。</p>
<p>
        <strong>使用用户组来为用户赋予指定目录的读写权限</strong></p>
<p>
        1、 如果用户已经拥有了默认的用户组(通常组名与用户名相同),就可以简单的通过变更文件夹的所属用户组来完成。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># chgrp tecmint /shares/project1/reports </span></span>
</li>
</ol>
<p>
        另外,我们也可以通过以下方法为多个用户(需要赋予指定目录读写权限的)新建一个用户组。如此一来,也就创建了一个共享目录。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># groupadd projects </span></span>
</li>
</ol>
<p>
        2、 接下来将用户 tecmint 添加到 projects 组中:</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># usermod -aG projects tecmint </span></span>
</li>
        <li>
                <span># <span class="keyword">add</span><span> </span><span class="func">user</span><span> </span><span class="keyword">to</span><span> projects# groups tecmint # </span><span class="keyword">check</span><span> users groups </span></span>
</li>
</ol>
<p>
        3、 将目录的所属用户组变更为 projects:</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># chgrp projects /shares/project1/reports </span></span>
</li>
</ol>
<p>
        4、 现在,给组成员设置读写权限。</p>
<ol class="dp-sql">
<li class="alt">
                <span><span># chmod -R 0760 /shares/projects/reports </span></span>
</li>
        <li>
                <span># ls -l /shares/projects/ #<span class="keyword">check</span><span> new permissions </span></span>
</li>
</ol>
<p>
        好了!这篇教程中,我们向您展示了如何在 Linux 中将指定目录的读写权限赋予用户。若有疑问,请在留言区中提问。</p>
<p>
        (题图:Pixabay,CC0)</p>
頁: [1]
查看完整版本: 在Linux上给用户赋予指定目录的读写权限