¿Hay alguna manera de dejar de escribir 'sudo' para cada pequeña cosa en Linux?


59

En breve voy a hacer una buena cantidad de trabajo PHP, y estoy interesado en aprender RoR, así que instalé Linux Mint 12 en mi VirtualBox.

El aspecto más frustrante del cambio, hasta ahora, ha sido tratar con los permisos de Linux. Parece que no puedo hacer nada útil (como, por ejemplo, copiar el tarball de Symfony2 desde mi directorio de Descargas a la raíz de mi documento y extraerlo) sin hacerme pasar por sudo.

¿Hay una manera fácil de decirle a Linux que me dé acceso sin restricciones a ciertos directorios sin simplemente abrir todos sus permisos?


1
Muchos grupos de discusión tendrán un grupo habilitado para editar la configuración de varias utilidades del sistema. Ponte en ese grupo y abre un nuevo shell.
dmckee

¿Sería mejor apuntar la raíz del documento a algo en mi directorio de inicio?

3
El 'sudo' es uno de esos comandos ridículos que los nuevos usuarios de Linux utilizan y abusan con demasiada frecuencia. A menudo veré tutoriales en la web donde 15 comandos seguidos usarán sudo. En situaciones normales, no debería necesitar permisos especiales mientras está conectado como usuario habitual (recomendado). Estaba en una compañía donde todo lo que hacían usaba sudo. Cuando intenté prohibirlo (por razones de seguridad), se quejaron. Después de examinar el críptico archivo de configuración de sudo, vi una falla (como siempre) que me permitió 'rootear' el sistema de ese usuario habitual. ¡Sudo es extremadamente peligroso!
Jeach

Respuestas:


77

Dos opciones me vienen a la mente:

  1. Adquiera el directorio que desee utilizando chown:

    sudo chown your_username directory 
    

    (reemplace your_username con su nombre de usuario y directorio con el directorio que desee).

  2. La otra cosa que puede hacer es trabajar como root siempre que sepa lo que está haciendo . Para usar root hacer:

    sudo -s
    

    y luego puede hacer cualquier cosa sin tener que escribir sudoantes de cada comando.


"La otra cosa que puedes hacer es trabajar como root siempre que SABES LO QUE ESTÁS HACIENDO. Usar root hace ..." - Bueno, eso deshace las mejores prácticas que las distribuciones y la comunidad de seguridad han estado tratando de enseñar a los usuarios. Relacionado: "¿Cuál es el principio del menor privilegio" .

16

En términos generales, siempre trabaje como su propio usuario a menos que esté haciendo algo con un impacto en todo el sistema.

Si hay archivos que desea colocar en su servidor web, trabaje como su propio usuario y luego use sudopara colocar los archivos en su lugar en el área de servicio web de su sistema de archivos. Por lo general, eso se realizaría mediante un script de instalación, y ejecutaría algo como sudo -u webmaster install-webserver-files, o mejor sudo -u webmaster git update(o el sistema de control de versiones que elija).

Si está trabajando en un servidor de desarrollo y desea que se pueda acceder a sus archivos al instante, cree un directorio en el área del servidor web y haga que sea de su propiedad o que al menos pueda escribirlo. Después de esa operación única ( sudo chown …o sudo -u webmaster setfacl …), no necesitará privilegios elevados para las operaciones diarias.

A veces es conveniente permitir que varios usuarios escriban en un directorio, o tener permisos diferentes para varios usuarios distintos del propietario o para múltiples grupos. Las listas de control de acceso le brindan esta capacidad. Consulte Problemas de permisos para el directorio compartido en un servidor o Problema de permisos de script de copia de seguridad .


3

Sí, inicie sesión como root, lo que le brinda un control de acceso de superusuario.
El mismo concepto en Windows, puede iniciar sesión en su terminal utilizando el administrador.


Me doy cuenta de que estás respondiendo directamente la pregunta del póster original. Pero este es un mal consejo, lo que explica el voto negativo.
bignose 01 de

