From feabc11f7da0743504e933f80647876245f7817d Mon Sep 17 00:00:00 2001 From: Olga Kamaeva Date: Fri, 20 Sep 2024 17:32:56 +0400 Subject: [PATCH 1/3] Add function for using verbose --- samba_allow_nsupdate | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/samba_allow_nsupdate b/samba_allow_nsupdate index da6b13b..0076b58 100755 --- a/samba_allow_nsupdate +++ b/samba_allow_nsupdate @@ -2,6 +2,8 @@ set -euo pipefail # shellcheck source=/bin/shell-getopt +# disable /bin/shell-getopt error +# shellcheck disable=SC1091 . shell-getopt # main options @@ -75,6 +77,12 @@ set_domain_base_dn() { DOMAIN_DN="$1" } +log_verbose() { + if [ -n "$VERBOSE" ]; then + echo "[VERBOSE] $1" + fi +} + while :; do case "$1" in -h|--help) show_usage @@ -108,10 +116,12 @@ done COMPUTERS_LIST_PARAMS="$*" generate_defaults() { + log_verbose "Generating default values for DOMAIN_DNS and DOMAIN_DN..." [ -z "$DOMAIN_DNS" ] && DOMAIN_DNS="$(samba-tool domain info 127.0.0.1 | grep Domain | sed "s/.*: //")" [ -z "$DOMAIN_DN" ] && DOMAIN_DN="DC=$(echo "$DOMAIN_DNS" | sed "s/\./,DC=/g" | sed "s/,DC=$//")" [ -z "$COMPUTERS_BASE_DN" ] && COMPUTERS_BASE_DN="$DOMAIN_DN" # "DC=domain,DC=alt" OBJECT_BASE_DN="DC=$DOMAIN_DNS,CN=MicrosoftDNS,DC=DomainDnsZones,$DOMAIN_DN" + log_verbose "DOMAIN_DNS=$DOMAIN_DNS, DOMAIN_DN=$DOMAIN_DN, COMPUTERS_BASE_DN=$COMPUTERS_BASE_DN" } generate_computers_list() { @@ -124,10 +134,14 @@ generate_computers_list() { fi } + checks() { local ret=0 + log_verbose "Checking for Kerberos ticket..." klist >/dev/null 2>&1 || ( echo "Error: administrator account kerberos ticket required" && exit 1) + log_verbose "Checking for samba-tool..." samba-tool -V >/dev/null 2>&1 || ( echo "Error: samba-tool not installed" && exit 1) + log_verbose "Checking if running on a domain controller..." samba-tool domain info 127.0.0.1 >/dev/null 2>&1 || ( echo "Error: not a domain controller" && exit 1) } @@ -176,6 +190,7 @@ main() { for computer in "${COMPUTERS_LIST[@]}"; do ret=0 computer_sid="$(get_computer_sid "$computer")" + log_verbose "Setting DNS dsacl for $computer with SID $computer_sid..." set_dns_dsacl "$ACTION" "$computer" "$computer_sid" || ret=1 echo -e -n "$computer\t\t\t$computer_sid\t" if [[ $ret == 0 ]]; then From d395b83738f85acf01bbd399729e56c93516b3be Mon Sep 17 00:00:00 2001 From: Olga Kamaeva Date: Fri, 20 Sep 2024 17:34:15 +0400 Subject: [PATCH 2/3] Add man pages --- doc/samba_allow_nsupdate.1 | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 doc/samba_allow_nsupdate.1 diff --git a/doc/samba_allow_nsupdate.1 b/doc/samba_allow_nsupdate.1 new file mode 100644 index 0000000..bd28be3 --- /dev/null +++ b/doc/samba_allow_nsupdate.1 @@ -0,0 +1,54 @@ +.TH "SAMBA_ALLOW_NSUPDATE" "1" "Septemper 2024" "samba\-allow\-nsupdate" "Справка по samba_allow_nsupdate" +.SH НАЗВАНИЕ +.B samba\-allow\-nsupdate +\- утилита для управления правами компьютеров в домене на обновление их DNS-записей. + +.SH СИНТАКСИС +.B samba\-allow\-nsupdate +[\fI\,options\/\fR] [\fI\, ...\/\fR] + +.SH ОПИСАНИЕ +.B samba\-allow\-nsupdate +устанавливает права для компьютеров в домене на обновление их DNS-записей. +.br +Утилита позволяет выбрать как конкретные компьютеры по их имени или SID (объектный идентификатор), так и все компьютеры в домене, и разрешить или запретить им обновлять свои DNS-записи в зоне DNS. +.br +Если список компьютеров не указан, утилита автоматически применяет действие ко всем компьютерам, найденным в указанном базовом DN (Distinguished Name) в домене. +.br +.SH ПАРАМЕТРЫ +.TP +.B \-h, \-\-help +Показать справку. +.TP +.B \-v, \-\-version +Вывести версию. +.TP +.B \-a, \-\-action=ACTION +Указать действие: allow для разрешения обновления DNS-записей или deny для запрета. По умолчанию установлено allow. +.TP +.B \-в, \-\-computers\-base\-dn=BASE_DN +Указать базовый DN (Distinguished Name) для поиска компьютеров. +.TP +.B \-n, \-\-domain-dns=DOMAIN_DNS +Указать имя домена DNS. Если не указано, доменное имя будет автоматически получено с помощью команды samba-tool domain info. +.TP +.B \-e, \-\-domain-base-dn=DOMAIN_DN +Указать базовый DN домена. Если не указано, будет сгенерировано автоматически из доменного имени. +.TP +.B \-y, \-\-yes +Не запрашивать подтверждения перед выполнением изменений. +.TP +.B \-v, \-\-verbose +Включить подробный вывод информации в процессе выполнения скрипта. +.TP +.SH АВТОРЫ +Андрей Лимачко +.br +Ольга Камаева + +.SH АВТОРСКИЕ ПРАВА +Авторское право \(co 2024 Андрей Лимачко +.br +Авторское право \(co 2024 Ольга Камаева +.br +Это бесплатное программное обеспечение; условия копирования приведены в источнике. Нет НИКАКИХ гарантий, даже на КОММЕРЧЕСКУЮ пригодность или ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. \ No newline at end of file From 6b99b6a5fbdc3f6bdf6f9dabbe5046466819f7e4 Mon Sep 17 00:00:00 2001 From: Olga Kamaeva Date: Fri, 20 Sep 2024 17:34:56 +0400 Subject: [PATCH 3/3] Add spec file --- .gear/rules | 2 ++ .gear/samba_allow_nsupdate.spec | 41 +++++++++++++++++++++++++++++++++ doc/samba_allow_nsupdate.1 | 6 ++--- 3 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 .gear/rules create mode 100644 .gear/samba_allow_nsupdate.spec diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..f95004e --- /dev/null +++ b/.gear/rules @@ -0,0 +1,2 @@ +tar: . +spec: .gear/samba_allow_nsupdate.spec \ No newline at end of file diff --git a/.gear/samba_allow_nsupdate.spec b/.gear/samba_allow_nsupdate.spec new file mode 100644 index 0000000..bac032c --- /dev/null +++ b/.gear/samba_allow_nsupdate.spec @@ -0,0 +1,41 @@ +%define script_name samba_allow_nsupdate + +Name: samba_allow_nsupdate +Version: 0.1 +Release: alt1 + +Summary: Utility for managing the rights of domain computers to their DNS records +License: GPLv3 +URL: https://github.com/altlinuxteam/samba_allow_nsupdate +VCS: https://github.com/altlinuxteam/samba_allow_nsupdate + +BuildArch: noarch +Group: System/Configuration/Networking +Source: %name-%version.tar + +BuildRequires: shellcheck + + +%description +The %{name} utility allows setting permissions for domain computers +on their DNS records. You can select either individual computers +by their names or SIDs or allow all computers in the domain to update +their DNS records. + +%prep +%setup + +%install +install -Dm 755 %script_name %buildroot/%_bindir/%script_name +install -Dm 644 doc/samba_allow_nsupdate.1 %buildroot/%_man1dir/samba_allow_nsupdate.1 + +%check +shellcheck %script_name + +%files +%_bindir/%script_name +%_man1dir/samba_allow_nsupdate.1.* + +%changelog +* Thu Sep 12 2024 Your Name 0.1-alt1 +- Initial release. \ No newline at end of file diff --git a/doc/samba_allow_nsupdate.1 b/doc/samba_allow_nsupdate.1 index bd28be3..fc7a99c 100644 --- a/doc/samba_allow_nsupdate.1 +++ b/doc/samba_allow_nsupdate.1 @@ -1,7 +1,7 @@ .TH "SAMBA_ALLOW_NSUPDATE" "1" "Septemper 2024" "samba\-allow\-nsupdate" "Справка по samba_allow_nsupdate" .SH НАЗВАНИЕ .B samba\-allow\-nsupdate -\- утилита для управления правами компьютеров в домене на обновление их DNS-записей. +\- утилита для управления правами доменных компьютеров на их DNS-записи. .SH СИНТАКСИС .B samba\-allow\-nsupdate @@ -9,7 +9,7 @@ .SH ОПИСАНИЕ .B samba\-allow\-nsupdate -устанавливает права для компьютеров в домене на обновление их DNS-записей. +устанавливает права для компьютеров в домене на их DNS-записи. .br Утилита позволяет выбрать как конкретные компьютеры по их имени или SID (объектный идентификатор), так и все компьютеры в домене, и разрешить или запретить им обновлять свои DNS-записи в зоне DNS. .br @@ -24,7 +24,7 @@ Вывести версию. .TP .B \-a, \-\-action=ACTION -Указать действие: allow для разрешения обновления DNS-записей или deny для запрета. По умолчанию установлено allow. +Указать действие: allow для разрешения или deny для запрета. По умолчанию установлено allow. .TP .B \-в, \-\-computers\-base\-dn=BASE_DN Указать базовый DN (Distinguished Name) для поиска компьютеров.