Мои друзья продолжают удалять мои файлы с помощью терминала. Поэтому, пожалуйста, помогите мне, объяснив, как сделать пароль для rm
команды.
Мои друзья продолжают удалять мои файлы с помощью терминала. Поэтому, пожалуйста, помогите мне, объяснив, как сделать пароль для rm
команды.
Ответы:
Нет простого способа установить такой пароль в самой rm
команде, не без большого взлома кода, который, вероятно, сломает такие вещи, как apt-get
установка пакетов и удаление файлов, и заставит вас вводить пароль тысячу раз или потенциально нарушит работу доступ к команде людям, которым она понадобится (например, вам, чтобы удалить ваши собственные файлы). Вы можете сделать это, имея несколько учетных записей пользователей и несколько наборов разрешений доступа, и ограничив доступ к различным разделам данных, таким как ваш домашний каталог, чтобы они не могли получить к нему доступ.
(Другой вариант - отдельные учетные записи пользователей для каждого пользователя, а затем списки контроля доступа, как подробно описано в другом ответе, который был опубликован Videonauth )
Вот основная проблема - вы позволяете своим друзьям использовать вашу систему. Это имеет многочисленные последствия для безопасности: концепция «любой, кто имеет физический доступ к устройству, сможет управлять системой и выполнять любые задачи», - это мантра ИТ-безопасности, поэтому вы не «делитесь» доступом к физическим системам. кроме как с доверенным уполномоченным персоналом.
Единственный по- настоящему разумный способ сделать это - не дать своим друзьям доступ к вашему компьютеру и предоставить им «выделенную« гостевую »систему», которую они могут использовать, чтобы вы не особо заботились о файлах. Это самый «безопасный» способ сохранить ваши файлы в безопасности.
Конечно, если это не вариант, то ваш единственный действительно безопасный вариант - настроить несколько учетных записей пользователей, по одной для каждого пользователя, с разными домашними папками и не разрешать им доступ к вашему собственному домашнему каталогу или доступ к домашнему каталогу любого другого пользователя. каталоги. А затем держите все, что вы не хотите, чтобы они касались в вашем домашнем каталоге, и не давайте им sudo
доступ, root
пароль или не делитесь с ними своим паролем.
Вот как вы это сделаете:
Допустим, меня зовут «Foo», и я хочу, чтобы пользователь «Бар», мой друг, использовал мою систему, но не имел доступа к моим файлам. Первый шаг - запретить доступ к моей домашней директории кому-либо, кроме меня. Это позволяет другим пользователям не удалять ваши файлы, но также и предотвращать слежку за другими пользователями в вашем домашнем каталоге и просмотр того, какие вещи у вас есть в вашем домашнем каталоге:
chmod 750 /home/Foo
Вторым шагом является создание учетной записи пользователя для «Бар» (НЕ вводите то, что в скобках ниже, это только для информационных целей). Таким образом, мы можем убедиться, что у него есть свой отдельный набор прав доступа:
sudo adduser --create-home --user-group --shell /bin/bash Bar
sudo passwd Bar
(set a temporary password - you will not see characters as you type though)
Третий шаг является то ограничить их домашний каталог тоже , так что никто не может вмешиваться в их файлы либо. Это просто делает вещи равными.
sudo chmod 750 /home/Bar
Вымойте свои руки, хорошо промойте их, затем повторите эти шаги для любого количества пользователей в системе. Они не смогут получить доступ к вашим файлам, и, поскольку вы не собираетесь предоставлять им привилегии администратора, они не смогут удалить ваши файлы без попыток sudo
сделать это - поскольку вы не разрешаете этого, они не могут потрогай свои вещи. И они также не смогут видеть ваши файлы, не став суперпользователем, чего здесь не произойдет.
ВСЕГДА ПОМНИТЕ ОБ ЭТОМ: Предоставляя кому-либо физический доступ к машине или доступ в целом, вы подвергаете свои файлы и данные риску. Это общепризнанный факт в мире информационной безопасности, и этот факт остается в силе. Предоставление вашим друзьям доступа к вашему компьютеру всегда будет подвергать риску ваши данные, поэтому либо предоставьте им свою собственную систему, с которой можно возиться, либо просто не предоставьте им доступ к вашему компьютеру.
Просто примечание о шифровании диска
Хотя шифрование диска работает хорошо, чтобы защитить ваши данные от третьих лиц, существуют ограничения.
Хотя Disk Encryption не решает эти проблемы, он ставит дополнительные уровни головной боли для субъекта угрозы. Кто-то, кто является плохим парнем, может сдаться, если он зашифрован, или он может вас замучить (очередь обязательна, комикс XKCD Security ).
Поэтому, если ваша система зашифрована, но вы позволяете другим пользователям использовать ее, либо у них есть пароль для расшифровки, либо вы оставляете свой ноутбук расшифрованным, чтобы они могли использовать SSH или иметь физический доступ. В обоих этих случаях это плохо.
Тем не менее, если ваша система не зашифрована, то этот раздел не имеет никакого отношения к вам.
apt-get
работаетdpkg
, которая запускает скрипты , которые часто используют rm
. На моем блоке Xenial выводится cd /var/lib/dpkg/info; grep -P '\brm\b' *inst
344 строки , из которых 333 выглядят как настоящие rm
команды - только в установочных скриптах. grep -P '\brm\b' *rm
показывает еще больше в сценариях удаления (чтобы удалить файлы конфигурации, а не файлы пакета).
Это может не относиться к rm
команде, так как существуют простые способы удаления файлов без ее использования . Если проблема заключается в том, что ваши друзья непреднамеренно неправильно используют rm
команду, то могут помочь некоторые решения, которые ограничивают использование этой команды специально или заставляют ее работать по-другому. Напротив, если проблема заключается в том, что ваши друзья преднамеренно обрабатывают ваши данные не так, как вам хотелось бы, тогда вам нужно реализовать реальные меры безопасности , а не решение, которое фокусируется на самой rm
команде (или каком-либо отдельном наборе команд). будет держать вас в безопасности.
Предполагая, что ваши друзья знают, что вы не хотите, чтобы они удаляли ваши файлы, есть две возможности:
Они могут делать это нарочно. В этом случае ваши друзья намеренно удаляют ваши файлы, и вы даже не можете доверять им, пытаясь выполнить ваши пожелания о том, как они обрабатывают ваши данные, когда они используют ваш компьютер. Единственное решение этой проблемы - использовать эффективную меру безопасности , как подробно объяснил Томас Уорд . Часто лучшая такая мера - не дать им пользоваться компьютером. Но заставить их использовать свои собственные учетные записи пользователей может обеспечить некоторую защиту.
Они могут сделать это по ошибке. В этом сценарии ваши друзья чрезвычайно подвержены несчастным случаям, и они продолжают выполнять rm
команды, которые они хотели бы, чтобы они не имели. Они хотят относиться к вам и вашим данным с уважением, но на практике им это плохо удается, потому что они продолжают выполнять неправильную команду, удаляя неправильный файл ... или что-то в этом роде. Хотя было бы неплохо поверить, что это именно то, что происходит, я предостерегаю вас от предположения, что люди, которые продолжают удалять ваши данные после того, как вы сказали им прекратить, работают без злой воли.
Кроме того, даже если их намерения хороши, предоставление им отдельных учетных записей пользователей по-прежнему является наиболее надежным способом предотвращения удаления ваших файлов, не позволяя им использовать ваш компьютер.
Если ситуация действительно №2 - ваши друзья не пытаются удалить ваши файлы, а просто нуждаются в помощи, чтобы случайно не удалить их, и единственный способ, которым они случайно удалили их, - это непреднамеренное неправильное использование небольшого количества команд (например rm
) что у них есть определенные проблемы с правильным использованием - тогда методы в ответе Видеонавта могут быть полезны . Но вы должны понимать, что они не являются мерами безопасности, потому что rm
команда является лишь одним из многих простых способов удаления файлов . Смотрите ниже для деталей.
Я рекомендую вам спросить себя: «Является ли моя ситуация в основном такой же, как если бы я, а не другие люди, которые используют мой компьютер, использовал rm
неправильно?»
Если ответ « нет» , то это вопрос информационной безопасности, и вам нужно запретить своим друзьям использовать вашу учетную запись. Если ответ « да» , то вы можете использовать те же подходы, которые использовали бы, если бы вы неправильно использовали rm
:
rm file
file
Но даже если ваши друзья не пытаются сделать что-то не так, вы все равно должны подумать о том, чтобы они использовали свои собственные отдельные учетные записи пользователей . Это все равно решит проблему - те же меры безопасности, которые защищают данные от преднамеренного уничтожения, также защитят его от непреднамеренного уничтожения. Даже без злого умысла, если кто-то продолжает делать то, что вы не хотите, чтобы он делал, тогда вы не можете доверять ему воздерживаться от этого.
rm
перед удалением может помочь предотвратить некоторые ошибки.Для того, чтобы помочь людям избежать случайного удаления файлов с rm
, вы можете сделать оболочки псевдоним , который на самом деле работает . Передача флага заставляет его запрашивать пользователя перед удалением каждого файла (см. ).rm
rm -i
-i
rm
man rm
Вы можете сделать это (для вашей учетной записи пользователя), добавив alias rm='rm -i'
в свой файл .bash_aliases
или .bashrc
. Смотрите этот вопрос и что один для деталей. Это вступит в силу для ваших недавно открытых оболочек bash.
Это не обеспечивает реальной безопасности и не является надежным средством предотвращения ошибок, потому что:
/bin/rm
или отключать его ( unalias rm
).rm
не будет работать с -i
.rm
(как в случае с подходом Видеонавта - см. Ниже).Но если вам не нужна реальная безопасность (см. Выше), то это может быть путь. По сравнению с подходом, запрещающим вашим друзьям использовать предоставленную системой rm
команду:
Aliasing rm
к rm -i
менее эффективным в предотвращении ошибок - пока они не двигаться дальше , используя другой метод для удаления файлов. В этот момент удерживать их от использования rm
будет совершенно неэффективно, даже если они не пытаются сделать что-то неправильное, поскольку, по-видимому, они будут использовать unlink
(или любую из множества других команд, удаляющих файл) с равной легкомыслием.
С другой стороны, поскольку расширение псевдонимов происходит только в некоторых ситуациях - грубо говоря, при обычном интерактивном использовании оболочки - ваши друзья могут подумать, что они будут получать подсказки, когда они на самом деле не запрашиваются (поскольку команда находится в сценарий, например, или выпущенный из другой оболочки). Путь видеоавта не имеет этой проблемы, что является объективным преимуществом этого метода перед alias rm='rm -i'
.
Когда скрипт выполняется, если он не написан специально для использования псевдонимов, ваши псевдонимы в нем не раскрываются. Это означает , что сглаживание rm
для rm -i
очень маловероятно , чтобы сломать что - нибудь. Это объективное преимущество alias rm='rm -i'
.
rm
ничего не может сделать ни одна совершенно обычная программа.В этом нет ничего особенного rm
. Это удобный и самодокументируемый способ удаления файлов, поэтому ограничение доступа к нему может привести к поломке многочисленных скриптов, которые на него полагаются. Но это далеко не единственный способ удаления файлов - это обычная программа.
Несколько команд выполняют некоторые задачи, которые пользователь с ограниченными правами (без полномочий root ) не может выполнить без их запуска. Например, sudo
позволяет запускать программы от имени другого пользователя после проверки, чтобы убедиться, что вам разрешено это делать. passwd
редактирует базу данных, в которой хранятся пароли пользователей, но позволяет изменять только собственный пароль (если только вы не root, в этом случае вы можете изменить любой пароль).
/usr/bin/sudo
и /usr/bin/passwd
может сделать это, потому что у них установлен бит setuid , как показано в том, s
что появляется в крайнем левом столбце при запуске ls -l
:
ek@Io:~$ type -a sudo passwd rm
sudo is /usr/bin/sudo
passwd is /usr/bin/passwd
rm is /bin/rm
ek@Io:~$ ls -l /usr/bin/sudo /usr/bin/passwd /bin/rm
-rwxr-xr-x 1 root root 60272 Feb 18 2016 /bin/rm
-rwsr-xr-x 1 root root 54256 Mar 29 2016 /usr/bin/passwd
-rwsr-xr-x 1 root root 136808 Aug 17 09:20 /usr/bin/sudo
Обратите внимание , что /bin/rm
не имеет s
: его права доступа -rwxr-xr-x
, в то время как /usr/bin/passwd
и /usr/bin/so
иметь -rwsr-xr-x
вместо этого. Это делает так, что независимо от того, кто запускает passwd
или sudo
, фактически, он работает от имени пользователя root, поскольку root является владельцем исполняемого файла. (Существует также бит setgid, который при установке запускает исполняемые файлы с идентификатором группы их владельца группы, а не идентификатора вызывающей стороны.)
За исключением любых уязвимостей безопасности, которые еще не были обнаружены (или которые были обнаружены, но еще не были исправлены) sudo
и passwd
являются безопасными, потому что эти утилиты написаны очень тщательно, поэтому они могут делать только то, что разрешено вызывающей стороне сделать.
/bin/rm
не работает таким образом. Это не setuid, потому что это не должно быть. Права доступа к каталогам (и иногда права доступа к файлам) определяют, какие файлы пользователь может удалить, и для этого ему не нужно становиться пользователем root. Просто чтобы быть совершенно ясным, пожалуйста, никогда не устанавливайте бит setuidrm
. Последствия для безопасности были бы катастрофическими, с тех пор, независимо от того, кто работает rm
, все равно , как если бы он запускал root! (Утилиты любят sudo
и passwd
проверяют, кто на самом деле их запускает, и проверяют, что что-то разрешено, прежде чем делать это; rm
такого не делает)
Проверка, установлен ли бит setuid (или setgid) на исполняемом файле, покажет вам, есть ли вероятность того, что ограничение того, кто может его запускать, повысит безопасность. Исполняемые файлы, которые не имеют setuid (или setgid), не имеют какого-либо особого статуса, и любой может просто скопировать их и запустить копию, принести свою собственную копию с другого компьютера, написать скрипт или программу, которая делает то же самое, или использовать другая программа для этого.
rm
Очевидный способ удалить файл без rm
Ubuntu - это перейти к его местоположению в графическом браузере файлов (Nautilus, если вы используете Unity или GNOME Shell) и удалить файл. Существует также множество команд, которые можно использовать для удаления файла из терминала, даже не используя его rm
.
Например, чтобы удалить файл, вызываемый foo.txt
в текущем каталоге, следующие команды, которые работают из коробки в Ubuntu и не требуют доступа rm
, достигнут этого. (Просто чтобы убедиться, я протестировал их на минимальной системе 16.04, установленной только со стандартными системными утилитами, после удаления /bin/rm
.)
unlink foo.txt
busybox rm foo.txt
perl -e 'unlink("foo.txt")'
python3 -c 'import os; os.remove("foo.txt")'
( python
вместо python3
старых версий)Этот список, конечно, далеко не полный. Полный список таких команд невозможен. Предотвращение удаления файлов - это одна из вещей, для которой существуют отдельные учетные записи пользователей и разрешения для файлов и каталогов. Они работают очень хорошо, чтобы предотвратить это. Напротив, изменение rm
команды (чтобы она требовала пароль или каким-либо другим способом) или ограничение доступа, чтобы rm
вообще не помешать.
rm
«s -I
вариант. Он запрашивает только удаление 4 или более файлов или рекурсивное удаление. Таким образом, вы не привыкли всегда использовать -f
, \rm
избегать расширения псевдонимов или печатать y
без чтения. Но это все равно спасет вас от неверных опечаток, когда вы нажмете клавишу возврата, прежде чем вы захотите, или ваш глобус совпадет со многими файлами.
mv foo.txt /tmp/.gone
затем перезагрузите компьютер, отбросив резервные копии tmpfs /tmp
. Или просто используйте, mv
чтобы переименовать несколько файлов с одинаковыми именами, чтобы остался только последний. Или просто скрыть файлы, переименовав их с непонятными именами. Как указывается в первой части этого ответа, если вы пытаетесь защититься от злого умысла, а не от некомпетентности, вам нужно просто заблокировать людей из своего аккаунта.
Вы можете изменить разрешения для /bin/rm
команды через следующую строку, чтобы предотвратить ее выполнение без доступа sudo:
sudo chmod 750 /bin/rm
Это особенно мешает им использовать rm
команду, предоставленную системой. Вы должны знать, что это не мешает им удалять файлы другими способами.
Чтобы также запретить им использовать rmdir
команду, которая является обычным способом удаления каталогов, вы можете установить разрешения таким же образом для пути к исполняемому файлу:
sudo chmod 750 /bin/rmdir
Напомним, что вы также можете использовать эти команды только с правами sudo.
Чтобы вернуть его обратно, если он вам не нравится или возникают другие проблемы, используйте 755
дляchmod
Как отметил @muru, вышесказанное является очень грубым решением и может даже сломать системные службы, которые не работают с учетной записью root . Поэтому я добавляю сюда еще одну опцию, использующую ACL (списки контроля доступа), чтобы сделать то же самое и, вероятно, гораздо более безопасную ( хорошо читать, и вы можете пропустить включающую часть, потому что ACL обычно устанавливается в системах Ubuntu в настоящее время):
Поэтому сделать то же самое, что и выше, только для пользователей, которых вы хотите заблокировать,
sudo setfacl -m u:<user-name>:- /bin/rm /bin/rmdir
Просто замените <user-name>
фактические имена пользователей, которые вы хотите предотвратить использование файлов.
Как и при chmod
использовании, используется setfacl -m
для предотвращения запуска определенных пользователей rm
и rmdir
применяется только к тем системным командам. Это не мешает им удалять ваши файлы и папки в Nautilus или с помощью других команд терминала.
Объяснение:
-m
флаг означает , что для изменения файлов ACL.u
стенды для пользователя. Может иметь следующие значения u
для пользователя, g
для группы и o
для всех остальных<user-name>
может содержать фактическое имя пользователя или имя группы в зависимости от того, что вы хотите изменить. Чтобы установить общие изменения, оставьте поле пустым.-
также можем содержать следующие буквы r
для разрешений на чтение, разрешений w
на запись и x
для выполнения.sudo setfacl -m u:<username>:- /bin/rm /bin/rmdir
IIRC. Вы можете проверить ACL сgetfacl /bin/rm /bin/rmdir
rm
. Решение, которое Videonauth предоставил здесь, является возможным способом помочь пользователям, подверженным несчастным случаям, прекратить удаление материала, но он не обеспечивает никакой реальной безопасности (что может быть хорошо, если друзья ОП не умышленно пытаются подорвать желания ОП). , Videonauth: Я предлагаю отредактировать этот пост, чтобы он четко пояснил, что на самом деле он не мешает людям удалять файлы, поскольку им не нужна rm
команда для этого. (Я воздерживаюсь от самостоятельного редактирования, если вы не хотите этого говорить.)
rm
команды.
Это очень простой ответ и остановит кого-то случайно с помощью команды rm без ввода пароля. Это не безопасное решение, и вы должны включить некоторые альтернативные предложения в других ответах.
Однако вы можете использовать псевдоним, чтобы изменить поведение команды rm. Пытаться:
alias rm="sudo -l >/dev/null && rm"
Что это делает, когда кто-то вводит команду rm, он запускает команду sudo -l. Эта команда заставляет пользователя вводить свой пароль. Если они понимают это правильно, он перечисляет их привилегии (мы отбрасываем этот вывод) и выходит со статусом 0, если они ошибаются, он существует с ошибкой.
Затем мы следуем команде sudo с «&&», которая выходит из следующей команды - в этом случае «rm» только в том случае, если предыдущая команда выходит со статусом 0 - то есть они получили правильный пароль.
Чтобы сделать это постоянным, включите команду alias в ~/.bashrc
.
Обратите внимание, что это очень легко победить (например, они могут просто напечатать /bin/rm
.
Я написал скрипт для защиты паролем, rm
как запрошенный OP, но также внес изменения, чтобы предотвратить случайное удаление:
Изменить: 5 марта 2017 - Изменить метод проверки, если работает в терминале.
Используйте gksu gedit /usr/local/bin/rm
и скопируйте в эти строки:
#!/bin/bash
tty -s;
if [ "0" == "$?" ]; then Terminal="Y"; else Terminal="N"; fi
if [ $Terminal == "Y" ] ; then
# Running from terminal don't allow delete of / or /toplevel directory even if sudo
for i in ${@:1}
do
# Skip options -i -r -v -d
if [[ ${i:0:1} != "-" ]] ; then
# if parameter doesn't begin with '-' it's file or directory, so get real path.
fullname=$(realpath "$i" 2>&1) # No error messages if file doens't exist
# We must have at least two `/` in the full path
levels=$(echo "$fullname" | tr -cd '/' | wc -c)
if (( $levels == 1 )); then # Test for 1, will be zero when file doesn't exist.
echo "Attempting to remove top level directory '$fullname'"
echo "Use 'sudo /bin/rm $@' instead."
exit 1 # error
fi
fi
done
fi
if [[ $(id -u) != 0 ]]; then # Only non-root processes enter password (ie "sudo rm ..." is ok)
if [ $Terminal == "Y" ] ; then
# Only running from a terminal needs password (ie not cron)
# log rm usage to /var/log/syslog
PARENT_COMMAND="$(ps -o comm= $PPID)"
logger "$PARENT_COMMAND"" - rm command was used on file: ""$fullname"
# Get password
Password=$(zenity --password --title="Password for rm")
encryptPassword=$(echo -n "$Password" | md5sum)
echo "md5sum: $encryptPassword" # Comment out after viewing one time and updating line below.
if [[ "$encryptPassword" != "d2c30dc65e59558c852ea30b7338abbe -" ]]; then
echo "Invalid password!"
exit 1
fi
fi # non-terminals can't enter password.
fi # root doesn't need to enter password.
# Call REAL rm command with parameters passed to this wrapper sript
/bin/rm "$@"
exit 0
Измените пароль «WE2U» на что угодно и сохраните файл.
rm
скрипт как исполняемыйОтметить новый rm
скрипт как исполняемый с помощью:
sudo chmod +x /usr/local/bin/rm
Если пароль не WE2U , при первом запуске скрипта вы получите «неверный пароль» и отобразится ключ шифрования для введенного вами пароля. Скопируйте и вставьте этот ключ шифрования из терминала в скрипт. Затем закомментируйте строку с эхо, которое отображало ключ шифрования на терминале.
Потому что путь /usr/local/bin
в списке выше, чем /bin
наша команда rm
называется. После получения действительного пароля он призывает /bin/rm
сделать реальное удаление.
Как отметил Томас Уорд в другом ответе, если вы сделаете это, sudo apt-get install ...
вас могут попросить ввести пароль тысячу раз. Скрипт проверяет, sudo
используется ли он, и не запрашивает пароль. Кроме того, если rm
вызывается из приложения с графическим интерфейсом, пароль не требуется.
Скрипт вызывает logger
для записи каждый раз, когда rm
вызывался вручную с помощью терминала. Использование команды записывается в /var/log/syslog
.
Другой альтернативой может быть создание резервных копий любых важных файлов в каталоге, к которому у пользователей без полномочий root нет доступа. Вы можете использовать rsync
или unison
синхронизировать их автоматически, просто убедитесь, что по крайней мере один каталог в пути к месту назначения резервной копии принадлежит пользователю root и режиму 700. Однако это приведет к двум копиям всех файлов. Было бы безопаснее просто создать гостевого пользователя для него, за исключением того, что вам нужно всегда помнить, чтобы всегда блокировать или выходить из системы, прежде чем отдавать им компьютер или оставлять его без присмотра.
Не прямой ответ на вопрос, который вы ищете, но:
Если ваши друзья удаляют ваши файлы с помощью rm
команды, то либо ваши друзья либо некомпетентны, либо придурки, либо они фанаты BOFH , которые пытаются научить вас не оставлять сеансы вошедшими в систему и оставленными без присмотра. Во всех случаях решение одно и то же: не оставляйте сеанс в системе без присмотра .
Это имеет то преимущество, что не нужно помнить о необходимости вносить специальные изменения в систему при каждом обновлении или приобретении новой системы, а также предотвращает непредсказуемые сбои непредсказуемым образом сценариев и других вещей, которые вы используете, которые полагаются на команды, ведущие себя так, как ожидается.
Это также имеет то преимущество, что мешает «друзьям» перейти к следующему шагу. Вы также захотите «защитить паролем» mv
команду, если они решат переместить ваши файлы в / dev / null, когда обнаружат, что простое удаление не дает желаемого результата? Когда вы в такой игре, единственный выигрышный ход - не играть.
У меня есть аналогичная возможность, которую я планировал. На файловом сервере, если основное хранилище фотографий доступно для записи, что кто-то в семье (менее технический или случайно) может что-то удалить, случайно перетащить в графический интерфейс, который перемещает каталог, или перезаписать оригинал отредактированной версией, а не переименовывать ,
Я понял, что могу защитить от этого, не делая разрешения недоступными для записи для всех остальных. ZFS делает периодические снимки, поэтому любое случайное удаление или перезапись могут быть отменены. (В отличие от резервной копии, снимок является легким и копируется при записи, поэтому он не увеличивает использование памяти).
ZFS является родным для FreeBSD. В Linux есть btrfs, у которого также есть снимки.
Очень глупый обходной путь для очень глупой проблемы.
Если вы не хотите chmod
rm
, rmdir
или mv
(для mv filename /dev/null
) или использование списков ACL, вы можете создать пользователя манекена с паролем никто кроме вас не знает и псевдоним каждую команду sudo [user]
, а затем сделать псевдонимы для каждой команды , что ваши друзья не знают , Таким образом, когда ваши друзья будут печатать, rm
система запросит у них пароль (но, если вы укажете неправильный пароль, войдет неудачная попытка), и вы все равно сможете просто набрать rmalias
или что-то другое, что вы решите удалить файлы.
Или вы можете просто создать гостевую учетную запись, которая не имеет доступа к вашему домашнему каталогу.
sudo [user]
dummy user
Если вы хотите защитить паролем rm, решением было бы создать оболочку для rm , которая требовала бы привилегий root, и в противном случае запросить пароль. (ПРИМЕЧАНИЕ. Эта оболочка может исчезнуть при обновлении или переустановке пакета coreutils .) Кроме того, обратите внимание, что это только защищает rm, есть еще много способов удалить файл.
Откройте терминал и станьте пользователем root. Затем бегите, sudo mv /bin/rm /bin/rmold
чтобы переместить старый рм в другое место.
Теперь беги sudo nano /bin/rm
чтобы создать обертку.
В Nano введите следующее:
#!/bin/bash
/bin/rmold "$@"
exit "$?"
Затем удерживайте CTRL
и нажмите X
для выхода. Нажмите, Y
когда вам предложат, затем нажмитеENTER
чтобы сохранить файл.
Наконец, нам нужно дать этому соответствующие разрешения:
sudo chmod a+x /bin/rm
И вот, пожалуйста.
$@
=> "$@"
. Здесь то, что вы предлагаете, является очень опасной версией оригинала и безопасной rm
: что, если существует файл с именем foo -i -r *
( -i
добавленный для защиты невинных пользователей)?
"
цитированию, $@
как говорит @xhienne, я настоятельно призываю вас четко предупредить читателей, что это вообще не обеспечивает никакой безопасности, поскольку существует много способов удаления файла. Один из них - позвонить rmold
, но есть множество других способов, о чем говорится в других ответах и комментариях к ним. (Даже тогда, это будет проблема , которая rm
будет чувствовать себя , как он удаляет файлы в качестве текущего пользователя - это называется без sudo
, и нормальные rm
работает как вызывающему - но делает это как корень Если они недавно sudo
эд, они выиграли» не замечают, что они могут удалять системные файлы, даже если они знают об изменениях.)