В корневом каталоге новых пользователей создают подкаталог с определенной группой и полномочиями

Я взял это в качестве проблемы остроты :) Во-первых, установите тестовый сценарий:

$ for d in foo Bar eVe; do mkdir -p dcthis/$d; touch dcthis/a${d}.txt; done
$ ls dcthis/
Bar     aBar.txt    aeVe.txt    afoo.txt    eVe     foo

Я использую find определить каталоги с прописными буквами и затем downcase их через sh -c 'mv {} echo {} | tr [:upper:] [:lower:]'. Угадайте использование sh -c немного выхода взлома, но моя голова всегда взрывается, когда я пытаюсь выйти из вещей для find непосредственно.

$ (cd dcthis && find . -maxdepth 1 -type d -path '*[A-Z]*' -exec sh -c 'mv {} `echo {} | tr [:upper:] [:lower:]`' \;)
$ ls dcthis/
aBar.txt    aeVe.txt    afoo.txt    bar     eve     foo

Будьте осторожны: Это решение не проверяет, приводит ли downcasing к коллизиям!

3
14.02.2011, 02:49
2 ответа

Принятие Вы используете adduser для создания пользователя это сделает большую часть задания, предполагая создание каталога /etc/skel/MyStevedore с Вашими желаемыми полномочиями. Однако в большинстве систем ~/MyStevedore будет всегда принадлежать основной группе пользователя.

На Debian и производных (включая Ubuntu), однажды adduser создал пользователя, это звонит /usr/local/sbin/adduser.local если это существует. Можно использовать его для завершения задания.

#!/bin/sh
username=$1 uid=$2 gid=$3 home_dir=$4
if [ -d "$home_dir/MyStevedore" ]; then
  chgrp stevedore "$home_dir/MyStevedore"
fi
2
27.01.2020, 21:24

Вы могли добавить, если оператор к .bash_profile сценарию в/etc/skel, который проверит, существует ли папка. Если это не будет существовать, то это создаст его и установит полномочия.

В первый раз, когда новый пользователь входит в систему, папка будет создана.

1
27.01.2020, 21:24

Теги

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