[Resolu] Créer Alias (Bash Sudoers): Exemples de commandes

Bonsoir,
J’aimerai créer un alias de commande bash que je vais pouvoir répercuter dans /etc/sudoers :
Je voudrais editer, avec nano, /var/log/syslog.
Dans un premier temps, j’ai fait :

[code]$ sudo visudo

ajout des lignes suivantes

Cmnd_Alias NANO=/usr/bin/nano

plus loin

username NOPASSWD:NANO

je quitte

$ sudo -v
$ sudo nano /var/log/syslog[/code]
et je peux lire syslog en user … ok, mais je veux remplacer nano /var/log/syslog par un alias, pour ne pas que sudo autorise username à éditer n’importe quel fichier root.
En lisant le topic alias là, je veux utiliser un fichier ~/.bash_aliases. Mais, est ce que je suis obligé de créer un script, un fichier exécutable ?
Où est ce que je peux définir un alias comme ça :

[quote]alias syslogv=‘nano /var/log/syslog’[/quote] ?
Je voudrai pouvoir faire :

Est ce que c’est correct ?
Et comment faut il modifier /etc/sudoers dans ce cas ?

hello,

Oui c’est possible seulement tes alias faudrait les definir dans le fichier /etc/profile parce que ~/.bash_alias est propre a chaque user.

mais pourquoi veux tu editer le syslog ?
Quel besoin de le modifier ?
tu peux donner l’accés en lecture à un de tes utilisateurs, déjà, en l’ajoutant au groupe adm, mais ça lui donne le droit de lire les autres logs.

Sinon, de toutes les manières il te suffit de faire un script “syslogview” que tu ranges par exemple dans /usr/local/bin, que tu rends executable, et qui fait juste#!/bin/sh nano /var/log/syslog
Ensuite tu donnes à ton user le droit de lancer le script avec sudo et roule.

J’ai ptet zappé un truc mais c’est hyper dangereux ca?
Avec ca, ton user peut editer n’importe quel fichier!! (vmlinuz par exemple)
Nan parceque l’alias ca securise rien…

Alors que la methode de Matt ca limite les degats!

Et même je vois pas l’utilité de modifier le fichier syslog :question:

slt,

Pas du tout, ca ne fait que lire syslog avec nano, il y a aucun moyen de detourner les alias.

Ne pas les utiliser? Si on parle bien des alias bash?

Merci à vous,
j’ai un peu ramer dessus cette nuit, et avant de montrer ce que j’ai fait, quelques questions concernant vos réponses :

/etc/profile est le fichier où sont définis les alias du systeme, utilisable par root du moins ? je ne crois pas, la commande alias ne m’a retourné le nouvel alias que lorsque je l’ai eu placé dans # ~/.bashrc
A ce propos, si les modifications des ces fichiers (.bashrc ou profile) appellent une commande particulière pour être prises en compte, est-ce bash -v ?

-[quote=“MattOTop”]mais pourquoi veux tu editer le syslog ?
Quel besoin de le modifier ?
tu peux donner l’accés en lecture à un de tes utilisateurs, déjà, en l’ajoutant au groupe adm, mais ça lui donne le droit de lire les autres logs.[/quote]
J’aime bien éditer, syslog n’est qu’une hypothèse de travail, mais je n’ai aucun besoin de le modifier … le but est plutot d’apprendre à maitriser un peu mieux :

  • sudo
  • les alias
  • bash
  • les droits
    et d’être en mesure d’autoriser un utilisateur via sudo à une action particulière et exceptionnelle … surtout pas élargie à l’ensemble des logs par exemple ( c’est pourquoi je ne veux pas inclure l’user dans ADM).

Je vois pas trop à quoi sert ce répertoire,vu que à chaque reboot, le fichier est détruit … je l’ai finalement créé dans /.scripts/syslogv.sh.
Mais je vais le mettre dans /usr/local/bin
Mais pour l’instant, voilà où j’en suis :

[quote]jcode@debian:~$ su
Password:
syslogv en root fonctionne, j’édite syslog
debian:/home/jcode# syslogv
debian:/home/jcode# su jcode
syslogv en user fonctionne pas, normal
jcode@debian:~$ syslogv
/.scripts/syslogv.sh: /.scripts/syslogv.sh: Permission non accordée
jcode@debian:~$ sudo syslogv
un blem, j’ai spécifié nopasswd pour syslogv dans sudoers …
j’entre le password de l’user , mais celui de root, ça veut pas non plus
Password:
sudo: syslogv: command not found
jcode@debian:~$ sudo syslogv
sudo: syslogv: command not found
normal
jcode@debian:~$ /bin/bash /.scripts/syslogv.sh
/.scripts/syslogv.sh: /.scripts/syslogv.sh: Permission non accordée
là ça marche .
jcode@debian:~$ sudo /bin/bash /.scripts/syslogv.sh
jcode@debian:~$
[/quote]
Si sudo syslogv n’ai pas reconnu, ça viendrait de sudoers ?

