Con el comando chmod podemos cambiar los permisos de los archivos de dos formas, una es usando los símbolos (rwx) y otra es con el sistema octal.
Cómo cambiar los permisos de un archivo (chmod)
Es bastante sencillo cambiar los permisos de forma simbólica. Para esto, hay que escribir después del comando chmod el símbolo del usuario, luego el operador y por último el permiso que quieres agregar o quitar.
Supongamos que queremos añadirle permiso de escritura al grupo, entonces tenemos que escribir lo siguiente:
chmod g+w ProyectoExplosivo.txt
Puedes cambiar varios permisos de varios usuarios al mismo tiempo, por ejemplo, si quisieras agregar el permiso de escritura y ejecución al grupo y a otros, sería así:
chmod go+wx [archivo]
Y si quieres permisos diferentes para cada usuario, solo sepáralos por comas:
chmod u+r,g=w [archivo]
En ese comando se le añadió el permiso de lectura al dueño y de escritura al grupo. No agregues espacio en las comas o provocarás un error.
También puedes cambiar los permisos usando su forma octal, por ejemplo el conjunto de permisos rwxr-xr-x en su forma octal es 755.
chmod 755
Cómo gestionar usuarios (whoami | su)
A veces podemos tener una crisis existencial y no recordar quienes somos, pero en vez de asistir a un terapueta le podemos preguntar a la terminal. El comnando whoami, literalmente "¿Quien soy yo?", te muestra cual es el usuario que se está ejecutando, esto es porque a veces podemos olvidar con cual usuario estamos trabajando.
Cuando listamos los archivos con ls -l la tercera columna muestra el nombre del usuario que es propietario del archivo y la cuarta columna muestra el grupo que tiene control sobre el archivo.
Para el ejemplo, aparece "miguelangel" en ambas columnas porque ese es el usuario que estamos usando y porque el grupo al que pertenece el usuario se llama igual "miguelangel".
Para cambiar de usuario se usa el comando suSwitch User, seguido del usuario al que quieres cambiar, en este caso vamos a cambiar al superusuario root.
su root
Cuando ejecutes este comando te pedira que coloques su contraseña.
Y aqui una advertencia: el superusuario root (sí, ese es el nombre técnico) tiene poder para hacer y deshacer con el sistema operativo, puedes eliminar cosas que no deberías eliminar y puede hacer mucho desastre. Usa los privilegios del root con cuidado.
Volviendo al tema, observa la nueva información de la terminal.
Ahora te indica antes del arroba que eres el usuario root, y al final de la información te coloca un numeral en vez de un signo de peso, eso significa que tienes altos privilegios en la terminal.
También te puedes dar cuenta que ya la virgulilla no está a pesar de que estás en la misma ruta, eso es porque el home del root no es ese, si quieres ver el home del root ejecuta esto:
cd ~; pwd
Ahora comencemos con lo bueno, vamos a crear un archivo con root y a listarlo a ver que pasa.
touch ArchivoRoot.txt; ls -l
Ahora si intentamos borrar ese archivo con otro usuario que no sea root no vamos a poder porque no tiene los permisos para hacerlo.
¿Qué hacer en caso de olvidar una contraseña?
Si estás usando Windows Subsystem for Linux (wsl) y se te olvidó la contraseña del root. Sigue estos pasos:
Abre el cmd de windows y ejecuta este comando wsl --user root. Esto hará que se inicie en la terminal wsl con el usuario root.
Luego ejecuta el comando passwd root el cual te permitirá cambiar la contraseña del usuario root.
Ya con esto puedes volver a la terminal de wsl y volver a ejecutar el comando su root.
Cambiar el propietario (chown)
Puede que no te quieras hacer responsable de tus archivos, así que se los quieres dejar a alguien más. Para eso usa el comando chownChange Owner. La sintaxis es muy simple:
chown [usuarioAlQuePertenecerá][archivo]
En la cuarta columna sigue diciendo root, pero eso es porque ese es el nombre del grupo.
Tabla de comandos whoami, su y chmod
Comando
Función
whoami
Muesta el usuario con el que se está trabajando
su
Switch User Cambia al usuario al que le especifiques
chmod
Cambia los permisos de un archivo
chown
Change Owner Cambia el propietario de un archivo
Ejercicios de práctica
Recuerda que si haces mucho desastre puedes borrar casi lo que sea con el usuario root y ten mucho cuidado con lo que borras.
Crea un archivo llamado "ArchivoPoderoso.txt", luego dale los permisos r-xrwxr-xr-x usando la forma simbólica del comando chmod.
Crea un archivo con el usuario root llamado "pelota.txt", luego dale los permisos rwxr-x--x usando la forma numérica del comando chmod y luego cambia el propietario a tu usuario principal con chown.
Crea un archivo con un nombre bonito y asígnale los permisos --------- usando su forma simbólica.
Contribución creada con los aportes de: Miguel Gonzalez.
Gestión de Permisos y Usuarios en la Terminal Linux
Si están en ubuntu el comando su root no funciona por que está desactivado y con ninguna contraseña se puede acceder a él, pero existe una alternativa que al final de cuentas es la misma, el comando sudo su
Me salvaste hermano me estaba volviendo loco
Gracias bro me sirvió tu aporte 😎
¿No te parece que el comando whoami es un poco inútil? ¿Qué sentido tiene saber quién soy yo... ¡si yo sé quién soy!... 👀.
.
Bien, pues déjame decirte que tiene mucho sentido, y aquí te voy a explicar algunos de sus usos, pero primero, déjame decirte que en la terminal puedes ejecutar comandos dentro de comandos, ¿cómo? ¡Sencillo!, simplemente escribes: $(cualquiercomando) y este se ejecutará, por ejemplo:
cat $(find ~/Escritorio-name test.txt)
En este comando estoy ejecutando el comando cat (un comando que ya debes saber qué hace), pero a su vez, dentro de $() estoy ejecutando un comando llamado find (little spoiler), este comando buscará un archivo dentro de cierta ubicación y te devolverá la ruta completa de ese archivo, entonces, como ya sabes que te devuelve la ruta completa de ese archivo, el resultado de ese comando se lo está pasando al comando cat.
.
Pero ahora, ¿cómo podemos aplicarlo al comando whoami? ¡Fácil!, y de hecho lo haremos aplicando un comando de los que acabamos de ver para modificar permisos.
.
Al hacer eso, tu carpeta se creará, sí, pero si intentas escribir archivos dentro de ella no podrás, te dirá "Permission denied", porque tú no eres el dueño de esa carpeta. Como creaste la carpeta usando sudo, entonces el dueño de esa carpeta es el usuario root ☝👀,
.
¡Cambiemos al dueño de la carpeta!, para hacer esto, podemos usar el comando chown (Change Owner), este comando se estructura de la siguiente forma:
chown -R<user>:<group> folder
Entonces, yo podría poner esto:
chown -Rretaxmaster:retaxmaster PersonalProjects
Eso sería suficiente para que yo sea el dueño de mi carpeta y pueda escribir en ella. ¿Por qué el grupo tiene mi nombre de usuario? Porque, en Linux, al crear un usuario, automáticamente se crea un grupo con el mismo nombre.
.
Muy bien, pero aún no te he dicho en qué interviene whoami aquí, pero seguro ya lo intuyes 👀...
.
Imagina que más personas tienen el mismo problema, y en lugar de decirles algo como: "Primero tienes que saber cuál es tu usario, luego pones este comando, pero cambias ahí donde dice 'usuario' por tu propio usuario..." mejor les dices: "Toma, con este comando lo solucionas", sería mucho más eficiente, ¿no crees? Hagamos ese comando:
chown -R$(whoami):$(whoami)PersonalProjects
¿Ves? Exte comando se lo puedes dar a culquiera y le funcionará, porque whoami está poniendo dentro de dichos parámetros el nombre del usuario!!
.
Esta es tan solo una de las muchas ventajas que tiene el comando whoami, al principio parece un comando inútil, pero cuando empiezas a combinarlo con más utilidades de la terminal empiezas a ver que es muy útil ☝👀.
Gracias @RetaxMaster . Ese comando con el
whoami
me ha salvado de andar escribiendo sudo antes de todos los comandos en mi carpeta asjajs
Sabes porque chmod no puede cambiar los permisos cuando estamos WSL en la ruta de los archivos que tenemos en windows (es decir la ruta /mnt/c/Users/Administrator que también se menciona en el curso de prework)??
Para los que usen una distribucion de Ubuntu el comando su root no funcionará con niguna contraseña ya que esta desactivado, como alternativa se puede usar el comando
sudo su
colocan su contraseña y listo, obtienen el mismo resultado.
Este aporte vale x 1000. Muchas gracias, justo me estaba pasando eso, me decia falla de autenticacion...
muchas gracias, me estaa quebrando la cabeza 👍
Por defecto, el sistema Ubuntu se envía con una contraseña de root en blanco.
Si intentaste cambiar al usuario root y te ocurría esto:
su root
Password:******su:Authentication failure
Es normal, debido a que por defecto en Ubuntu el root no tiene una contraseña definida por defecto, tienes que acceder al root y establecerle la contraseña con los siguientes pasos:
sudo su root
[sudo] password forusuarioActual: _
acá escribes la contraseña de tu usuario, y después ya estarás como el usuario root entonces tienes que establecerle una contraseña con el comando:
passwd
EnternewUNIXpassword: _
Podrás observar que de hecho no te pide la contraseña actual del root, solo te pide la nueva contraseña, cosa que no pasa con un usuario normal.
Una vez que establezcas la contraseña del root ya puedes acceder a el de forma normal
su root
Password:******root@Equipo# _
Buen aporte. Muchas gracias!!!
**¡MUCHAS GRACAIS! **Gran aporte.
Notas :smile:
Modificando permisos en la terminal.
Existen diversos usuarios con permisos cada uno; el usuario root es especial y puede hacer de todo🚶🏽.
Puedes crear archivos de texto también con > archivo.txt y también podemos editarlo con cat > archivo.txt 📜
En un archivo, se muestran: [tipo de archivo][rwx usuario][rwx grupo][rwx mundo], por ejemplo, -rw-r--r-- mitexto.txt 👀.
chmod <permiso en octal para usuario><para grupo><para mundo> <archivo>change mode nos sirve para cambiar los permisos de un archivo. Si hacemos por ejemplo chmod 755 mitexto.txt tendremos ahora -rwxr-xr-x mitexto.txt, esto no cambia para nada el contenido del archivo.
Para quitarle los permisos a alguien en particular, usamos el modo simbólico y usando laresta, por ejemplo quitando el permiso de lectura al usuario chmod u-r mitexto.txt. Para agregar, se usa la suma. 🧮
Podemos hacer configuraciones mas avanzadas, por ejemplo, podemos asignar varios permisos al mismo tiempo chmod u-x,go=w mitexto.txt.
whoami Para saber que usuario somos, y también podemos obtener el ID del usuario con id.
su root para cambiar de usuario hacía root, hay que tener cuidado al usar este usuario 😟. Su home es incluso distinto. Los archivos que crea root (o otro usuario) no se pueden eliminar por un usuario normal.
sudo <comando> nos otorga temporalmente los permisos de root para ejecutar algún comando que ocupe permisos especiales. 🦸🏽 Nunca dejes el usuario root por defecto, y ponle una contraseña distinta!!
Buen aporte, gracias!!!
¡¡Gracias!!
Para los que están en WSL en los archivos de windows (es decir en la ruta /mnt/c/Users/Administrator) tampoco les sirve el comando chmod? incluso tampoco sirve lo que muestra el profesor con el cambio de usuario.
Entiendo que este curso está hecho sobre el sistema linux 100%, pero deberían tener en cuenta que la mayoría tenemos WSL. Deben mejorar eso, porque realmente no veo ningún cambio sustancial entre este curso y el anterior con el profesor Mauro.
Hola Juan, lo que tienes que hacer es cd ~, posteriormente creas una carpeta desde ahí y luego entras en esa carpeta, empiezas a desarrollar todo de manera normal y verás que todo fluye un poco mejor en esa ubicación, verás que sirve el comando chmod y te será más fácil trabajar.
Hey ! Como menciona @juanardila1210 , si estas utilizando Wsl2 lo ideal esque trabajes desde su sistema de archivos (~ desde este directorio) ya que puede que presentes este tipo de incopatibilidades , aparte que wsl2 no esta realmente orientado a trabajar desde el sistema de archivos de windows por ende no solo presentara ciertas incopatibilidades si no que puede que en la mayoria de procesos vaya demasiado mas lento de lo normal
Si te sientes un poco perdido al principio puedes utilizar un comando muy util para manipular tus archivos de linux con tu interfaz de windows
explorer.exe.
este comando te abrira un explorador de archivos donde puedes pasar archivos de windows a tus archivos de linux etc...
Hola a todos, ¿ustedes también podían borrar el rootfile?, a mí me paso lo mismo 🤷♂️.
Pero tengo una teoría, si está mal me corrigen 😅.
Después de pensar un rato 🤔me di cuenta de algo:
El directorio donde se creo el archivo "rootfile" fue creado por el usuario, no por el root. Si ven los permisos del directorio les saldrá algo como esto:
Recuerden que en anteriores clases vimos que para borrar archivos dentro de un directorio tenía que estar activado el "w" del directorio 🤔.
Como se ve en drwxr-xr-x, está activo el "w" para el usuario que lo creo, en mi caso pierogm.
Por lo tanto este usuario puede manipular los archivos dentro del directorio a su voluntad 😎. Y es por eso que pueden borrar el archivo.
Ahora imagina que cambiamos a usuario root y creamos un nuevo directorio llamado roomDirectory, si revisas los permisos te saldrá algo así.
-rw-r--r--1 root root 0Jul1612:45 rootfile
En este caso los permisos de "w" solo los tiene el usuario root 💀. Si creamos un archivo roomFile y tratamos de borrarlo con el usuario convencional, te darás cuenta que no se puede 🤷♂️ rm: cannot remove 'rootfile': Permission denied.
Por último el usuario root si puede manipular archivos dentro de un directorio en el que no tenga permiso.
total 0
-rw-r--r-- 1 pierogm pierogm 0 Jul 1 11:27 index.html
root@DESKTOP-S4B72OD:/home/pierogm/personalProjects/ProyectoDemo# rm index.html
root@DESKTOP-S4B72OD:/home/pierogm/personalProjects/ProyectoDemo# ls
root@DESKTOP-S4B72OD:/home/pierogm/personalProjects/ProyectoDemo#
Espero que me haya dejado entender 😉.
¡Wow, ya lo intenté y así es! No se me había ocurrido que el directorio creado por mi usuario podría afectar, creí que era cosa de WSL nada más. Muchas gracias.
Igual me funciono!!!! muchas gracias
🔐 El usuarioroot tiene el control absoluto de todo lo que ocurre en el sistema, accediendo a todas las funciones y configuraciones.
Se agradece por el dato :)
Genial :D.
Yo usando el comando whoami:
me proyecté totalmente, saludos.
jajaja
chmod doesn't change file permissions:
Si resulta que tu aplicas -( chmod 755 mitexto.txt )-
pero no cambia en nada los permisos o los cambia pero no lo que deseas, es un error que suele aparecer para las personas que usamos WSL(Ubuntu), nuestro sistema Windows no le da todos los permisos a nuestro terminal que trabaja con Linux. Por lo tanto, no podrás hacer estos cambios o trabajar al 100%.
Lo que puedes hacer, para seguir trabajando con el profesor y todo funcione bien, es trabajar en la ubicación de origen de nuestro home:
Te diriges a este usando cualquiera de estos 2 comandos:
cd
cd ~
Una vez te encuentres ahí, creas la misma carpeta, archivo y ello. Vuelves a realizar los comandos que el profesor usó y esta vez si te funcionará al 100%, porque este "home" se encuentra muy aparte de Windows, es como tu Linux puro, pero aparte.
Espero y les halla servido, me tarde como 1 hora buscando la posible falla y valió la pena :)
** :) Nunca te rindas, persiste hasta encontrar lo que buscas y así nunca pararás de aprender :)**
Gracias amigo, esto me estaba dando muchos problemas.
Excelente muchas gracias si siguio para avanzar pero el resultado fue algo inesperado ya que en los permisos me salio completamente diferente.
Profe a mi si me dejo borrar el archivo “rootfile” desde mi user sin utilizar sudo ¿por qué?
A mí igual me pasó lo mismo.
A mí igual, creo q puede ser q el directorio donde sandbox, al crearlo tengo permisos 775 y q los herede ????
Cuando te aventuras en linux sin saber, te frustras demasiado, depues lo intentas mirando estos videos y todo es magia!!!
es verdad, yo habia escuchado a varios decir que Linux era dificil y por eso no me aventuraba a usarlo, pero viendo este curso me doy cuenta que no es tan dificil
y es muy amigable a diferencia de windows.
Dentro de la terminal zsh, solo escribe el siguiente comando:
p10k configure
Si no te funciona el su root despues de poner la contrasena, hazlo de esta manera sudo su root y te funcionara
Gracias, me funcionó 👌
Eres grande! y lo seguirás siendo
Un consejo, se puede crear archivo de forma mas fácil con la sentencia
> archivo
Si queremos escribir dentro de este archivo, podemos utilizar
cat> arhivo
Cuando queramos dejar de escribir tenemos que presionar Ctrl + D
chmod755 archivo
Este comando lo que indica es que cambiamos los permisos de usuario de forma octal, dándole un 7 al dueño, 5 al grupo y 5 a world
chmod u-r archivo
Con este comando hace que al usuario(u) le quiten(-) los permisos de read(r) al archivo que mandemos como parámetro. En este caso el usuario o nosotros no podremos leer el archivo ya que no tendremos permiso. Si queremos agregar mas permisos,. estos se divide con una coma ",".
whoami
Este comando nos permite saber que usuario somos.
id
Este comando nos otorga nuestro uid que es el sistema de nuestro usuario, ademas de que nos da informacion de que otros grupos podemos pertenecer.
su root
Este comando significa Switch User que nos permite cambiar entre los usuarios que tengamos registrados, en el caso de este comando, es el usuario root, que es el super usuario.
sudo
Este comando nos permite hacer acciones de root, es como si nos convirtieramos en el momentaneamente
passwd
Este comando nos ayuda a cambiar nuestra contraseña.
no entendi porque funciona el comando
cat > archivo.txt
porque pasa eso?
Porque estas concatenando lo nuevo con CAT y lo redireccionas a un directorio nuevo.
A mi si me dejo borrar el rootfile desde user sin ser root
x2
Concuerdo, también pude borrarlo 🤷♂️.
Como se puede saber la contraseña del root si es no es la misma que la de mi usuario, ya que intente cambie de usuario pero no me dejo con mi clave
Haz sudo passwd para cambiar la contraseña de tu usuario root para poder acceder como usuario root cuando hagas su.
Gracias profe ya pude resolverlo
El operador > redirecciona el STDUOT de una instrucción a un archivo. En el ejemplo de Enrique no se especifica ninguna instrucción antecesora del operador por lo que el STDOUT es vacío o nulo y, como no existe ningún archivo llamado mitexto.txt en el CWD, este es creado automáticamente. Sin embargo, esta utilidad del operador > no debería ser usada como reemplazo de la instrucción touch porque si existiera un archivo llamado mitexto.txt en el CWD este sería sobrescrito eliminando todo su contenido. Una alternativa para evitar este conflicto sería crear el archivo empleando el operador >>, pero igualmente no debe usarse para remplazar a la instrucción touch.
muy bueno me lo aclaraste gracias
Gracias por el aporte
Un comando para obtener información del sistema es; uname.
a nos da toda la información
-s nos da solo el nombre del sistema
-v nos da la versión del kernel del sistema
-n nos da el nombre del host
-r nos da el release del kernel del sistema
-o nos da el nombre el sistema operativo.
Este comando es útil por ejemplo si quieres crear bash (sh) para que se ejecute en diferentes ambientes; DEV, UAT, PRODUCCIÓN. Así en ves de generar un archivo con el nombre del servidor de desarrollo, otro para UAT y otro para Producción, solo se genera uno.
Gracias por tu aporte.
Si a algunos les pasa que no pueden ingresar a root con el password de su usuario normal puede deberse a que tienen el usuario root bloqueado, ubuntu al igual que otras distribuciones bloquea la cuenta root para que los usuarios sin experiencia no puedan acceder a ella.
esto se de debe a que resulta casi innecesario cuando se usa el comando sudo, puedes usar el siguiente comando :
sudo passwd root, te pedira las nuevas credenciales y luego entras nuevamente con su root , aqui dejo mi log de consola.
Gracias esto también funciona para WSL2
Gran ayuda mi pana.!
No estoy muy seguro de algo. Traté de eliminar rootfile como usuario normal y lo único que tuve que hacer es confirmar con yes 'y'. Al final si me eliminó el archivo cuando me debió pedir ser usuario root para hacerlo
.
¿Hay algo que no esté tomando en cuenta?
También me ocurrió lo mismo en WSL
Amigo, ¿al fin ya sabes por qué sucede esto? Hice tal cual los pasos del profe en el vídeo, y aún, como en tu caso, pude eliminar el archivo root como usuario normal...