Всегда существует Октава GNU, emacs калькуляторов командной строки (для того, когда Вы хотите полную среду разработки и язык программирования, встроенный к Вашему калькулятору и тысячам дополнительных дополнений),
или R, если статистика является большим количеством Вашей вещи.
Я главным образом просто использую bc -l
получить стандартную математическую загруженную библиотеку... Я даже имею bc
искаженный к bc -l
. См. ответ Циновки для получения информации об определении функции факториала.... хотя bc
страница справочника определяет его как:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Проверка <=1, а не == 1 предотвращает бесконечный цикл, если Вы, оказывается, питаетесь, это отрицательное число (должна быть ошибка), или (допустимый) нуль.
Существует пара подходов, некоторые из них главным образом безопасна, другие нисколько.
Позвольте любому выполненному использованию mount
, например, через sudo. Вы могли бы также дать им корень; это - то же самое. Пользователь мог смонтировать файловую систему с корневой копией suid bash
— выполнение, которое немедленно дает корень (вероятно, без любого входа, вне факта это mount
был выполнен).
С другой стороны, пользователь мог смонтировать свою собственную файловую систему сверху /etc
, содержа его собственную копию /etc/shadow
или /etc/sudoers
, затем получите корень с также su
или sudo
. Или возможно свяжите - монтируются (mount --bind
) по одному из тех двух файлов. Или новый файл в /etc/sudoers.d
.
Подобные нападения могли быть осуществлены /etc/pam.d
и много других мест.
Помните, что файловые системы даже не должны быть на устройстве, -o loop
смонтирует файл, который принадлежит (и таким образом модифицируемый) пользователем.
Различные настольные среды на самом деле уже создали решения этого, чтобы позволить пользователям монтировать съемные носители. Они работают путем монтирования в подкаталоге /media
только и путем выключения set-user/group-id поддерживают через опции ядра. Опции здесь включают udisks
, udisks2
, pmount
, usbmount
,
Если Вы должны, Вы могли бы записать свой собственный сценарий, чтобы сделать что-то подобное, и вызвать его через sudo — но необходимо быть действительно тщательной записью этого сценария для не отъезда корневого использования. Если Вы не хотите, чтобы Ваши пользователи должны были помнить sudo, можно сделать что-то вроде этого в сценарии:
#!/bin/bash
if [ $UID -ne 0 ]; then # or `id -u`
exec sudo -- "$0" "$@"
fi
# rest of script goes here
Пространства имен Linux являются очень легкой формой виртуализации (контейнеры, чтобы быть более конкретными). В частности, с пользовательскими пространствами имен любой пользователь в системе может создать их собственную среду, в которой они - корень. Это позволило бы им монтировать файловые системы, за исключением того, что был явно заблокирован за исключением нескольких виртуальных файловых систем. В конечном счете файловые системы FUSE будут, вероятно, позволены, но новые патчи, которые я мог найти, не покрывают блочные устройства, только вещи как sshfs.
Далее, много ядер дистрибутива имеют (из соображений безопасности), принял значение по умолчанию к не разрешению непривилегированным пользователям использовать пользовательские пространства имен; например, Debian имеет a kernel.unprivileged_userns_clone
это принимает значение по умолчанию к 0. Другие дистрибутивы имеют подобные настройки, хотя часто с немного отличающимися именами.
Лучшая документация, которую я знаю приблизительно пользовательских пространств имен, является статьей LWN Пространства имен в операции, части 5: Пользовательские пространства имен.
На данный момент я пошел бы с udisks2.
Можно сделать это, но необходимо изменить запись в /etc/fstab
при соответствии файловой системе Вы хотите смонтироваться, добавляя флаг user
к этой записи. Пользователи неполномочия затем смогли бы смонтировать его.
Посмотрите man mount
для получения дополнительной информации.
vfs.usermount
). Я хочу sth. аналогичный этому. Я использую много съемных дисков со многими разделами на каждом, и это было бы громоздким для добавления дюжины или двух записей в fstab для каждого из них.
–
18.10.2013, 17:43
udev
справьтесь с записями, поскольку новые устройства появляются и исчезают.
– Jester
18.10.2013, 17:44
Можно настроить sudo
позволить ряду пользователей работать mount
команда.
Обновление: относительно того, как можно повредить систему путем монтирования? Например, можно создать корневую оболочку setuid в файловой системе, которую можно затем смонтироваться и выполнить для получения прав пользователя root.
sudo
? Кроме того, разве это не пользователь root, монтирующий файловую систему, только негласно, с этим методом?
–
18.10.2013, 17:32
mount
кому: sudo mount
или используйте сценарий обертки.
– Jester
18.10.2013, 17:43
user
к fstab только работает потому что mount
корень setuid. Ядро проверяет на корень или CAP_SYS_ADMIN
возможность, таким образом, Вы не можете действительно обойти корень вовлечения. А-ч
– Jester
18.10.2013, 17:51
Для ответа на вопрос в круглой скобке начиная с, файловая система является заполнителем для файлов, затем пользователь может потенциально провести вредные операции в той файловой системе, те, которые удаляют файлы.
При подведении итогов других 2 вопросов я скажу это:
fstab
сильно для монтирования в постоянном хранении времени начальной загрузки. Не настолько замечательно, когда Вы хотите включить карты памяти или смонтировать иногда некоторые сетевые ресурсы.
sudo mount
также в порядке, если Вы находитесь на человечности* системы. Необходимо будет все еще ввести в пароле все же.
udev
будет заботиться о монтирующихся вещах как палки usb, камеры и карты флэш-памяти в человечности* системы (но не в меньшем количестве удобных для пользователя дистрибутивов как debian, slackware, и т.д.)
Я добавлю, что, исторически, Unix способ дать полномочия некоторым пользователям (или группы), чтобы сделать материал через sudoers
файл.
Существуют МНОГИЕ руководства для использования его там, таким образом, я не предложу никакой конкретный. Я скажу, что использовал веб-сайт проекта документации Linux для приобретения знаний об этом.
С чем больше sudoers
это, можно смонтировать устройства и доли прозрачно - даже, не обеспечивая пароль, если Вы принимаете решение сделать так (быть дополнительны осторожный относительно этого).
То, что я обычно делаю в среде управления, я использую sudoers
файл, чтобы позволить пользователям определенной группы монтировать сетевые ресурсы прозрачно. Таким образом, я добавляю команды mount.nfs
и mount.cifs
в sudoers файле, что разрешение операций тех, которые "монтируют домашнюю папку пользователя от сетевого файлового сервера, когда пользователь входит в систему клиентского терминала" и studd как этот.
autofs
самостоятельно смонтироваться /home/$USER
от файлового сервера, к местоположению /home/$USER/fromFS/
на клиентском ПК.
– nass
18.10.2013, 19:15
Здесь вики для настройки правил polkit для udisks/udisks2, чтобы монтировать разделы не корневыми (например, пользователями) группами.
Сохраните код ниже в /etc/polkit-1/rules.d/50-udisks.rules
polkit.addRule(function(action, subject) {
var YES = polkit.Result.YES;
var permission = {
// only required for udisks1:
"org.freedesktop.udisks.filesystem-mount": YES,
"org.freedesktop.udisks.filesystem-mount-system-internal": YES,
"org.freedesktop.udisks.luks-unlock": YES,
"org.freedesktop.udisks.drive-eject": YES,
"org.freedesktop.udisks.drive-detach": YES,
// only required for udisks2:
"org.freedesktop.udisks2.filesystem-mount": YES,
"org.freedesktop.udisks2.filesystem-mount-system": YES,
"org.freedesktop.udisks2.encrypted-unlock": YES,
"org.freedesktop.udisks2.eject-media": YES,
"org.freedesktop.udisks2.power-off-drive": YES,
// required for udisks2 if using udiskie from another seat (e.g. systemd):
"org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
"org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
"org.freedesktop.udisks2.eject-media-other-seat": YES,
"org.freedesktop.udisks2.power-off-drive-other-seat": YES
};
if (subject.isInGroup("users")) {
return permission[action.id];
}
});
Предположим, что вы находитесь в группе "users", используя следующую команду для монтирования раздела (не нужно sudo).
# udisks2
udisksctl mount --block-device /dev/sda1
# udisks
udisks --mount /dev/sda1
На Xubuntu он работает "из коробки", чтобы монтировать и извлекать USB-накопитель, разделы жесткого диска, CD / DVD и, возможно, многое другое.
Предположим, что решение, выбранное Ubuntu с помощью policyKit, достаточно безопасно.
В XFCE в Debian 8.3 мне нужно было разрешить пользователю монтировать и извлекать файловые системы из thunar без пароля. Что сработало для меня, так это выбор файла разрешений из Ubuntu.
Добавление строк ниже как root в файл с именем /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
должно помочь:
[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;
ResultActive=yes
(На самом деле я выбрал немного больше из файла с таким же именем в Ubuntu 16.04, и это сработало для меня. Если вам это нужно, это в основном выглядит как содержимое https: //gist.github .com / kafene / 5b4aa4ebbd9229fa2e73 )
guestmount
trucos de libguestfs
sudo apt-get install libguestfs-tools
# Workarounds for Ubuntu 18.04 bugs.
# https://serverfault.com/questions/246835/convert-directory-to-qemu-kvm-virtual-disk-image/916697#916697
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*
# Create a test image.
mkdir sysroot
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
# Mount it, have fun, unmount!
mkdir -p mnt
# /dev/sda becuase we have a raw filesystem.
guestmount -a sysroot.ext2.qcow2 -m /dev/sda mnt
cmp sysroot/myfile mnt/myfile
guestunmount mnt
Se basa en:
Documentos:http://libguestfs.org/guestmount.1.html
Probado en Ubuntu 18.04, libguestfs -herramientas 1 :1.36.13 -1ubuntu3.
mount
смочь смонтировать файловые системы как корень делает? Я прочитаю документ пространств имен, который Вы связали и пытаетесь реализовать эту вещь группы монтирования, по крайней мере, как осуществление. – 18.10.2013, 19:16