Como mkdir -p -m 777 para todos os diretórios de nomes ausentes?

1

Estou colocando um arquivo no cron.hourly que precisa criar uma pasta na primeira vez e dar acesso a um usuário, então não preciso usar o sudo se eu quiser remover todo o conteúdo da pasta . E também torna a pasta utilizável. -m 777 não funciona para pasta ausente ao usar -p

#!/bin/sh 
mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T")

não funciona: faz 000Hourly para admin

#!/bin/sh
mkdir -m 777 000Hourly && mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T")

dá erro na hora seguinte mkdir: cannot create directory '000Hourly': File exists e pára de executar o resto.

Isto é o que eu estou tentando fazer, então eu preciso do 777 para poder apagar todas as pastas quando estiverem muito cheias.

#!/bin/sh
profiledir=/home/kangarooo/.mozilla/firefox/a2t42sie.default/
cd $profiledir;
mkdir -m 777 000Hourly ; mkdir -m 777 -p 000Hourly/$(date +"%m-%d-%y_%T") && cp -p sessionstore.js sessionstore.bak 000Hourly/$(date +"%m-%d-%y_%T")
exit 0
    
por Kangarooo 08.11.2012 / 23:18

2 respostas

2

Aqui está uma maneira melhor:

#!/bin/bash

dirname=000Hourly/$(date +"%m-%d-%y_%T") # Save the directory name for later access
user=bob   # Set to the username of the user who should have access.
group=bob  # Set to a group that should have access to the directory

mkdir -p "$dirname"
chown "$user:$group" "$dirname"

Se apenas um usuário precisar de acesso, você está acabado.

Se mais de um usuário precisar de acesso, crie um grupo para todos que precisam de acesso:

sudo groupadd mygroup

Leia man groupadd para detalhes adicionais e altere mygroup para qualquer nome que você queira (mas deve começar com uma letra minúscula ou sublinhado e não incluir espaços.

Em seguida, adicione todos os usuários necessários ao seu novo grupo, onde user1 , user2 e user3 e os nomes de usuários a serem adicionados. Você pode adicionar quantos quiser:

for i in user1 user2 user3; do sudo usermod -aG mygroup "$i"; done

As novas associações de grupo entrarão em vigor depois que o usuário fizer logout (ou a máquina for reinicializada).

Agora, modifique seu script acima. Defina $group como seu novo grupo e adicione a seguinte linha:

chmod 775 "$dirname"
    
por Scott Severance 09.11.2012 / 03:58
0
[ -d 000Hourly ] || mkdir -m 777 000Hourly
mkdir -m 777 000Hourly/$(date +"%m-%d-%y_%T")
    
por Walter Tross 08.11.2012 / 23:54