私は Linux をいじっていて、ターミナルの使用から始めています。ファイルシステムのルートにフォルダーを作成しようとしていますが、通常のユーザーにはその権限がありません。
実行時にsu root mkdir u01
資格情報の入力を求められますが、ターミナルから「バイナリファイルを実行できません」というエラーが返されます。
を実行しsu root
てから を実行するとmkdir u01
、コマンドは正常に動作します。
何か案は?
私はOracle Linux 6.5を使用しています
答え1
問題は への電話ですsu
。
別のユーザーとしてコマンドを実行するための正しい構文は次のとおりです。
su [username] -c "[command]"
コマンドを引用符で囲むことに注意してください。コマンドの他の引数が適切に実行されるようにすることが重要です。
答え2
全体的に、「通常の」ユーザーには、ファイルシステムのルートにファイルやフォルダを作成することを許可すべきではありません。これを許可すると、あらゆる種類のセキュリティ上の問題が発生します。
「su root mkdir u01」を実行すると、システムはルート パスワードを要求します。おそらく実行すべきなのは「sudo mkdir u01」で、通常のユーザー パスワードを要求します。これは、sudo がこれを許可するように適切に構成されていることを前提としていることに注意してください。
答え3
適切に設定されている場合sudo
、そのディレクトリを作成する適切な方法は次のとおりです。
sudo mkdir u01
何らかの理由で sudo が機能しない場合 (またはインストールされていない場合 - 可能性は低いですが、可能性はあります)、次のようにsu
コマンド パラメータを使用できます。-c
su -c "mkdir u01"
(コマンドは、 に適切に渡すために引用符で囲む必要があることに注意してくださいsu
)。
sudo
vsの使用の重要な違いsu
: パスワードを要求されたとき、sudo
ではユーザー アカウントのパスワードが必要ですが、 ではsu
root アカウントのパスワードが必要です。多くの Linux ディストリビューション (特に Ubuntu/Debian ファミリ) では、root アカウントのパスワードが割り当てられることすらなく、su
失敗する可能性があります (事前に root アカウントにパスワードを割り当てていない限り)。