Jak odebrat sticky bit u adresářů
Jak odebrat sticky bit s adresářů, co znamenají další bity?
V rámci reorganizace adresářů/souborů ve sdílené složce vznikla potřeba povolit všem uživatelům mající přístup ke složce mazat a přejmenovávat soubory v rámci složky.
Omezení je nastaveno pomocí sticky bitu, který se používá u adresářů k tomu, aby uživatelé s právem zápisu do souborů v adresáři nemohli odstranit soubory, které nevlastní.
Ve výpisu příkazu getfacl je to vidět:
# file: tmp/a/ # owner: michal # group: michal # flags: sst user::rwx group::r-x other::r-x
Řádek 4 určuje setuid (s), setgid (s), a sticky (t) bity. Buď písmeno představující bit, nebo pomlčka (-).
Setuid (s)
Setuid nebo SUID je nastaveno v poli pro spuštění vlastníkem, aby bylo běžným uživatelům umožněno spustit aplikaci převzetím identity vlastníka souboru.
Setgid (s)
Setgid nebo SGID má stejný účel jako setuid, ale souvisí s oprávněními skupiny.
Sticky bit (t)
Sticky bit se u adresářů používá k tomu, aby uživatelé s právem zápisu do souborů v adresáři nemohli odstranit soubory, které nevlastní.
K odebrání sticky bitu se dá použít skript:
#!/bin/bash # Removes sticky bit from a directory (recursivelly) if [ -z "${1}" ]; then echo "Invalid usage. Missing target dir" >&2 exit 2 fi target_dir="${1}" if [ ! -d "${target_dir}" ]; then echo "The target dir ${target_dir} does not exist or is not a directory" >&2 exit 2 fi while read -r dir; do echo "Removing sticky bit from: ${dir}" chmod -t "${dir}" || { echo "Could not remove the sticky bit. Aborted." >&2 exit 1 } done <<< "$(find "${target_dir}" -type d)"