Existe-t-il un moyen d'autoriser l'utilisateur à exécuter des commandes pendant 2 jours seulement

13

Comment donner une autorisation de commande sudo pour une heure spécifique? existe-t-il un moyen de donner des droits pour exécuter une commande spécifique pendant 2 jours uniquement dans le fichier sudoers.?

Abbas Kapasi
la source

Réponses:

18

Le fichier sudoers ne prend pas en charge la restriction basée sur le temps mais il existe une méthode simple. Créez un fichier avec vos modifications dans /etc/sudoers.d/(avec sudo visudo -f /etc/sudoers.d/yourfile):

Ajoutez à un fichier (exemple:) file.shce qui suit

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

Et cela désactivera vos modifications:

 sudo at -f file.sh 2pm + 2 days

Exemple:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

Dans ce cas, il déplacerait le fichier à 14 h 2 jours après l'émission de la commande. Le at manuel a quelques options (vous pouvez utiliser une heure, des jours, des semaines, des mois, des années, des mots clés comme suivant ou ajouter / soustraire des périodes). Faites des tests avec l'option pour vous assurer de bien la comprendre (quelque chose à considérer: cela importe si vous commencez atavant ou après 14 heures le jour même.)

atsurvit également aux redémarrages, c'est donc un bon outil à utiliser pour ce genre de choses. Et vous pouvez basculer l'accès ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

et rendre cet utilisateur fou (wtf maintenant je peux le faire).

Le README en /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

Si je le lis correctement, il n'exécutera aucun fichier avec un "." n'importe où dans le nom. Donc, la 1ère mvcommande, j'ai placé le "." devant le rendant également invisible. S'il est correctement supposé, vous pouvez placer un "." nulle part. Attention au "~", celui-ci est utilisé comme fonction de "sauvegarde" par des éditeurs comme gEdit.


atn'est pas installé par défaut. À installer

sudo apt-get install at
Rinzwind
la source
Merci, j'y ai déjà pensé mais la situation est que plusieurs utilisateurs utilisent le fichier à leurs propres fins, il n'est donc pas possible de sauvegarder et de restaurer le fichier sudoers à chaque fois que bcoz d'autres utilisateurs modifient également le même fichier sudoers donc quand je restaure l'ancien fichier tous les les modifications apportées par d'autres utilisateurs auront disparu ...
Abbas Kapasi
2
Et ce monsieur? Oh et je pourrais suggérer à vos multiples utilisateurs d'utiliser eux-mêmes le sudoers.d avec leur propre nom de fichier. Semble beaucoup mieux que l'édition de sudoers.
Rinzwind,
@AbbasKapasi crée un nouveau fichier /etc/sudoers.dqui ne sera pas utilisé par vos autres utilisateurs.
muru
Je pense que la commande utilisée tout au long de la réponse aurait dû l'être mv, non cp.
Cthulhu du
3
où voyez-vous cp? siffle innocemment
Rinzwind