如何对用户进行分组以向组中的每个用户授予相似的文件权限

如何对用户进行分组以向组中的每个用户授予相似的文件权限

我有 2 个用户user1,并且user2在我的 Ubuntu PC 上。user1是我在安装过程中创建的。我创建了user2一个执行 python 程序。现在,该程序出现在路径中/home/user1/programs/。因此,user2正在执行位于 .home 目录中的程序user1。在执行过程中,我无法在输出目录中创建文件/home/user1/programs/Output/。因此,我继续检查权限并发现以下内容:

$ ls -l /home/user1/programs/
drwxrwxr-x 10 user1 user1 4096 Sep  6 11:30 Output
drwxrwxr-x  2 user1 user1 4096 Sep  5 17:50 source

$ cd Output

$ mkdir dummy1

$ ls -l
drwxrwxr-x 2 user1  user1  4096 Sep  6 11:30 dummy1

$ cd dummy1

$ vi a.txt

$ ls -l
-rw-rw-r-- 1 user1 user1 7 Sep  6 11:31 a.txt

$ cd ..

$ sudo mkdir dummy2

$ ls -l
drwxr-xr-x 2 root root 4096 Sep  6 12:37 dummy2

很明显,其他用户(如)在. 目录中user2没有write权限。homeuser1

现在,我想将用户user1和添加user2到具有相同权限的同一组中,以便user2可以获得rwx (7)?如何创建这样一个群组?

答案1

sudo -i
addgroup mygroup
addgroup user1 mygroup
addgroup user2 mygroup
chgrp -R mygroup /home/user1/programs/Output/
chmod -R ug+rwX  /home/user1/programs/Output/
find /home/user1/programs/Output/ -type d -exec chmod g+s {} +
exit

这将添加一个名为 的组,将两个用户添加到该组,并将(以及所有文件和子目录)mygroup的组所有权更改为。/home/user1/programs/Output/mygroup

然后设置该目录的读、写、执行权限以及其中的所有文件允许读和写。同样,这会递归地应用于../Output/

最后,它在目录上设置 setgid 位,chmod g+s以便在下面创建的所有文件和子目录/home/user1/programs/Output/都将位于mygroup.

所有这些都需要以 root 身份完成,因此sudo -i首先启动 root shell,最后exit退出 root shell。

相关内容