該組可以從腳本中設置。它只需要下面的「if」 聲明。該組被檢查並且如果它不正確,那麼 腳本將使用s命令Nate提到的重新啓動。
使用循環檢查(以防萬一不可預見的情況發生)。
要使用,只需將組從「wheel」更改爲所需的組。用常規代碼替換「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" "[email protected]"
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運行。使用所需的組創建文件 。比較下一個清單:
[email protected] ~/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「賭俠」,因爲作爲一種政策,配置管理被賦予所有SRC目錄的組所有權。 注意:這些文件繼承了該目錄的組。
[email protected] ~/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'
[email protected] ~/src/Answers $
因爲目錄的權限,它可能爲一個腳本來 明確設置權限和所有權是必要的。
沒有系統,我現在手中的根目前來測試(我目前的帳戶只有一個組)。嘗試'chgrp groupb myscript.sh' +'chmod g + s myscript.sh'。這應該會更改腳本運行的組標識 - 並且希望在創建新文件時使用該組。 – Dummy00001 2010-09-17 13:58:12