[quote]# /etc/sudoers

This file MUST be edited with the ‘visudo’ command as root.

See the man page for details on how to write a sudoers file.

Host alias specification

Host_Alias LOCALNET=localhost.localdomain

User alias specification

User_Alias ADMIN=jcode

Cmnd alias specification

Cmnd_Alias VISUDO=/usr/sbin/visudo
Cmnd_Alias MODINFO=/sbin/modinfo
Cmnd_Alias HALT=/sbin/halt
Cmnd_Alias TAIL=/usr/bin/tail
Cmnd_Alias ALSACONF=/usr/sbin/alsaconf
Cmnd_Alias FIRESTARTER=/usr/sbin/firestarter
Cmnd_Alias DEBIAN_TOOLS=/usr/bin/apt-get,/usr/bin/auto-apt,/usr/bin/dpkg,/usr/bin/dselect,/usr/sbin/dpkg-reconfigure
Cmnd_Alias SYSLOGV=/bin/bash /.scripts/syslogv.sh

User privilege specification

root ALL=(ALL) ALL
ADMIN LOCALNET=NOPASSWD:SYSLOGV,NOPASSWD:DEBIAN_TOOLS,NOPASSWD:FIRESTARTER,
NOPASSWD:VISUDO,NOPASSWD:HALT,NOPASSWD:MODINFO,NOPASSWD:TAIL,NOPASSWD:ALSACONF[/quote]
:confused: :confused:
ps: il y a des alias de commande inutils ici, des vieux essais ;…

slt,

C’est super simple penche sur les fichiers que bash lit pendant son lançement, c’est pour ça que je tes dis /etc/profile, pour répondre a boris c’est un alias du genre syslogv=nano /var/log/syslog et pas un alias direct de nano.

Ah tu parles d’un alias a mettre dans sudoers? Dans ce cas, j’ai rien dit!!

Question con: c’est pas un peu dangereux de mettre la commande visudo dans sudoers?
J’ai du mal a cerner ce concept de sudo et surtout certaines de ces consequences en terme de sécurité.

mechant@evil:/$ssh usinagaz@la_machine_a_usinagaz
usinagaz@la_machine_a_usinagaz:/home/usinagaz:/$sudo visudo
je rajoute SU pour usinagaz sans PASSWORD
sudo su
root@la_machine_a_usinagaz_qui_maintenant_est_la_mienne:/# :slightly_smiling:

je déconne usinagaz hein, c’est juste un exemple!

Autant permettre l’accès root à ssh en gros

Si vous avez un bon lien, ca evitera d’en parler pdt des heures.

[quote=“BorisTheButcher”]
Autant permettre l’accès root à ssh en gros
Si vous avez un bon lien, ca evitera d’en parler pdt des heures.[/quote]
Ouai ben en attendant maintenant j’ai des sueurs froides … :open_mouth:
J’y comprend rien à tout ça … ça m’inquiète …

J’ai deux souci pour arriver à mes fins là :

  • definir correctement un alias de commande bash exécutable seulement par root en temps normal
  • definir correctement un alias de commande sudo pointant vers l’alias bash sus-cité, exécutable par l’user ayant droit comme défini dans sudoers …

C’est pourquoi j’ai mis : un peu complexe … (pour moi :unamused: ).
Si on pouvait me dire comment faire, je gagnerai du temps un peu .
Pour la secu, ça serait bien d’approfondir ensuite oui …

Bon, j’ai fait ceci :

Créer un repertoire (caché par défaut) où placer des fichiers de scripts (i.e edition.sh)

Dand le fichiers, j’ai mis :

[quote]#!/bin/bash

fichier script pour lire/executer ‘sudo nano /var/log/syslog’ par un user

à qui je vais donner les droits nécessaires via sudoers
nano /var/log/syslog
[/quote] pour lire le fichier syslog.
Je modifie les droit l’accés au fichier :

[code]# chmod 700 /.scripts/edition.sh

ls -Ral /.scripts

/.scripts:
total 3
drwxr-xr-x 2 root root 1024 2006-06-23 17:53 .
drwxr-xr-x 26 root root 1024 2006-06-23 19:01 …
-rwx------ 1 root root 91 2006-06-23 05:00 edition.sh[/code]

