¿Cómo evitar que los usuarios eliminen un directorio?


9

Intenté "chattr + i DIRNAME", es genial, pero no puedo crear archivos en el DIR después de chattr. ¿Qué más hay para evitar que los usuarios eliminen un directorio?

root@HOST ~] mkdir test
[root@HOST ~] chattr +i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
touch: cannot touch `sth': Permission denied
[root@HOST ~/test] cd ..
[root@HOST ~] chattr -i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
[root@HOST ~/test] 

ACTUALIZACIÓN: solo la eliminación del directorio es importante, por lo que todavía necesito que se eliminen los archivos


Echa un vistazo a /tmpy /var/tmp. Si bien cada usuario puede crear archivos allí, él / ella puede eliminar solo sus propios archivos / directorios, pero no el directorio en sí.
— Nils

Respuestas:


3

Entonces, ¿qué hay de malo con un simple chown / chmod ?:

cd /tmp
mkdir question
sudo chown root:root question
[sudo] password for user: 
chmod 777 ./question
touch sth
rm sth
cd ..
rm question -rf
rm: cannot remove `question': Operation not permitted

Bien, déjenme decirles qué hay de malo en esto: cada usuario tiene acceso a todos los archivos del questiondirectorio debido a los 777permisos. Es mejor

  • crear un nuevo grupo groupadd question
  • mkdir question
  • chown root:question ./question
  • chmod 770 ./question
  • agregue los usuarios que deben tener acceso a los archivos al nuevo grupo: usermod -G group user

El truco importante aquí es que el directorio tiene un propietario diferente que cualquiera de los usuarios que intentarán eliminarlo.


2
Depende también de dónde se encuentre este directorio. Si alguien del grupo de preguntas tiene derechos rwx en el directorio que contiene el directorio de preguntas, podrá eliminarlo.
— Laurentiu Roescu

Agregue un extra sudo chmod o+t ..para establecer la tbandera en el directorio principal. La tbandera no permitirá eliminar un archivo que no sea propiedad del usuario. tse usa comúnmente /tmppara hacer exactamente eso. El usuario A no puede eliminar archivos propiedad del usuario B.
— jippie

O una vez más, simplemente coloque la propiedad correcta y los bits de permiso en el directorio.
— jippie

No funciona en contenedores acoplables. :(
— Kirby

13

Crea un archivo ".protected" y hazlo como root

chattr +i .protected

A continuación, puede eliminar todos los archivos excepto .protecteddentro de este directorio, por lo que ningún otro usuario puede eliminar el directorio.


Simple y efectivo. Gran respuesta.
— Wug

No funciona en contenedores acoplables. :(
— Kirby

1
Para eliminarlo, use "chattr -i [nombre de archivo]" para eliminar el atributo inmutable.
— emeraldhieu

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.