En Linux, los privilegios de root se dividieron en un momento en "capacidades", por lo que puede obtener una lista completa de los privilegios especiales de root al consultar esa documentación:man 7 capabilities
.
Para responder a su pregunta, un comando requerirá ejecutarse como root cuando necesite uno de estos privilegios, y su script ejecutable no -no tiene la capacidad relevante establecida en sus metadatos de archivo (, p. si un script de python requiere la capacidad, entonces la capacidad debería estar en el intérprete de python especificado en la línea shebang ).
Tenga en cuenta que algunos comandos que necesitan acceso de root no necesitan algo como sudo
porque tienen el bit SUID establecido en su ejecutable. Este bit hace que el ejecutable se ejecute como el propietario (, normalmente root )cuando lo ejecuta cualquier persona que tenga acceso de ejecución. Un ejemplo es sudo
mismo, ya que cambiar de usuario es una acción privilegiada que debe realizar.
EDITAR :Observo de su pregunta que es posible que tenga la idea de que puede determinar si un comando necesitará acceso de root antes de ejecutarlo. Ese no es el caso.Un programa a veces puede requerir privilegios de root y otras veces no, y esto podría ser una decisión tomada por el programa debido a los datos que se proporcionan durante el tiempo de ejecución. Tomemos, por ejemplo, llamar a vim
, así sin argumentos, y luego a través de una serie de pulsaciones de teclas y pegado, diciéndole que escriba algo en un archivo que no tiene permiso para escribir, o tal vez ejecutando otro comando que requerirá root privilegios. Nada sobre el comando antes de ejecutarlo podría indicar que eventualmente requeriría acceso de root. Eso es algo que solo se puede determinar en el momento en que intenta hacer algo que lo requiere.
De todos modos, aquí hay muy pocos ejemplos de la página de manual referenciada de los privilegios de root:
Поскольку вы хотите удалить файлы только из самого каталога /CT
, это можно сделать без какой-либо ссылки на sudo
.
Первоначально вам нужно установить права собственности и разрешения группы как root:
chgrp wheel /CT
chmod g+rwx /CT
Теперь пользователи в группе wheel
имеют право (создавать и )удалять любые файлы в этом каталоге без использованияsudo
:
rm -f /CT/unwanted.txt
Ваша команда позволяет пользователям группы wheel запускать rm /CT/
. Больше ничего. Не меньше.
Вы можете попробовать это, что позволит пользователям удалять /CT/
и все, что внутри него, при условии, что они используют точно такие же флаги, как указано здесь:
%wheel ALL=(ALL) /bin/rm -rf /CT/*
Я обычно предпочитаю для управления sudo
написать сценарий, который проверяет аргументы, и разрешать этот сценарий через sudo
.Возможно, будет достаточно чего-то вроде этого, который проверяет, что целью является файл внутри папки/CT
#!/bin/bash
#
ss=0
for item in "$@"
do
real=$(readlink "$item")
if [[ "$real" =~ ^/CT/. ]] && [[ -f "$real" ]]
then
rm -f -- "$item"
else
[[ -t 2 ]] && echo "Refusing to remove '$item'" >&2
ss=1
fi
done
exit $ss
Вы можете добавить другие условия, требующие, чтобы цель была каталогом, имела конкретного владельца и т. д.