Je vais dans un repertoire bin faisant déjà partie de la variable PATH et je crée
un lien vers edition.sh:

[code]# cd /usr/local/bin

ln -s /.scripts/edition.sh vlog

ls -l

lrwxrwxrwx 1 root staff 20 2006-06-23 18:04 vlog -> /.scripts/edition.sh
[/code]
Puis dans sudoers, pour autoriser sudo vlog :

Bon, et maintenant si je veux rajouter dans edition.sh une autre instruction, distincte ?

  • il faudrait que je définisse des options pour la command vlog … comment faire ?
  • il faudrait que je fasse un test conditionnel dans ce fichier, du style :
    if option=‘sys’ then nano /var/log/syslog
    else nano /var/log/autrelog
    Comment faire ?

Salut,

Question : Tu serais pas entrain de nous construire une usine à gaz :laughing:

:smiley: :smiley: :smiley:
Nan, mais c’est possible non ce que je dis … ou pas :confused:
ps : si vous avez plus simple, posez le ici lol, ya surement mieux …
Et la sécurité dans tout ça, faudrait en parler aussi :unamused:

Remonte dans mon premier post la réponse y est ! tu dérive trop.

de stonfi ou confucius ?

[quote=“stonfucius”]
Oui c’est possible seulement tes alias faudrait les definir dans le fichier /etc/profile parce que ~/.bash_alias est propre a chaque user.[/quote]
J’ai fais aussi en définissant l’alias dans /etc/profile, mais je crois que ça marche mieux dans /root/.bashrc …
Si on peut créer un alias d’une commande qui n’existe pas encore, sans faire de script à proprement parler, montre un exemple s’il te plait …
ps: j’ai bien cherché la signification de tes mystérieuses paroles philosophique en guise de réponse à mes posts, mais là, je fais une pause :wink:

oki un exemple,

roxor$ifcon
bash: ifcon: command not found
roxor$cd;vi .bashrc
...
alias ifcon='sudo ifconfig'
...
roxor@stonfi$source .bashrc
roxor@stonfi$ifcon
Sorry, user stonfi is not allowed to execute '/sbin/ifconfig' as root on roxor.
roxor@stonfi$su -
password:
roxor@root#visudo
...
Cmnd_Alias IFCONFIG=/sbin/ifconfig
...
stonfi ALL=NOPASSWD:IFCONFIG
...
roxor@root#/etc/init.d/sudo restart;exit
roxor@stonfi$ifcon
eth0      Lien encap:Ethernet  HWaddr 00:11:09:14:B8:C8
          inet adr:172.17.10.218  Bcast:172.17.10.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6456063 errors:0 dropped:6 overruns:0 frame:0
          TX packets:5230160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:2557517275 (2.3 GiB)  TX bytes:498662609 (475.5 MiB)
          Interruption:23 Adresse de base:0xe800

lo        Lien encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:2098 (2.0 KiB)  TX bytes:2098 (2.0 KiB)

Donc la c’est pour le user stonfi si tu veux pour tout tes users tu mets l’alias dans /etc/bashrc ou /etc/profile ou /etc/mesalias faudra juste que dans chaque rép de tes users leurs fichiers .bashrc contient un “source /etc/mesalias”. Niveau sécurité il faut clairement pas donner les droits a tes users d’edité le fichier /etc/passwd ni les regles firewall enfin tout que les admins ce garde pour eux…

:smiley:
Merci stonfi, nickel chrome comme on dit …

jcode@debian:~$ vlogsys bash: vlogsys: command not found jcode@debian:~$ cd;nano .bashrc ..................................................... alias vlogsys='sudo nano /var/log/syslog' ..................................................... jcode@debian:~$ source .bashrc jcode@debian:~$ vlogsys Password: Sorry, user jcode is not allowed to execute '/usr/bin/nano /var/log/syslog' as root on localhost.localdomain. jcode@debian:~$ su - Password: debian:~# visudo .................................................... Cmnd_Alias VLOGSYS=/usr/bin/nano /var/log/syslog .................................................... ADMIN LOCALNET=NOPASSWD:VLOGSYS .................................................... debian:~# /etc/init.d/sudo restart;exit logout jcode@debian:~$ vlogsys
C’est exactement tout ce que je voulais savoir … pffff.
Bon, je lancerai un autre post sur les options d’une commande maison de script quand j’aurais un peu plus débroussaillé … Et là je met un résolu, :stuck_out_tongue:
ps: ça me fait bien plaisir, que tu me gratifies d’un exemple parlant lol
merci encore.