запретить выполнение некоторых команд с правами суперпользователя

Я импортировал данные из резервной копии со старой версией gpg. Так как старый компьютер был недоступен, только резервная копия, я не мог сначала экспортировать ее. Это то, что сработало для меня.

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

Если вы хотите иметь возможность импортировать секретные ключи без немедленного ввода парольной фразы, используйте опцию --batch.

Для проверки открытых ключей:

gpg --list-keys

Для проверки секретных ключей:

gpg --list-secret-keys
2
10.04.2020, 16:26
2 ответа

Когда вы используете sudo, вы запускаете новую оболочку от имени пользователя, которому вы сказали sudoпереключиться на (root, по умолчанию ). Это установит переменную SUDO_USERв имя пользователя этого пользователя :

.
$ cat foo.sh
#!/bin/bash
echo "SUDO_USER: $SUDO_USER"

Если я запущу этот скрипт от своего имени, я ничего не получу, так как переменная не установлена ​​:

$ foo.sh
SUDO_USER: 

Но если я запускаю его с sudo, переменная устанавливается:

$ sudo foo.sh
SUDO_USER: terdon

Имея это в виду, вы можете просто запускать определенные команды, которые вы хотите запускать как обычный пользователь, используя имя пользователя, запускающего скрипт. Итак, измените ваши wgetи chmodи любые другие команды, которые вы хотите запускать от имени обычного пользователя в сценарии, и заставьте их запускаться с sudo -u $SUDO_USER, чтобы они выполнялись от имени обычного пользователя, а не от root :

.
apt install python2.7 python-pip ## will run as root
sudo -u $SUDO_USER mkdir foo ## will run as $SUDO_USER

Использование переменной SUDO_USERгарантирует, что все созданные вами каталоги и файлы будут принадлежать пользователю, запустившему скрипт, и вам не нужно явно указывать в скрипте имя этого пользователя при каждом его запуске.

4
19.03.2021, 02:30

Чтобы сделать каталоги, созданные mkdir, доступными для всех пользователей, вам необходимо изменить разрешение на чтение/запись WORLD с помощью команды chmod.

В сценарии после выполнения mkdirиспользуйте приведенную ниже команду:

chmod -R 755  «directory-name»

(Доступно для чтения всем, запись доступна только пользователю root)

или

chmod -R 777  «directory-name» 

(Доступно для чтения и записи для всех пользователей системы)

Для wgetиспользуйте команду chmodпосле загрузки.

ИЛИ

Тем не менее, если вы хотите выполнить команду от имени другого пользователя, используйте команду su:

su - «username» -c 'command to be executed'
1
19.03.2021, 02:30

Теги

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