我有 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
权限。home
user1
现在,我想将用户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。