Действительно ли возможно иметь bashrc для группы пользователей?

Можно также использовать timeout управляйте для блокирования процесса от выполнения для дольше, чем указанное количество времени.

пример

$ date
Mon May  6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May  6 07:35:14 EDT 2013

См. страницу справочника тайм-аута для получения дальнейшей информации.

5
26.07.2014, 12:13
4 ответа
[

] В /etc/profile add:[

] [
if [ `id -ng` = "the_cool_group" ] ; then
    # do stuff for people in the_cool_group
fi
]
4
27.01.2020, 20:36

/etc/профиль виден всем пользователям. ~/.profile видит один пользователь, входящий в систему: это файл в домашнем каталоге пользователя, и каждый пользователь имеет свой собственный каталог; программа входа устанавливает переменную окружения HOME в путь к домашнему каталогу пользователя. То же самое касается и других файлов, таких как /etc/bash.bashrc и ~/.bashrc - многие приложения имеют общесистемный конфигурационный файл под /etc и конфигурационный файл для каждого пользователя в домашнем каталоге пользователя.

Для групп нет подобного механизма - у групп нет домашнего каталога. Таким образом, нет простого способа применить конфигурационный файл ко всем пользователям в группе.

Как показали другие ответы, вы можете добавлять команды в общесистемный файл инициализации оболочки внутри условного оператора, чтобы запускать их только в том случае, если пользователь принадлежит к определенной группе. Обратите внимание, что пользователь может принадлежать к нескольким группам. Вы сами решаете, хотите ли вы запускать команды только в том случае, если группа является основной группой пользователя или когда пользователь принадлежит к этой группе.

case "$(id -gn)" in
  foo) somecommand;; # the user's primary group is foo
esac
case ":$(id -Gn | tr \\n :)" in
  *:foo:*) somecommand;; # the user belongs to the group foo
esac

О разнице между .profile и .bashrc, смотрите Есть ли эквивалент ".bashrc" файла, который читают все оболочки?

2
27.01.2020, 20:36

Вы можете добавить что-то вроде этого в /etc/bash.bashrc :

# running group-based bashrcs

for group in $(id -Gn); do
  group_bashrc=/etc/bashrc-by-group/$group
  if [ -f "$group_bashrc" ] && [ -r "$group_bashrc" ]; then
    command . "$group_bashrc"
  fi
done

Затем вы можете создать / etc / bashrc-by-group / mygroup и поместите туда инициализации для членов группы mygroup .

Это предполагает, что ваши группы хорошо приручены: имена групп не содержат пробелов, косых черт или подстановочных знаков, это не . или .. , и что у вас есть взаимно однозначное соответствие между именем группы и идентификатором группы. Если нет, вы можете использовать id -G вместо id -Gn и использовать / etc / bashrc-by-group / groupid .

2
27.01.2020, 20:36

Вы также можете добавить к/etc/profile.d/yourscript.sh:

echo " $(groups) "|fgrep -q ' group '
if [ $? = 0 ] ; then
  test -r /path/.group_profile && source /path/.group_profile
fi

Это может быть проще, чем изменение самого файла profile.

0
30.09.2020, 14:17

Теги

Похожие вопросы