GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo obtener una configuración oh-my-zsh segura para todo el sistema?

A menos que esté malinterpretando, la respuesta marcada de Caleb es solo la instalación normal por usuario pasos para agregar un archivo .zshrc al directorio skel y cambiar el shell de nuevo usuario predeterminado, pero en realidad no funciona ni responde realmente a la pregunta porque cada usuario todavía requiere el directorio oh-my-zsh/todavía requeriría que cada usuario clone el directorio oh-my-zsh en su propia carpeta, lo que significa que no está realmente instalado en todo el sistema , automáticamente les da un archivo zshrc y cambia el shell predeterminado a zsh, pero sin oh-my-zsh en cada carpeta de usuario, se producirá un error.

Por lo que entiendo de la pregunta, se pregunta cómo instalar oh-my-zsh en todo el sistema es decir, instálelo en UN solo lugar y no requiera jugar manualmente con cada nuevo usuario/tener un clon de git de oh-my-zsh en cada directorio de usuario. Suponiendo que ese sea el caso, esto es lo que hice basado en el paquete AUR de Arch Linux que normalmente uso pero estaba buscando lo mismo en un servidor centos, sin embargo, esto se puede hacer en cualquier distribución. El mérito es de MarcinWieczorek y los demás mantenedores , acabo de adaptar lo siguiente para que pueda hacer lo mismo en distribuciones que no son de arquitectura.

Si ya tiene oh-my-zsh instalado en la raíz, vaya al Paso 3. Esto no es específico de la distribución, solo usa el archivo de parche AUR para zshrc

Paso #1

Instalar zsh por supuesto

Paso #2

Instale oh-my-zsh como root como de costumbre (muestra el método wget, vea la respuesta de Calebs para obtener una alternativa)

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

Paso #3

Mueva la instalación a /usr/share para que sea en todo el sistema

#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

Ahora oh-my-zsh está instalado globalmente y el usuario solo necesita ese archivo zshrc. así que AHORA es donde entra la respuesta de Caleb, aunque solo haga lo siguiente, ya que /etc/adduser.conf solo está en Debian, mientras que el siguiente debe ser independiente de la distribución.

Paso #4

Configúralo para que sea el predeterminado para los nuevos usuarios

# 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

Ahora eso es un verdad instalación de oh-my-zsh con todos los nuevos usuarios aplicándolo automáticamente con la configuración de /usr/share/oh-my-zsh/zshrc y no se necesitan otros pasos.

Notas varias

  • Para cualquier usuario preexistente con oh-my-zsh:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Puede establecer valores predeterminados de OMZ para nuevos usuarios en /usr/share/oh-my-zsh/zshrc
  • Las actualizaciones automáticas están deshabilitadas ya que los nuevos usuarios no tienen permisos para actualizar los archivos /usr/share/oh-my-zsh
    • Para actualizar oh-my-zsh simplemente haga un cd en /usr/share/oh-my-zsh/ y ejecute 'sudo git pull'
  • El caché de oh-my-zsh se manejará por usuario dentro de cada directorio de usuario en ~/.oh-my-zsh-cache/ (creado automáticamente)

Advertencia justa:esto supone un estilo Linux de Debian, pero también debería funcionar en otras formas. Esto también supone que está comenzando desde cero.

Parte 1 , la instalación:

Deberá instalar zsh en todo el sistema, y ​​no solo para un usuario. (Es posible que ya haya hecho esto, pero lo incluiré solo para ser completo)

asegúrese de haber instalado zsh, simplemente:sudo apt-get install zsh

Siga la guía de instalación de oh-my-zsh o puede:

usar rizo

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

usar wget

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

Parte 2 , Configuración de zsh cuando se agregan nuevos usuarios:

Deberá configurarlo para que los nuevos usuarios utilicen zsh de forma predeterminada. En tu /etc/adduser.conf archivo edite la línea que dice:

DSHELL=/bin/sh

a:

DSHELL=/bin/zsh

También deberías cambiarlo por el /etc/default/useradd archivo, cambie la línea:

SHELL=/bin/sh

a:

SHELL=/bin/zsh

Parte 3 , establezca su tema personalizado.

Tengo un archivo de tema personalizado (aquí) que quería que tuvieran todos los usuarios del sistema. Primero, debe agregar el archivo a su .oh-my-zsh/themes carpeta:

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

A continuación, edite su .zshrc archivo en su directorio de inicio, cambie el ZSH_THEME="default" a ZSH_THEME="your_custom_style"

Luego, recarga tu .zshrc archivo con:. ~/.zshrc

Parte 4 , configurando los directorios de inicio del nuevo usuario.

Necesitamos colocar los archivos que queremos que tengan los nuevos usuarios en el /etc/skel directorio, porque esto es lo que el sistema copia cuando está creando el directorio de inicio del nuevo usuario. Consulte esta guía de administración del sistema para obtener más detalles.

Copie los archivos de su usuario (es posible que deba sudo):

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

Ahora podrá agregar nuevos usuarios y ellos tendrán oh-my-zsh por defecto con cualquier tema personalizado que desee que tengan.

Si desea cambiar el shell de todos los demás usuarios existentes a zsh, le recomendaría leer esta pregunta de falla del servidor.


Si desea una instalación de todo el sistema de Oh-My-Zsh, un enfoque conveniente que sobrescribe la menor cantidad de archivos es:

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

Editar /etc/skel/.zshrc :

  • Edite la línea export ZSH=$HOME/.oh-my-zsh (actualmente línea 5)
  • Cambia la línea para que sea:
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

Luego edite /etc/default/useradd y cambie la línea SHELL=... a SHELL=/bin/zsh .

Eso es básicamente todo (por supuesto, git y zsh ya deben estar instalados).

Para actualizar un usuario preexistente:inicie sesión como ellos y cp /etc/skel/.zshrc ~/.zshrc

Actualización: Por favor, no edites esto. ¡Acabo de revertir una edición que la arruinó por completo!


Iniciar sesión como ROOT

Paso 1:Instalar 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

Paso 2:Instalar 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

Paso 3:Añadir extra (Opcional - Mirar en la parte inferior para características adicionales)

Paso 4:Crear enlace simbólico

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

Paso 5:Agrega oh-my-zsh para root

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

Paso 6:Agrega oh-my-zsh para el usuario

# 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

O

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

EXTRA:

Cambiar el tema a 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

Habilitar corrección automática

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

Habilitar sugerencias automáticas y resaltado de sintaxis

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

Agregar colores de directorio nord

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. Guía para principiantes de DNSSEC y cómo puede proteger Internet

  2. Ubuntu 16.04:¿cómo puedo desactivar el arranque seguro?

  3. ¿Cómo puedo obtener el estado del teclado en Linux?

  4. ¿Cómo puedo obtener valores únicos de una matriz en Bash?

  5. ¿Cómo obtener ps para imprimir grupo?

Cómo instalar OH-MY-ZSH en Ubuntu 20.04

¿Cómo obtener los detalles de configuración de la cuenta de correo electrónico en cPanel?

Cómo obtener el uso de la CPU

¿Cómo puedo obtener la duración de un archivo de video desde la consola?

¿Cómo puedo monitorear el disco io?

¿Cómo puedo obtener de forma fiable el nombre del sistema operativo?