我需要帮助来解决这个问题,我已经尝试了好几次了。创建一个文件 /home/jack/secretf7b079,其中包含字符串 secret5cd51b。确保该文件归 jack 所有。使用组使 cedric 也可以读取该文件,但不能写入。确保 pedri 无法访问该文件。
我已经使用过 jack 用户的代码:
cat > /home/jack/secret7b079 并包含字符串 secret5cd51b。
sudo adduser cedric jack,将用户 cedric 添加到 jack 组。
chmod 640 /home/jack/secret7b079
谢谢!
答案1
不要将 Cedric 添加到群组jack
,因为这是杰克的个人群组。这违反了安全规定。
除此之外,在新版本的Ubuntu中,主账户和文件的默认访问权限将为文件600、文件夹700,即群组和其他人根本无法访问该区域。建议为了安全,因为在以前的版本中,任何人都可以访问(但不能修改)任何人的数据。
您可以在旧版本的 Ubuntu 中为所有不同的主文件夹明确设置此项,如下所示:
sudo chmod --recursive go= /home/
这样做的副作用是,无论你如何在 Jack 的文件夹中设置你的秘密文件,没有人可以访问它。这是一件好事(就像小熊维尼可能会说的那样),既为了安全,也因为 Jack 的文件夹是 Jack 的私人文件。
所以…
正确的方法是创建一个全新的文件夹,不在 Jack 的区域,所有允许的人,且只有允许的人,才能共享。
您可以指定谁可以与专门为此目的而创建的新公共组共享。您将文件的所有权分配给 Jack,他可以写入文件,并将文件的组分配给新的公共组,该组的成员可以读取但不能修改文件。
步骤如下。在本例中,我使用了文件夹/home/secshare
和组名secacc
,但您可以为文件夹和组名选择不同的名称(如果您愿意,它们可以具有相同的名称)。
sudo groupadd secacc # Create the new security group.
sudo mkdir /home/secshare/ # The folder to hold the security file.
sudo chown jack:secacc /home/secshare/ # Jack owns the folder. Group has access.
sudo chmod u=rwx,g=rx,o= /home/secshare/ # Jack: rw. Group: r. Others: none.
# Create the file.
echo secret5cd51b | sudo tee /home/secshare/secret7b079
sudo chmod g=r,o= /home/secshare/secret7b079 # Owner: rw. Group: r. Others: none.
# Assign Jack as the owner, and secacc as the group.
sudo chown jack:secacc /home/secshare/secret7b079
# Double-check permissions.
sudo ls -l --directory /home/secshare/
> drwxr-x--- 2 jack secacc 4096 Feb 8 11:48 /home/secshare/
sudo ls -l /home/secshare/
> -rw-r----- 1 jack secacc 13 Feb 8 11:48 secret7b079
# Assign both Jack and Cedric to the group secacc
sudo usermod --append --groups secacc jack
sudo usermod --append --groups secacc cedric
此时,Jack 可以完全访问该文件夹及其中的文件。
Cedric 属于该组secacc
,因此对该文件夹及其中的文件具有只读访问权限。
Pedri 不属于该组secacc
,因此无权访问该文件夹,也无法访问其中的文件(即使其中的文件对每个人都具有完全读写权限 - 请自行测试)。
答案2
如果您可以使用 ACL:setfacl -m u:cedric:r /home/jack/secretf7b079
- 授予用户cedric
对文件的读取权限。
但听起来你想在 askubuntu 上解决家庭作业 ;)