41 lines
900 B
Nix
41 lines
900 B
Nix
|
{ ... }: {
|
||
|
text = ''
|
||
|
# Change file ownership to specified user id and restrict access to him.
|
||
|
# Root user by default. This directory recursively by default.
|
||
|
# Usage: own [USER] [FILES]
|
||
|
function own() {
|
||
|
local IFS=$'\n'
|
||
|
local files=("''${@:2}")
|
||
|
local user="''${1}"
|
||
|
local group="''${1}"
|
||
|
|
||
|
# default to current dir.
|
||
|
if [ "''${files[*]}" = "" ]; then
|
||
|
files=(".")
|
||
|
fi
|
||
|
|
||
|
# default to current user.
|
||
|
if [ "''${user}" = "" ]; then
|
||
|
user="''${UID}"
|
||
|
fi
|
||
|
|
||
|
# If not root, default to users group.
|
||
|
[[ "''${user}" = 0 ]] && group="0" || group="100"
|
||
|
|
||
|
for file in "''${files[@]}"; do
|
||
|
# set ownership.
|
||
|
chown "''${user}":"''${group}" -R "''${file}" &> /dev/null
|
||
|
|
||
|
# remove access from group and others.
|
||
|
chmod -077 -R "''${file}"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
function _complete_own() {
|
||
|
_autocomplete_first_ls $(_get_users)
|
||
|
}
|
||
|
|
||
|
complete -F _complete_own own
|
||
|
'';
|
||
|
}
|