Me gustaría dar permisos a un usuario para crear y leer archivos en un directorio en particular, pero no para modificar o borrar archivos. Si el usuario puede añadir a los archivos que está bien, pero yo no prefiero. Esto está en Ubuntu Linux.
Creo que esto es imposible con los permisos de archivos estándar de Unix, pero quizás esto es posible utilizando ACL? El usuario siempre se conecta a través de SFTP, por lo que si había alguna manera de controlar esto dentro de SFTP (a diferencia de los permisos del sistema operativo) que estaría bien.
Para ser absolutamente claro, quiero lo siguiente:
- echo hello> prueba # tiene éxito, porque la prueba no existe, y se permite la creación
- echo hello >> prueba # puede tener éxito o no, dependiendo de si se permite anexar
- eco hello2> prueba # falla, porque la prueba ya existe, y no se permite la modificación
- la prueba de gato # tiene éxito porque las lecturas están permitidas
- rm test # falla, porque no está permitido borrar
Si usted se pregunta por qué quiero hacer esto, es hacer una copia de seguridad del sistema Duplicati resistente a ransomware.
linux
files
permissions
acl
paj28
fuente
fuente
echo > test
, la cáscara hace unaopen("test", O_WRONLY|O_CREAT|O_TRUNC)
que crea el archivo y luego invocaecho
que escribe el contenido para que lo modifica. Ahora podría permitir que solo la primera apertura (WR) tenga éxito.Respuestas:
Se podría utilizar
bindfs
como:Ese directorio es propiedad de stephane, con el grupo stephane (stephane es su único miembro). También tenga en cuenta lo
t
que impide que los usuarios renombren o eliminen entradas que no les pertenecen.Nos
bindfs
dir
superamos con propiedad y permisos fijos para archivos y directorios. Todos los archivos parecen ser propiedad deroot
(aunque debajo del directorio real todavía son propiedad de stephane).Los directorios obtienen
drwxrwxr-x root stephane
permisos mientras que otros tipos de archivos obtienen permisos-rw-r--r-- root stephane
.Ahora crear un archivo funciona porque el directorio es grabable:
Sin embargo, no es posible hacer una segunda escritura
open()
en ese archivo ya que no tenemos permiso:(tenga en cuenta que no se permite agregar allí (como parte de sus requisitos iniciales)).
Una limitación: si bien no se puede quitar o cambiar el nombre de las entradas en la
dir
causa delt
poco, nuevos directorios que se crean en que no tendrá quet
poco, por lo que será capaz de cambiar el nombre o entradas de borrado allí.fuente
La
chattr +a
opción permitirá añadiendo solamente. Los archivos pueden ser alterados de esa manera, pero sólo mediante la adición de (líneas es decir anexar) a ellos. No puede eliminar archivos existentes, sino crear nuevos. Esto podría satisfacer sus necesidades:desde
man chattr
(tenga en cuenta que también se aplica a los directorios)
Así que su lista se vería así:
fuente
chattr +a
entonces puedo crear un archivo, no se me permite quitarla, puede anexar. Si creo dir1 / dir2, entonces puedo hacer lo que quiera EN dir2