Problem :
I have to do the following as homework (on Fedora):
- Make 3 groups S,F,A
- add some users to the groups
- Make a file for each group which only the group members can use.
I logged as root and make in desktop a mkdir S F A and with chmod I give wrx in folder and with chgrp give the group A in dir A , but if I log in with a user from group A I cannot see the dir A in desktop, what i doing wrong?
Also, if I have a folder which can only be accessed by members of its group, can I create a subfolder in it and give access to the subfolder to users who are not in the parent folder’s group?
Solution :
The Desktop in Gnome (which I assume you are using) is a subdirectory of the user’s $HOME
, specifically $HOME/Desktop
. So, if you log in as root and create a file or folder on root’s Desktop, other users will not see it on their desktop. Also, root’s $HOME is not accessible to normal users by default.
Instead of creating the directory in root’s Desktop, create it in, for example, user A’s Desktop.
Now, once you have the folders set up, if you want to give access to a subfolder to users who are not in the parent folders group, you will need to allow execution (not read or write) of the parent folder. The only way to access a subfolder is by having execution rights on ts parent. For example, run these commands as root
:
-
Create a folder and give
rwx
rights to the owner and members of its group, and onlyx
permissions to everyone else:mkdir /foo chmod 771 /foo/
-
Create a subdirectory of
/foo
that will be freely accessible to everyone and create a test file in it:mkdir /foo/bar chmod 777 /foo/bar/ touch /foo/bar/file.txt chmod 766 /foo/bar/file.txt
This is what we have created so far:
# ls -l / | grep foo
drwxrwx--x 3 root root 4096 Apr 16 14:31 foo
# ls -l /foo
drwxr--r-- 2 root root 4096 Apr 16 14:31 bar
# ls -l /foo/bar
-rwxrw-rw- 1 root root 0 Apr 16 14:47 file.txt
So, if I now log in with a user not in root
‘s group, I will not be able to read or write to /foo
but I will be able to read and write to /foo/bar
:
$ whoami
terdon
$ groups
users
$ ls /foo
ls: cannot open directory /foo/: Permission denied
$ ls /foo/bar
file.txt
So, to give any kind (read,write or execute) access to a subdirectory, you need to at least have execution rights on the parent folder.