galeb

Једноставна статичка дистрибуција заснована на musl-у
git clone https://git.sr.ht/~strahinja/galeb
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

setperms (1365B)


      1 #!/bin/sh
      2 
      3 . ./lib/env.sh
      4 . ./lib/fun.sh
      5 
      6 permdb=./lib/perms.tsv
      7 
      8 startuid=$(id -u)
      9 
     10 if [ "${startuid}" -ne 0 ]; then
     11 	msg err "You must run this script as root"
     12 	exit 1
     13 fi
     14 
     15 recno=0
     16 (
     17 IFS=$(printf '\n')
     18 while read -r record
     19 do
     20 	recno=$((recno+1))
     21 
     22 	if [ "${recno}" -eq 1 ]; then
     23 		continue
     24 	fi
     25 
     26 	path=$(printf "${record}"	| cut -d  "$(printf '\t')" -f1)
     27 	mode=$(printf "${record}"	| cut -sd "$(printf '\t')" -f2)
     28 	owner=$(printf "${record}"	| cut -sd "$(printf '\t')" -f3)
     29 	group=$(printf "${record}"	| cut -sd "$(printf '\t')" -f4)
     30 
     31 	ownerid=''
     32 	if [ -n "${owner}" ]; then
     33 		ownerid=$(grep "^${owner}:" ${GR}/etc/passwd | cut -d: -f3)
     34 	fi
     35 
     36 	groupid=''
     37 	if [ -n "${group}" ]; then
     38 		groupid=$(grep "^${group}:" ${GR}/etc/group | cut -d: -f3)
     39 	fi
     40 
     41 	if [ -z "${path}" ]; then
     42 		msg warn "Empty path at record #%d; skipping" "${recno}"
     43 		continue
     44 	fi
     45 	#printf "Record #%d: path=[%s] mode=[%s] [%s:%s]\n" \
     46 	#	"${recno}" "${path}" "${mode}" "${owner}" "${group}"
     47 
     48 	if [ "${startuid}" -eq 0 ] &&  [ -n "${owner}" ] \
     49 		&& [ -n "${groupid}" ] && [ -e "${GR}${path}" ]; then
     50 		msg info "chown -h %s:%s %s" "${ownerid}" "${groupid}" \
     51 			"${GR}${path}"
     52 		chown -h ${ownerid}:${groupid} "${GR}${path}" || exit 1
     53 	fi
     54 
     55 	if [ -n "${mode}" ] && [ -e "${GR}${path}" ]; then
     56 		msg info "chmod %s %s" "${mode}" "${GR}${path}"
     57 		chmod "${mode}" "${GR}${path}"
     58 	fi
     59 done <${permdb}
     60 )