Al igual que lo relacionaste con Windows.
LeWoody

3

Siempre ha sido mi ideología que, como usuario, puedes hacer lo que quieras en Linux y para todo lo demás, siempre lo hay sudo. sudopermite ejecutar pocas cosas como algunos otros usuarios, en la mayoría de los casos como rootpara la administración del sistema. sudoHa sido un recurso de mayor ventaja para delegar algunas de mis tareas y privilegios de rutina como usuario (root) a otros y ayudar a administrar mi tiempo y el tiempo de otros mejor sin elevar los privilegios más allá de lo requerido. Al mismo tiempo, es mi confianza en ellos lo que mantiene sus entradas presentes en elsudoersarchivo de configuración. No estoy seguro de si podría estar relacionado, pero lo que puedo decir es que sudo le brinda una mejor perspectiva de seguridad de quién y qué pueden hacer con sus privilegios de confianza. Incluso si algo sale mal, son responsables. (Siempre puedo hacer un poco astuto con información de registro de sudoers para encontrar a los culpables también). Mis muchachos siempre me han expresado su preocupación de que tengan que escribir sudo para todo lo que querían hacer con privilegios elevados en el entorno Linux. Aquí encontré la misma pregunta también.

Para ver las soluciones y mi búsqueda para encontrar las alternativas, me encontré con los controles de acceso basados en recursosRBAC pero en otra tierra de aventuras Solariscon herramientas como pfexecetc. Este enfoque es mejor porque esto mantendría los privilegios de los usuarios ya elevados y confiaría sobre la conciencia y el estado de alerta de lo que los administradores de sistemas querrían hacer con sus privilegios.

Teniendo en cuenta las soluciones disponibles de RBAC y sus implementaciones en el mundo Linux, me encontré con

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

y aunque hay algunas otras implementaciones, las consideraría en el orden superior de la lista. Implementar RBAC es mucho trabajo en una organización, especialmente cuando hay muchos usuarios. RBAC sería una mejor solución en entornos homogéneos. Sin embargo, cuando hay instalaciones heterogéneas de Unix en la red y la base de datos de usuarios es común, entonces esto podría fallar. Dado que SELinux no es escalable / implementado en Solaris y las herramientas RBAC / pfexec no están implementadas en Linux. Existen diferentes enfoques para hacer una sola cosa. Por ejemplo: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Es posible que las diferentes instalaciones de la red no admitan este enfoque (sin embargo, openrbac podría considerarse como un enfoque de implementación común) como sudoers es un enfoque de host único o no es capaz de una configuración centralizada en la red / dominio./etc/sudoersdebe sincronizarse cada vez que hay un cambio. Además, existe un requisito de base de conocimiento al operar el archivo sudoers, es necesario comprender el lenguaje de política de la configuración de sudoers para no cometer errores y permitir subvenciones. RBAC puede ofrecer un enfoque centralizado en cierta medida, mientras que los perfiles de seguridad pueden ser comunes, agregar / eliminar un usuario del rol otorgado se puede hacer desde un solo lugar (ese es el lugar donde se almacena la información del usuario / contraseña / grupo para el dominio como LDAP, NIS o AD). Esto también requeriría implícitamente comprender los comandos requeridos para operar en la base de datos RBAC como smexec, smmultiuser, ser pocos.

Sudo puede ofrecer un enfoque más multiplataforma aquí aún si funciona en todas las plataformas Unix / like que ofrecen las funciones setuid. Ambos sudoy RBAClogran dar a los usuarios no root algunos privilegios que se pueden hacer sin dar la rootcontraseña en sí. Sudo puede proporcionar un enfoque más fino / granular basado en los argumentos de la línea de comandos que se pueden usar mientras se ejecutan los comandos y restringir únicamente a qué comando con argumentos se puede ejecutar con privilegios elevados. Si bien RBAC puede restringir el uso hasta los comandos o binarios instalados, pero no tiene ningún control sobre los argumentos de la línea de comandos. La auditoría es mucho mejor y está integrada en el entorno RBAC, mientras quesudo, depende de la configuración y también de las restricciones de seguridad tomadas (como no otorgar el shell y, en particular, los hosts pueden iniciar sesión en los otros hosts sin ningún problema). Estas son solo algunas de las diferencias que podría citar y personalmente tengo una inclinación a usar sudo que RBAC, aunque con las limitaciones mencionadas podría superar la implementación de algunas soluciones. Hasta que RBAC aborde todos los problemas para mejorar la ventaja de sudo, no creo que sudo desaparezca porque es simple.


