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 ?
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
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.
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:/#
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 …
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 ).
Si on pouvait me dire comment faire, je gagnerai du temps un peu .
Pour la secu, ça serait bien d’approfondir ensuite oui …
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 :
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 ?
Nan, mais c’est possible non ce que je dis … ou pas
ps : si vous avez plus simple, posez le ici lol, ya surement mieux …
Et la sécurité dans tout ça, faudrait en parler aussi
[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
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…
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,
ps: ça me fait bien plaisir, que tu me gratifies d’un exemple parlant lol
merci encore.