I'm doing a bash shell script and I want to change the default group that new files are created as. I know you use umask
to change the permissions. Is there something for the group?
相关问题
- How to get the return code of a shell script in lu
- Is shmid returned by shmget() unique across proces
- Django check user group permissions
- how to get running process information in java?
- JQ: Select when attribute value exists in a bash a
There are a couple ways to do this:
You can change the default group for all files created in a particular directory by setting the setgid flag on the directory (
chmod g+s _dir_
). New files in the directory will then be created with the group of the directory (set usingchgrp <group> <dir>
). This applies to any program that creates files in the directory.Note that this is automagically inherited for new subdirectories (as of Linux 3.10), however, if sub-directories were already present, this change won't be applied to them (use the
-R
flag for that).If the setgid flag is not set, then the default group will be set to the current group id of the creating process. Although this can be set using the
newgrp
command, that creates a new shell that is difficult to use within a shell script. If you want to execute a particular command (or set of commands) with the changed group, use the commandsg <group> <command>
.sg
is not a POSIX standard command but is available on Linux.New directories created in that session will have the group ID set by the command.
newgrp
(1)