作为管理员的root希望自己除自己以外任何人都没有对该文件的权限该如何设置
1个回答
关注
展开全部
这里提出三个解决方案。
第一种:使用chmod更改特定目录的权限。这能起到限制特定目录被某些人访问的作用,限定某个用户的目的也能达到,但是会误伤其他用户。
第二种:使用linux容器,例如lxc。耗费空间,设置稍显麻烦。
第三种:使用setfacl命令设定访问控制。
其中,第三个方案是最符合要求的。本文主要讲该方案的具体实现并在我自己的本上测试。我的系统为Linux Mint 15 64位,根目录/使用的是ext4文件系统,/home使用的btrfs文件系统。
安装acl
复制代码代码如下:
sudo apt-get install acl
有资料说是要重启系统,但是测试的时候我发现这个在以前就已经安装好了(不知道是Mint自带了还是我胡乱装的),没有重启依旧有效。
使用setfacl
以root的身份执行下面的命令:
复制代码代码如下:
# mkdir /home/test
# touch /home/test/foo.txt
# vim /home/test/foo.txt
# ls -ld /home/test/
drwxr-xr-x 1 root root 14 Jan 16 09:46 /home/test/
# ls -ld /home/test/foo.txt
-rw-r--r-- 1 root root 6 Jan 16 09:46 /home/test/foo.txt
上面的命令在/home目录下创建目录test,在test目录下创建文件foo.txt,并在foo.txt下随便加了些内容。然后以普通用户letian的身份访问foo.txt,可以读foo.txt。
现在以root身份运行setfacl,使得/home/test目录及其里面的文件和目录不能被letian访问。
咨询记录 · 回答于2022-02-21
作为管理员的root希望自己除自己以外任何人都没有对该文件的权限该如何设置
这里提出三个解决方案。第一种:使用chmod更改特定目录的权限。这能起到限制特定目录被某些人访问的作用,限定某个用户的目的也能达到,但是会误伤其他用户。第二种:使用linux容器,例如lxc。耗费空间,设置稍显麻烦。第三种:使用setfacl命令设定访问控制。其中,第三个方案是最符合要求的。本文主要讲该方案的具体实现并在我自己的本上测试。我的系统为Linux Mint 15 64位,根目录/使用的是ext4文件系统,/home使用的btrfs文件系统。安装acl复制代码代码如下:sudo apt-get install acl有资料说是要重启系统,但是测试的时候我发现这个在以前就已经安装好了(不知道是Mint自带了还是我胡乱装的),没有重启依旧有效。使用setfacl以root的身份执行下面的命令:复制代码代码如下:# mkdir /home/test# touch /home/test/foo.txt# vim /home/test/foo.txt# ls -ld /home/test/drwxr-xr-x 1 root root 14 Jan 16 09:46 /home/test/# ls -ld /home/test/foo.txt-rw-r--r-- 1 root root 6 Jan 16 09:46 /home/test/foo.txt上面的命令在/home目录下创建目录test,在test目录下创建文件foo.txt,并在foo.txt下随便加了些内容。然后以普通用户letian的身份访问foo.txt,可以读foo.txt。现在以root身份运行setfacl,使得/home/test目录及其里面的文件和目录不能被letian访问。
复制代码代码如下:# setfacl -R -m u:letian:- /home/test/-R表示递归,-m表示修改,u:letian:-表示用户(user)letian对/home/test没有任何权限。可以根据需要添加r、w、x及其组合。 我们查看一下test目录的详细信息:复制代码代码如下:# ls -ld /home/test/drwxr-xr-x+ 1 root root 14 Jan 16 09:46 /home/test/文件权限后面出现了一个+号,这说明该文件或者目录设置了ACL。foo.txt的权限信息后面也会有+号。 然后,以letian的身份访问该目录:复制代码代码如下:$ ls /home/testls: cannot open directory /home/test: Permission denied使用getfaclgetfacl用来查看对某个目录/文件设置的acl。复制代码代码如下:$ getfacl /home/test# file: /home/test# owner: root# group: rootuser::rwxuser:letian:---group::r-xmask::r-xother::r-x删除设置的acl复制代码代码如下:# setfacl -b /home/test/# getfacl /home/test# file: /home/test# owner: root# group: rootuser::rwxgroup::r-xother::r-x