友だちは端末を使用してファイルを削除し続けます。そのため、rm
コマンド用のパスワードの作成方法を説明してください。
友だちは端末を使用してファイルを削除し続けます。そのため、rm
コマンド用のパスワードの作成方法を説明してください。
回答:
そのようなパスワードをrm
コマンド自体に設定する簡単な方法はありません。おそらくapt-get
、パッケージのインストールやファイルの削除などの多くのコードハッキングがなければ、パスワードを何千回も入力する必要があるか、潜在的に混乱を招く可能性があります人へのコマンドへのアクセスでしょう(自分のファイルを削除するには、あなたのような)それを必要とします。複数のユーザーアカウントと複数のアクセス許可セットを持ち、アクセスできないようにデータの異なるセクション(ホームディレクトリなど)へのアクセスを制限することで、これを並べ替えることができます。
(他のオプションは、Videonauthによって投稿された他の回答に詳述されているように、各ユーザーの個別のユーザーアカウント、そしてアクセスコントロールリストです)
ここに核となる問題があります-あなたはあなたの友人にあなたのシステムを使わせています。これには多くのセキュリティへの影響があります-「ボックスに物理的にアクセスできる人は誰でもシステムを制御してタスクを実行できる」という概念はITセキュリティマントラです。そのため、物理システムアクセスを「共有」しません。信頼できる承認された担当者を除きます。
唯一本当にこれを行うにはまともな方法は、お友達へのアクセス与えないことです、あなたのあなたは本当に多くのように上のファイルを気にしないことを、コンピュータを、そして彼らが使用できることを彼らに「専用の『ゲスト』システム」を与えます。これは、ファイルを安全に保つための最も「安全な」方法です。
もちろん、それがオプションではない場合、唯一の本当に安全なオプションは、ユーザーごとに異なるホームフォルダを持つ複数のユーザーアカウントを構成し、自分のホームディレクトリまたは他のユーザーのホームへのアクセスを許可しないことですディレクトリ。そして、あなたが彼らに触れたくないすべてのものをあなたのホームディレクトリに置き、彼らにsudo
アクセス、root
パスワードを与えたり、彼らとパスワードを共有したりしないでください。
これはあなたがこれを行う方法です:
私の名前が「Foo」で、友人のユーザー「Bar」が私のシステムを使用するが、ファイルにはアクセスしないようにしたいとします。最初のステップは、ホームディレクトリへの自分以外のアクセスを拒否することです。これは、他のユーザーがあなたのファイルを削除しないようにするだけでなく、他のユーザーがホームディレクトリを覗き見して、ホームディレクトリにあるものを見ることができないようにするためです。
chmod 750 /home/Foo
2番目のステップは、「バー」のユーザーアカウントを作成することです(下の括弧内の内容は入力しないでください。情報提供のみを目的としています)。このようにして、彼が独自のアクセス権セットを持っていることを確認できます。
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
しないであなたのファイルを削除することはできません-あなたはこれを許可しないので、彼らはできませんあなたのものに触れます。そして、彼らはあなたのファイルを見ることができません、スーパーユーザーにならないで、ここでは起こりません。
常にこれを思い出してください:マシンへの物理的なアクセス、または一般的なアクセスを誰かに与えることにより、ファイルとデータを危険にさらすことになります。これは、ITセキュリティの世界で広く受け入れられている事実であり、引き続き真実です。友人にコンピューターへのアクセスを許可すると、常にデータが危険にさらされるため、自分のシステムを混乱させたり、コンピューターへのアクセスを許可しないでください。
ディスク暗号化に関する注意
ディスクの暗号化はサードパーティからデータを保護するのに適していますが、制限があります。
ディスク暗号化はこれらの問題を解決しませんが、脅威アクターに頭痛の種を追加します。悪意のある人は、暗号化されている場合はgive めるかもしれませんし、あなたを拷問するかもしれません(XKCDセキュリティコミックストリップをキューに入れる)。
したがって、システムが暗号化されているが、他のユーザーに使用を許可している場合、ユーザーは復号化するためのパスワードを持っているか、ラップトップを復号化したままにして、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
ファイルを削除したくないことを友人が知っていると仮定すると、2つの可能性があります。
彼らは意図的にそれをしている可能性があります。このシナリオでは、友人が故意にファイルを削除しているため、コンピューターを使用する際のデータの扱い方についての希望を遵守しようと信頼することさえできません。この問題の唯一の解決策は、トーマスウォードが詳細に説明したように実際の効果的なセキュリティ対策を使用することです。多くの場合、このような最善の対策は、コンピューターを使用しないようにすることです。ただし、独自のユーザーアカウントを使用することで、ある程度の保護を提供できます。
彼らは間違ってそれをしている可能性があります。このシナリオでは、友人は非常に事故を起こしやすく、rm
彼らは望んでいないコマンドを実行し続けます。彼らはあなたとあなたのデータを尊重して扱いたいと思っていますが、間違ったコマンドを実行したり、間違ったファイルを削除したりするなど、実際にそうするのは本当に悪いです。これが起こっていると信じることは素晴らしいことですが、停止するように指示した後にデータを削除し続ける人々が悪意なく動作していると仮定することに対して警告します。
さらに、意図が良い場合でも、ユーザーアカウントを個別に指定することは、コンピューターの使用を許可しないことを除いて、ファイルの削除を防ぐ最も確実な方法です。
状況が本当に#2である場合-あなたの友人はあなたのファイルを削除しようとはしていませんが、誤ってそれらを削除しないでください、そして彼らが誤ってそれらを削除する唯一の方法は、少数のコマンドの不注意な誤用によるものです(などrm
)正しく使用するのに特別な問題があること-Videonauthの答えのテクニックはいくらか役に立つかもしれません。ただし、rm
コマンドはファイルを削除する多くの簡単な方法の1つにすぎないため、これらはセキュリティ対策ではないことを理解する必要があります。詳細は以下をご覧ください。
「自分の状況は基本的に、自分のコンピューターを使用する他の人ではなく、自分がrm
間違って使用していたのと同じですか?」と自問することをお勧めします。
答えがnoの場合、これは情報セキュリティの問題であり、友人がユーザーアカウントを使用できないようにする必要があります。答えがyesの場合、誤用している場合と同じアプローチを使用できます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
(Videonauthのアプローチの場合のように、以下を参照)。しかし、実際のセキュリティが必要ない場合(上記を参照)、これが道のりかもしれません。友人がシステム提供のrm
コマンドを使用できないようにするアプローチと比較して:
エイリアシングrm
には、rm -i
ミスを防止することで、あまり効果的である-彼らはファイルを削除するために、いくつかの他の技術を使用してに移動するまで。その時点で、rm
彼らが何も悪いことをしようとしていないとしても、それらを使用しないようにすることは完全に無効になりますunlink
。
一方、エイリアスの展開は特定の状況(大まかに言えば、シェルの通常のインタラクティブな使用)でのみ発生するため、実際にプロンプトが表示されていないときに、プロンプトが表示されると友人が考える場合があります(コマンドがたとえば、スクリプト、または別のシェルから発行された)。Videonauthの方法にはこの問題はありません。これは、この方法の客観的な利点です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
、while /usr/bin/passwd
、および/usr/bin/so
have -rwsr-xr-x
です。これにより、実行者passwd
または実行者に関係なくsudo
、実際にはrootユーザーとして実行されます。これは、rootが実行可能ファイルの所有者であるためです。(setgidビットもあります。このビットを設定すると、実行可能ファイルは呼び出し元ではなくグループ所有者のグループIDで実行されます。)
まだ発見されていない(または発見されていることが、まだパッチが適用されていない)任意のセキュリティ上の脆弱性を除き、sudo
及びpasswd
これらのユーティリティは非常に慎重に書かれているので、呼び出し側が許可されるべきであることを、彼らは唯一のものを行うことができますので、安全ですする。
/bin/rm
この方法では動作しません。それは必要ではないので、setuidではありません。ディレクトリのアクセス許可(および場合によってはファイルのアクセス許可)は、ユーザーが削除できるファイルを制御します。削除するためにrootになる必要はありません。完全に明確にするために、setuidビットをオンに設定しないrm
でください。セキュリティへの影響は悲惨なものになります。それ以来、だれが実行しrm
ても、rootが実行したかのようです。(ユーティリティはsudo
、passwd
誰が実際に実行しているかを確認し、実行する前に何かが許可されていることを確認します; rm
そのようなことはしません。)
実行可能ファイルにsetuid(またはsetgid)ビットが設定されているかどうかを確認すると、実行できるユーザーを制限することでセキュリティが向上する可能性があるかどうかがわかります。setuid(またはsetgid)でない実行可能ファイルには特別なステータスはなく、誰でも簡単にコピーしてコピーを実行したり、別のマシンから自分のコピーを持ってきたり、同じことを行うスクリプトやプログラムを書いたり、それを行う別のプログラム。
rm
せずにファイルを削除する明白な方法rm
のUbuntuには、(あなたがUnityまたはGNOMEシェルを使用している場合、ノーチラス)グラフィカルなファイルブラウザにその場所に移動し、ファイルを削除することです。を使用せずに端末からファイルを削除するために使用できるコマンドも多数あります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
はなく)もちろん、そのリストは完全なものではありません。そのようなコマンドの完全なリストは不可能です。ファイル削除の防止は、個別のユーザーアカウントとファイルおよびディレクトリのアクセス許可が存在することの1つです。彼らはそれを防ぐために非常にうまく機能しています。対照的に、rm
コマンドを変更する(パスワードを必要とする、またはその他の方法で)か、アクセスを制限してコマンドをrm
まったく妨げないようにします。
rm
の-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が指摘したように、上記は非常に粗雑なソリューションであり、ルートアカウントで実行されていないシステムサービスを破壊する可能性さえあります。したがって、ここで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が提供するソリューションは、偶発的なユーザーがアイテムの削除を停止できるようにする可能性のある方法ですが、実際のセキュリティは提供しません(OPの友人がOPの意図を故意に破壊しようとしていない場合は大丈夫かもしれません) 。Videonauth:この投稿を編集することをお勧めしますrm
。そうすれば、コマンドを実行する必要がないため、実際にファイルを削除することを妨げないことがはっきりとわかります。(あなたがそれを言いたくない場合のために、私はそれを自分で編集することを控えています。)
rm
コマンドのアクセス許可を変更するだけでは不十分です。
これは非常に単純な答えであり、パスワードを入力せずにrmコマンドを使用して誰かを何気なく停止させます。これは安全なソリューションではないため、他の回答の代替案のいくつかを暗示する必要があります。
ただし、エイリアスを使用して、rmコマンドの動作を変更できます。試してください:
alias rm="sudo -l >/dev/null && rm"
これは、誰かがrmコマンドを入力すると、sudo -lコマンドを実行します。このコマンドは、ユーザーにパスワードの入力を強制します。正しく取得できた場合、権限を一覧表示し(この出力は破棄します)、ステータス0で終了します。間違った場合はエラーで存在します。
次に、sudoコマンドの後に「&&」を付けて、次のコマンドを終了します。この場合は、前のコマンドがステータス0で終了した場合のみ「rm」です。つまり、パスワードは正しくなりました。
これを永続的にするには、にaliasコマンドを含めます~/.bashrc
。
これは非常に簡単に無効化されることに注意してください(たとえば、単にタイプすることができます/bin/rm
。
rm
OPが要求したようにパスワードで保護するスクリプトを作成しましたが、誤って削除しないように編集も加えました。
編集: 2017年3月5日-ターミナルで実行中かどうかを確認する方法を変更します。
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
GUIアプリケーション内から呼び出された場合、パスワードは不要です。
スクリプトは、ターミナルを使用して手動で呼び出されるlogger
たびに記録を呼び出しますrm
。コマンドの使用はに記録され/var/log/syslog
ます。
もう1つの方法は、非ルートユーザーがアクセスできないディレクトリに重要なファイルのバックアップコピーを作成することです。バックアップ先へのパスで少なくとも1つのディレクトリがルートおよびモード700によって所有されていることを確認するだけで、それらを自動的に使用rsync
またはunison
同期できます。これにより、すべてのファイルのコピーが2つ作成されます。ゲストユーザーを作成して使用する方が安全です。ただし、コンピューターを提供したり、無人で放置する前に、常にロックまたはログアウトすることを忘れないでください。
あなたが探している質問に対する直接的な答えではありませんが:
友人がrm
コマンドを使用してファイルを削除している場合、友人は無能であるか、ジャークであるか、セッションにログインしたまま放置しないように教えようとしているBOFH志望者です。すべての場合において、解決策は同じです。セッションをログインしたまま放置しないでください。
これには、アップグレードまたは新しいシステムを取得するたびにシステムに特別な変更を加えることを覚えておく必要がないという利点があり、また、予想どおりに動作するコマンドに依存するスクリプトやその他の使用が予測できない方法で失敗することを防ぎます。
また、「友人」が次のステップに進まないようにするという利点もあります。またmv
、単純な削除では目的の処理が行われないことがわかったときに、ファイルを/ dev / nullに移動することを決定した場合、コマンドを「パスワード保護」したいでしょうか?このようなゲームをプレイしているとき、勝つ唯一の方法はプレイしないことです。
私が計画したのと同じような可能性があります。ファイルサーバーで、写真のメインストレージが書き込み可能で、家族の誰かが(技術的でない、または偶然に)何かを削除する可能性がある場合、ディレクトリを移動するGUIを誤ってドラッグするか、元の名前を名前を変更せずに編集バージョンで上書きします。
私は、アクセス権を他のすべてのユーザーに書き込み不可にすることなく、それに対して保護できることに気付きました。ZFSは定期的なスナップショットを作成するため、誤って削除したり上書きしたりした場合は元に戻すことができます。(バックアップとは異なり、スナップショットは軽量でコピーオンライトであるため、ストレージの使用量を増やすことはありません。)
ZFSはFreeBSDにネイティブです。Linuxにはスナップショットもあるbtrfsがあります。
非常に愚かな問題に対する非常に愚かな回避策。
あなたがしたくない場合chmod
rm
、rmdir
またはmv
(のためmv filename /dev/null
)、または使用のACLは、パスワードの誰とダミーのユーザーを作成することもできますが、あなたは知っていて、各コマンドの別名sudo [user]
、その後、あなたの友人が知らないことを、各コマンドのエイリアスを作ります。この方法では、友人rm
がシステムを入力すると、パスワードの入力を求められます(ただし、パスワードを間違って推測すると失敗した試行がログに記録されます)rmalias
。
または、ホームディレクトリにアクセスできないゲストアカウントを作成することもできます。
sudo [user]
とdummy user
rmをパスワードで保護する場合、解決策は、root権限を必要とするrmのラッパーを作成し、それ以外の場合はパスワードを要求することです。(注:coreutilsパッケージが更新または再インストールされると、このラッパーはなくなる可能性があります。)また、これはrmを保護するだけであり、ファイルを削除する方法は他にもたくさんあります。
ターミナルを開き、rootになります。次に、実行sudo mv /bin/rm /bin/rmold
して古いrmを別の場所に移動します。
次に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
無実のユーザーを保護するために追加されましたか)?
"
引用に加えて$@
、ファイルを削除する方法はたくさんあるので、これはセキュリティをまったく提供しないことを読者に明確に警告することをお勧めします。1つはを呼び出すことrmold
ですが、他の回答やコメントで説明されているように、他にもさまざまな方法があります。(それでも、これは問題がありますrm
でしょう感じることはせずに呼ばれています-それは、現在のユーザーとしてファイルを削除しますようにsudo
、通常のrm
呼び出し側として動作します! -彼らは最近している場合が、ルートとしてそうsudo
編、彼らが」勝ちました変更について知っていても、システムファイルを削除している可能性があることに注意してください。)