Группа может быть установлена из скрипта.Требуется только утверждение «если» ниже.Группа проверяется, и если она неверна, то сценарий перезапускается с помощью команды sg, упомянутой Нейтом.
Используется проверка зацикливания (на случай непредвиденного.)
Для использования простосменить группу с "колеса" на желаемое.Замените раздел "DEMO" обычным кодом.
Читайте дальше, ниже (после сценария.)
#! /bin/sh
#
# If the group(set with NEEDGRP) is already correct, or this code has already
# run, then this section is skipped and the rest of the
# script is run; otherwise sg is called to restart the script with the
# desired group. Assumes the command "id -ng" returns the group.
if ! [ "${SBREADY:=false}" = true -o $(id -ng) = ${NEEDGRP:=wheel} ] ; then
export SBREADY=true
exec sg $NEEDGRP "$0" "$@"
fi
# ---------------------- DEMO: CUT HERE ---------------------------
# This is a demonstration of creating files.
echo HELLO my group is $(id -ng), GID=$(id -g)
# NOTE: files are created with the current group only if the directory
# is not sgid.
# Show current directory and permissions on it
echo
pwd -P
ls -ld .
echo
# Create and list some new files, the remove them.
touch my-$$.{a,b,c}
echo Created my-$$.{a,b,c}...
ls -l my-$$.{a,b,c}
echo
rm -v my-$$.{a,b,c}
Ниже приведены распечатки некоторых тестов, чтобы объяснить, почему просто смена групп может быть недостаточной, чтобы гарантировать, что файлы имеют правогрупповая собственность.Разрешения на доступ к каталогам также вступают в игру.
Этот первый журнал представляет собой результат разрушения в обычном каталоге.Сценарий запускается как пользователь frayser и группа frayser .Файлы создаются с нужной группой.Сравните со следующим списком:
frayser@gentoo ~/src/Answers $ (cd /tmp; $OLDPWD/set-group.sh)
HELLO my group is wheel, GID=10
/tmp
drwxrwxrwt 16 root root 976 Sep 24 04:45 .
Created my-19201.a... my-19201.b... my-19201.c...
-rw-r----- 1 frayser wheel 0 Sep 24 04:53 my-19201.a
-rw-r----- 1 frayser wheel 0 Sep 24 04:53 my-19201.b
-rw-r----- 1 frayser wheel 0 Sep 24 04:53 my-19201.c
removed `my-19201.a'
removed `my-19201.b'
removed `my-19201.c'
Теперь этот следующий запуск происходит в директоре, который sgid"conman", потому что в качестве политики для Управления конфигурациями назначено групповое владение всеми src каталоги. ПРИМЕЧАНИЕ: Файлы наследуют группу каталога.
frayser@gentoo ~/src/Answers $ ./set-group.sh
HELLO my group is wheel, GID=10
/usr/lucho/src/frayser/practice
drwxr-s--- 6 frayser conman 768 Sep 24 04:51 .
Created my-19214.a... my-19214.b... my-19214.c...
-rw-r----- 1 frayser conman 0 Sep 24 04:54 my-19214.a
-rw-r----- 1 frayser conman 0 Sep 24 04:54 my-19214.b
-rw-r----- 1 frayser conman 0 Sep 24 04:54 my-19214.c
removed `my-19214.a'
removed `my-19214.b'
removed `my-19214.c'
frayser@gentoo ~/src/Answers $
Из-за прав доступа к каталогу может потребоваться, чтобы скрипт явно устанавливал разрешения и владельца.