usando root para mkdir em outro diretório inicial de usuários

27

tendo um pouco de dificuldade tentando criar uma pasta na pasta de outro usuário /home/devuser1/pubic_html. Estou tentando evitar o uso sudoe procurando uma alternativa. As permissões na pasta mencionada são lidas como:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

Como alternativa, supondo que eu use o sudoprefixo, quais seriam as implicações? Eu li que é uma prática ruim usar sudopara criar uma pasta. Depois que a nova pasta é criada, eu continuo alterando a propriedade dela para o usuário em questão. Exemplo:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost
maGz
fonte

Respostas:

31

Com install, você pode criar um diretório com um proprietário, grupo e modo específicos:

install -d -o <user> -g <group> -m <mode> <path>
user2313838
fonte
29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] funciona bem.

Pelo que vejo, as permissões e a propriedade são as mesmas, se eu quisesse fazer login como o mesmo usuário e criar a pasta em public_html.

Você também pode ligar su -c "mkdir /home/[username]/public_html/[folder_name]" [username]

maGz
fonte
2
Ao executar sudo -u USERNAME mkdir DIRNAME, você está executando o mkdircomando como usuário USERNAME. Isso não é exatamente equivalente a efetuar o login como USERNAME, porque o login também implica em definir variáveis ​​de ambiente e assim por diante, mas é a parte que importa, ou seja, executar um processo como um usuário específico.
Gilles 'SO- stop be evil'
11
Além disso, esse usuário pode não ter permissão.
Mahemoff # 23/18
1

Dadas essas permissões, apenas o proprietário do diretório ou o superusuário pode criar subdiretórios.

A única maneira de evitar o uso de privilégios extras para criar a pasta é alterar a propriedade para si mesmo (com sudo), criar o subdiretório e finalmente devolver a propriedade ao proprietário, mas não parece uma boa solução para mim.

RSFalcon7
fonte
sim, difícil isso. Esta é uma pergunta boba, mas quais são minhas opções?
Magz
que tal (como root) executar o comando como esse usuário ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. Isso não é o mesmo que criar a pasta, sudonão é? ls -alrevela:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz 28/04
Talvez eu esteja sendo ingênuo, mas não vejo mal em criar uma pasta sudodesde que você mude de propriedade depois disso.
precisa saber é o seguinte
Pelo que lsrevela o conteúdo do usuário public_html, parece que não é necessário alterar a propriedade, talvez permissões.
Magz
Acho que também sou ingênuo ao pensar no seguinte: não estou criando a pasta como su, ao invés disso, estou usando-a para me autenticar como o usuário que criará a pasta ... isso faz sentido?
Magz
0

Eu tentei fazer um mkdir -p /srv/postgres/data/mydirmas porque

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv tem dono root

nem install -d -o <user> -g <group> -m <mode> <path> @ user2313838

nem sudo -u postgres mkdir -p /srv/postgres/data/mydirfunciona @maGz

Então eu tenho que dividi-lo em dois comandos:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
hannes ach
fonte