1

Quisiera la raíz del documento donde está trabajando, para que tenga acceso completo a él.

Para evitar tener que escribir sudo cada vez que instale una Gema, siga este artículo aquí: http://forums.site5.com/showthread.php?t=11954

También recomiendo instalar RVM para administrar versiones de Ruby y Rails. http://beginrescueend.com/

Le hará la vida mucho más fácil cuando encuentre el host en el que desea implementar su aplicación para usar versiones diferentes de las que desarrolló.


Conocía rvm, pero gracias por el enlace al foro.
Major Productions

0

Ejecute el comando

sudo su root

Ahora podrá ejecutar comandos como usuario root. ¡Ten cuidado! Cualquier comando que se ejecute será como usuario root. Puede estropear seriamente las cosas si no tiene cuidado.

O puede cambiar los permisos del directorio para permitir que su usuario guarde y edite archivos.


44
¿Por qué no solo sudo -s?
sarnold

1
O sudo -icomo esto simula como shell de inicio de sesión. Puede estar un poco más cerca de un inicio de sesión raíz local nativo que ejecutar bash u otro shell a través de sudo.
Bastian Ebeling

1
¿Por qué no solo su? ¿Qué es esta obsesión con el sudo? No necesitas sudo. Siempre.
orion

2
afaik, no es posible usarlo solo susi se desconoce la contraseña de root. agregar un usuario a los sudoers y ejecutar le sudo supermite al usuario hacer uso de su contraseña de usuario existente y conocida para escalar
Lucas

0

Edite el archivo / etc / passwd y otorgue permisos de root al usuario "yourUserName" cambiando las ID de usuario y grupo a UID 0 y GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh


2
¡No recomiendo pesadillas de seguridad! Esta es una práctica del peor tipo.
contramode

Estoy usando esta solución para mi raspberry pi en la que no tengo otras cuentas de usuario y está conectada a mi red doméstica
Ufuk özkanlı

0

Como se señala en otras respuestas, la solución más limpia es cambiar la propiedad de los archivos y directorios a los que necesita acceso. Alternativamente, podría crear un nuevo grupo dedicado, cambiar la propiedad del grupo de los archivos y directorios a este grupo y establecer el permiso de escritura grupal para estos archivos y directorios. Finalmente, establezca el bit SGID en los directorios de modo que si crea un nuevo archivo, herede la propiedad del grupo del directorio que lo contiene (es decir, el grupo dedicado).


-1

usuario @ servidor: ~ $ sudo passwd root
[sudo] contraseña para usuario:
Ingrese la nueva contraseña UNIX:
Vuelva a escribir la nueva contraseña UNIX:
passwd: contraseña actualizada con éxito
user @ server: ~ $ su
Contraseña:
root @ server: / home / user #

¿Ese mensaje "#" no es algo bello?

Uso "sudo" una vez solo para lograr la habilidad de

usuario @ servidor: ~ $ su
Contraseña:
raíz @ servidor: / inicio / usuario #

para la vida del servidor.

Para que sea seguro nuevamente,

root @ server: / home / user # exit
exit
user @ server: ~ $

Los administradores de sistemas han estado haciendo esto durante años cuando el "sudo" no era parte de la tendencia del mollycoddling.

Cuando haces esto, es tu responsabilidad cuidar, no la mía.

Ian


Que violín. Tratar sudo -s. Trabajo realizado
roaima
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.