GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je obtenir une configuration oh-my-zsh sécurisée à l'échelle du système ?

À moins que je ne comprenne mal, la réponse marquée de Caleb est juste l'installation normale par utilisateur étapes avec l'ajout d'un fichier .zshrc au répertoire skel et la modification du shell par défaut du nouvel utilisateur, mais cela ne fonctionne pas réellement ou ne répond pas vraiment à la question parce que chaque utilisateur toujours nécessite le répertoire oh-my-zsh/obligerait toujours chaque utilisateur à cloner le répertoire oh-my-zsh dans son propre dossier, ce qui signifie qu'il n'est pas vraiment installé à l'échelle du système , il leur donne automatiquement un fichier zshrc et change le shell par défaut en zsh, mais sans oh-my-zsh dans chaque dossier utilisateur, une erreur se produira.

D'après ce que je comprends de la question, il demande comment installer oh-my-zsh à l'échelle du système c'est-à-dire l'avoir installé à UN endroit et ne pas nécessiter de déconner manuellement sur chaque nouvel utilisateur/avoir un clone git de oh-my-zsh sur chaque répertoire utilisateur. En supposant que ce soit le cas, voici ce que j'ai fait sur la base du package AUR d'Arch Linux que j'utilise normalement mais que je recherchais la même chose sur un serveur centos, mais cela peut être fait sur n'importe quelle distribution. Le crédit revient à MarcinWieczorek et aux autres mainteneurs , je viens d'adapter ce qui suit pour pouvoir faire la même chose sur les distributions non arch.

Si vous avez déjà installé oh-my-zsh sur root, passez simplement à l'étape 3. Ce n'est pas spécifique à la distribution, mais utilise simplement le fichier de correctif AUR pour zshrc

Étape 1

Installez zsh bien sûr

Étape 2

Installez oh-my-zsh en tant que root comme d'habitude (affiche la méthode wget, voir la réponse de Calebs pour une alternative)

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Étape 3

Déplacez l'installation vers /usr/share pour qu'elle soit à l'échelle du système

#Copy zsh files to /usr/share for all uer access 
mv /root/.oh-my-zsh /usr/share/oh-my-zsh
# Move into the dir and copy the zshrc template to zshrc (which will be the default for users)
cd /usr/share/oh-my-zsh/
cp templates/zshrc.zsh-template zshrc
# Nab the patch file from MarcinWieczorek's AUR Package and apply to the zshrc file
wget https://aur.archlinux.org/cgit/aur.git/plain/0001-zshrc.patch\?h\=oh-my-zsh-git -O zshrc.patch && patch -p1 < zshrc.patch

Maintenant, oh-my-zsh est installé globalement et l'utilisateur n'a besoin que de ce fichier zshrc. donc MAINTENANT, c'est là que la réponse de Caleb entre en jeu, mais faites simplement ce qui suit car /etc/adduser.conf est uniquement sur Debian alors que ce qui suit devrait être indépendant de la distribution.

Étape 4

Configurez-le par défaut pour les nouveaux utilisateurs

# Create hard link to the zshrc file so it creates an actual independent copy on new users
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
# Set default shell to zsh
sudo adduser -D -s /bin/zsh

Maintenant c'est un vrai installation de oh-my-zsh avec tous les nouveaux utilisateurs l'appliquant automatiquement avec les paramètres /usr/share/oh-my-zsh/zshrc et aucune autre étape nécessaire.

Notes diverses

  • Pour tous les utilisateurs préexistants avec oh-my-zsh :

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Vous pouvez définir les nouvelles valeurs par défaut de l'utilisateur OMZ dans /usr/share/oh-my-zsh/zshrc
  • Les mises à jour automatiques sont désactivées puisque les nouveaux utilisateurs n'ont pas les permissions de mettre à jour les fichiers /usr/share/oh-my-zsh
    • Pour mettre à jour oh-my-zsh cd vers /usr/share/oh-my-zsh/ et lancez 'sudo git pull'
  • Le cache oh-my-zsh sera géré par utilisateur dans chaque répertoire utilisateur sous ~/.oh-my-zsh-cache/ (créé automatiquement)

Juste Attention :cela suppose un Linux de style Debian, mais cela devrait également fonctionner sur d'autres formulaires. Cela suppose également que vous partez de zéro.

Partie 1 , l'installation :

Vous devrez installer zsh à l'échelle du système, et pas seulement pour un seul utilisateur. (vous l'avez peut-être déjà fait, mais je vais l'inclure juste pour être complet)

assurez-vous d'avoir installé zsh, simplement :sudo apt-get install zsh

Suivez le guide d'installation oh-my-zsh ou vous pouvez :

utiliser boucle

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

utiliser wget

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Partie 2 , Configuration de zsh lors de l'ajout de nouveaux utilisateurs :

Vous devrez faire en sorte que les nouveaux utilisateurs utilisent par défaut zsh. Dans votre /etc/adduser.conf fichier modifier la ligne qui dit :

DSHELL=/bin/sh

à :

DSHELL=/bin/zsh

Vous devriez également le changer pour le /etc/default/useradd fichier, changez la ligne :

SHELL=/bin/sh

à :

SHELL=/bin/zsh

Partie 3 , définissez votre thème personnalisé.

J'ai un fichier de thème personnalisé (ici) que je voulais que tous les utilisateurs du système aient. Tout d'abord, vous devez ajouter le fichier à votre .oh-my-zsh/themes dossier :

cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes

Ensuite, modifiez votre .zshrc fichier dans votre répertoire personnel, modifiez le ZSH_THEME="default" à ZSH_THEME="your_custom_style"

Ensuite, rechargez votre .zshrc fichier avec :. ~/.zshrc

