Ошибка программирования оболочки в Linux [закрыто]

Al editar el archivo de configuración /etc/sudoers, puede configurar sudopara permitir que un usuario ejecute comandos como otro usuario. En particular, puede usar sudopara permitir que un usuario inicie un shell como otro usuario. Por ejemplo, la siguiente línea permite userejecutar bashcomolowp0:

user ALL=(lowp0) /bin/bash

Entonces debería poder hacer algo como lo siguiente:

user@host:~$ sudo -u lowp0 bash
lowp0@host:~$

También puede usar el comando suen lugar debash:

user ALL=(lowp0) /usr/bin/su -l

Para permitir el acceso a ambos usuarios a través de ambos comandos, puede agregar las siguientes líneas:

user ALL=(lowp0,lowp1) /bin/bash, /usr/bin/su -l

Si está ejecutando un servidor SSH, también puede agregar la clave pública de usera los archivos ~/.authorized_keysde lowp0y lowp1. Esto debería permitir usera sshen localhost como cualquiera de estos usuarios, p.:

user@host:~$ ssh lowp0@localhost
lowp0@host:~$
-8
18.03.2019, 02:43
2 ответа

Рядом с небольшими задачами следует провести черту:

if [ -z $batas ] | [ $batas -lt 0 ]; then  

быть

if [ -z $batas ] || [ $batas -lt 0 ]; then  

А вместо этого:

if [ `expr $i % 2` -eq 0 ]; then  

вы можете использовать

if (( $i % 2 == 0 )); then  
3
28.01.2020, 05:21

Недостаток информации в этом посте сделал этот вызов странно привлекательным для меня. Во-первых, обратился к роботу-переводчику, который сказал мне, что язык малайский, и догадался, что «батас» означает «предел» или «граница», генап означает «четный», ганжил означает «нечетный», а предупреждающее сообщение примерно гласит: «Опс»., не может быть пустым или цикл Limit должен быть >= 0".

Таким образом, код запрашивает входное значение, проверяет, не является ли значение пустым и равно нулю или больше, а затем, когда вы запускаете его --, он выполняет бесконечный цикл и выдает нули на терминал. Поскольку я не уверен, каковы конечные цели кодера, я не могу быть уверен, что «исправил» это правильно, но переместив строку «let i=i+1;» из оператора "else" вместо бесконечного цикла он считает от нуля до введенного предела цикла и выводит счет. Он также подсчитывает количество четных и нечетных чисел, встречающихся на пути. Код, как есть, ничего не делает с этими подсчетами. Возможно, это фрагмент более крупного кода. Может быть, это игрушечная программа, написанная кем-то, кто экспериментирует ради удовольствия. Во всяком случае, вот «переведенная» версия, в которой добавлены строки, выводящие четные и нечетные значения:

i=0;
even_num=0;
odd_num=0;
echo -n "Limit of loop : ";
read loop_lim;

if [ -z $loop_lim ] | [ $loop_lim -lt 0 ]; then
    echo "Ops, Limit of loop cannot be empty and must be  >= 0";
    exit 0;
fi
while [ $i -le $loop_lim ]; do
    echo -n "$i,";
    if [ `expr $i % 2` -eq 0 ]; then
        let even_num=$even_num+1;
    else
        let odd_num=$odd_num+1;
    fi
    let i=$i+1;
done
echo
echo $even_num
echo $odd_num
2
28.01.2020, 05:21

Теги

Похожие вопросы