是否有像 diff 这样的 Linux 工具可以递归比较文件和目录,但还增加了比较:扩展属性、acl、se 上下文?
首先我创建一个文件并检查它的标准权限和 ACL 条目:
$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--
Run Code Online (Sandbox Code Playgroud)
然后我在文件上设置 ACL 掩码并再次检查它的标准权限和 ACL 条目:
$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--
Run Code Online (Sandbox Code Playgroud)
请注意,随着 ACL 掩码标准组对文件的权限也发生了变化。
有问题的发行版是 Debian Linux 7.6 和 …
我想授予用户在特定目录中创建和读取文件的权限,但不能修改或删除文件。如果用户可以附加到文件,那是可以的,但我宁愿不这样做。这是在 Ubuntu Linux 上。
我认为这对于标准的 Unix 文件权限是不可能的,但也许使用 ACL 可以做到?用户将始终使用 SFTP 进行连接,因此如果有某种方法可以在 SFTP 中控制它(而不是操作系统权限),那就没问题了。
绝对清楚,我想要以下内容:
如果您想知道我为什么要这样做,那是为了使 Duplicati 备份系统能够抵御勒索软件。
umask如果激活 ACL,有人可以向我解释如何影响新创建文件的默认掩码吗?是否有一些关于此的文档?
例子:
$ mkdir test_dir && cd test_dir
$ setfacl -m d:someuser:rwx -m u:someuser:rwx . # give access to some user
$ getfacl .
# file: .
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:someuser:rwx
default:group::---
default:mask::rwx
default:other::---
$ umask # show my umask
077
$ echo "main(){}" > x.c # minimal C program
$ make x # build it
cc x.c -o x
$ getfacl x
# file: x
# owner: myUsername …Run Code Online (Sandbox Code Playgroud) 看到getfacl没有错误就足够了,还是我必须检查其他地方以查看文件系统是否支持 ACL?
使用这篇有用的帖子,我可以在文件夹中设置默认组和文件权限。
我在设置默认所有者 (teamlead uid 1234) 时遇到问题。
setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder
getfacl /my/test/folder
# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)
接着就,随即:
[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov 6 08:58 somefile
Run Code Online (Sandbox Code Playgroud)
因此分配了正确的组,但新文件拥有创建文件的用户的所有权。我希望新创建的文件具有 teamlead:web_prod 所有者/组。
似乎setfacl也可以用来设置默认用户。使用现有文件夹 acl config(上图):
[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder
Run Code Online (Sandbox Code Playgroud)
现在以不同的用户身份创建一个文件。我希望它拥有 teamlead:web_prod 所有权。
[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary …Run Code Online (Sandbox Code Playgroud) 我运行以下命令以授予wheel组rwx对创建的新文件和子目录的权限:
[belmin@server1]$ ls -la
total 24
drwxr-sr-x+ 2 guards guards 4096 Aug 27 15:30 .
drwxr-xr-x 104 root root 12288 Aug 27 15:19 ..
[belmin@server1]$ sudo setfacl -m d:g:wheel:rwX .
[belmin@server1]$ getfacl .
# file: .
# owner: guards
# group: guards
# flags: -s-
user::rwx
group::r-x
group:wheel:rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:wheel:rwx
default:mask::rwx
default:other::r-x
Run Code Online (Sandbox Code Playgroud)
但是,当我以 root 身份创建文件时,我并不完全清楚effective权限是如何计算的:
[belmin@server1]$ sudo touch foo
[belmin@server1]$ getfacl foo
# file: foo
# owner: root
# group: guards
user::rw- …Run Code Online (Sandbox Code Playgroud) 我想使用 setfacl 以便“app”组中的任何人都可以编辑 /usr/local/users/app 中包含的任何文件,而不管传统的 UNIX 权限是什么。我有两个用户约翰和本。我试图按照另一个问题的说明进行操作,但 john 无法写入某些文件。看起来这是因为 acl 掩码。但是,我已经在 rwx 的目录上设置了默认掩码,所以其中的文件在创建时不应该继承吗?
例如,john 无法写入下面的文件,但他是“app”组的成员,该组在文件上写入了 acl,所以我很惊讶他无法编辑该文件。
ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
-rw-r--r--+ 1 ben users 38326 Apr 2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx #effective:r-x
group:app:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x
ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx #effective:r--
group:app:rwx #effective:r--
mask::r--
other::r--
Run Code Online (Sandbox Code Playgroud) 我正在学习 CentOS/Red Hat 6 的 ACL;当我getfacl使用绝对路径运行时,我得到了输出:
getfacl:从绝对路径名中删除前导“/”
为什么需要这样做?在什么情况下需要使用-por--absolute-names开关?
我的 Wale Soyinka 和 Michael Jang 的书甚至没有提到这一点,我在手册页中没有看到任何线索,而且我似乎找不到任何直接解决此警告的网站。
该命令setfacl -dm g::rwx mydir将组的权限设置为读写执行。我想运行一个类似的命令,以便其他用户(即不是所有者)没有任何访问权限,但setfacl -dm o:: mydir抱怨该选项-m不完整。表达这一点的正确方式是什么?