Partie 4 , en configurant les répertoires personnels des nouveaux utilisateurs.

Nous devons placer tous les fichiers que nous voulons que les nouveaux utilisateurs aient dans le /etc/skel répertoire, car c'est ce que le système copie lorsqu'il crée le répertoire personnel d'un nouvel utilisateur. Consultez ce guide d'administration système pour plus de détails.

Copiez les fichiers de votre utilisateur (vous devrez peut-être sudo):

cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel 

Vous pourrez maintenant ajouter de nouveaux utilisateurs et ils auront oh-my-zsh par défaut avec le thème personnalisé que vous souhaitez qu'ils aient.

Si vous souhaitez remplacer le shell de tous les autres utilisateurs existants par zsh, je vous recommande de lire cette question sur les erreurs de serveur.


Si vous souhaitez une installation de Oh-My-Zsh à l'échelle du système, une approche pratique qui écrase le plus petit nombre de fichiers est :

sudo git clone https://github.com/robbyrussell/oh-my-zsh.git /etc/oh-my-zsh
sudo cp /etc/oh-my-zsh/templates/zshrc.zsh-template /etc/skel/.zshrc
sudo mkdir -p /etc/skel/.oh-my-zsh/cache

Modifier /etc/skel/.zshrc :

  • Modifier la ligne export ZSH=$HOME/.oh-my-zsh (actuellement ligne 5)
  • Changer la ligne pour :
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

Puis modifiez /etc/default/useradd et changez la ligne SHELL=... à SHELL=/bin/zsh .

C'est essentiellement tout (bien sûr, git et zsh doivent déjà être installés).

Pour mettre à jour un utilisateur préexistant :connectez-vous en tant qu'eux et cp /etc/skel/.zshrc ~/.zshrc

Mise à jour : Veuillez ne pas modifier ceci. Je viens d'annuler une modification qui l'a complètement bâclé !


Se connecter en tant que ROOT

Étape 1 :Installez ZSH

# Download and extract ZSH

wget https://github.com/zsh-users/zsh/archive/zsh-5.8.tar.gz -P /tmp/demo/zsh
cd /tmp/demo/zsh
tar -xvzf zsh-*
cd zsh-zsh-5.8

# configure and make

sudo ./Util/preconfig
sudo ./configure
sudo make && sudo make install


# Add ZSH to the list of shells

echo /usr/local/bin/zsh | sudo tee -a /etc/shells

Étape 2 :Installez oh-my-zsh

# If you're running the Oh My Zsh install script as part of an automated install, 
# you can pass the flag --unattended to the install.sh script.
# This will have the effect of not trying to change the default shell, and also won't
# run zsh when the installation has finished.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Add oh-my-zsh to /usr/share
mv /root/.oh-my-zsh /usr/share
mv /usr/share/.oh-my-zsh /usr/share/oh-my-zsh
mv /root/.zshrc /usr/share/oh-my-zsh
mv /usr/share/oh-my-zsh/.zshrc /usr/share/oh-my-zsh/zshrc

# Modify zshrc to point to /usr/share/oh-my-zsh

sed -i 's|export ZSH="'"$HOME"'/.oh-my-zsh"|export ZSH="\/usr\/share\/oh-my-zsh"|g' /usr/share/oh-my-zsh/zshrc

Étape 3 :Ajoutez des éléments supplémentaires (facultatif :regardez en bas pour des fonctionnalités supplémentaires)

Étape 4 :Créer un lien symbolique

# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc

Étape 5 :Ajoutez oh-my-zsh pour root

# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh

Étape 6 :Ajoutez oh-my-zsh pour l'utilisateur

# Change user
su - username

# Copy zshrc to $HOME for user
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc

# Change shell to ZSH for user  
echo "$USER" | chsh -s /usr/local/bin/zsh

OU

sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF

EXTRA :

Changez le thème en powerlevel10k

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/themes/powerlevel10k

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' /usr/share/oh-my-zsh/zshrc

Activer la correction automatique

sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc

Activer les suggestions automatiques et la coloration syntaxique

git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

sed -i 's/plugins=(git)/plugins=(\n  git\n  zsh-autosuggestions\n  zsh-syntax-highlighting\n)/' /usr/share/oh-my-zsh/zshrc

sed -i 's/plugins=(git)/plugins=(git)\nZSH_DISABLE_COMPFIX=true/' /usr/share/oh-my-zsh/zshrc

Ajouter nord dircolors

git clone --depth=1 https://github.com/arcticicestudio/nord-dircolors.git /tmp/demo/dircolors

mv /tmp/demo/dircolors/src/dir_colors /usr/share/
cd /usr/share/
mv /usr/share/dir_colors /usr/share/.dir_colors

tee -a /usr/share/oh-my-zsh/zshrc >/dev/null <<'EOF'
test -r "/usr/share/.dir_colors" && eval $(dircolors /usr/share/.dir_colors)
EOF

Linux
  1. Ubuntu 16.04 - Comment puis-je désactiver le démarrage sécurisé ?

  2. Comment puis-je obtenir mon adresse IP externe dans un script shell ?

  3. Comment puis-je surveiller le disque io ?

  4. Comment puis-je obtenir de manière fiable le nom du système d'exploitation ?

  5. Comment puis-je obtenir un binaire à partir d'un fichier .py

Guide du débutant sur DNSSEC et comment il peut sécuriser Internet

Comment installer OH-MY-ZSH dans Ubuntu 20.04

Comment obtenir les détails de configuration du compte de messagerie dans cPanel ?

Comment puis-je obtenir l'état du clavier sous Linux?

Comment puis-je obtenir ce que ma fonction principale a renvoyé?

Comment puis-je obtenir la longueur d'un fichier vidéo à partir de la console ?