私は新しいUbuntuユーザーであり、OSにまだ慣れています。私は主に、開発中のサイトのローカルテストに使用しています。このためにLAMPスタックをダウンロードしました。
Ubuntuを初めてダウンロードしたとき、開発中のファイルを編集するたびに、Sudo nano filename
と入力する必要がありました。私がテストしていたファイルについてのみ、ホームディレクトリ内のファイルについてはこのようではありませんでした。
今日ログオンしたときに、Sudo
と入力する必要はなく、nano filename
と入力してファイルを編集するだけでした。どうにかしてSudo
パスワードの必要性を無効にしたかどうかはわかりません。
grep root /etc/passwd
を実行し、grep root /etc/shadow
を実行しましたが、Sudo
を入力せずにアクセスを拒否しました。すると、root:!
が表示されました。私が読んだことから、それはアカウントが無効になっていることを意味します。
パスワードが無効になっているのか、アカウントがロックされていて何も問題がないのかどうかはわかりません。
Rootとして実行していないことを確認する方法はありますか?現在それを無効にする方法がある場合、管理者としてのみ実行しています。
また、ファイルを編集するためにSudo
パスワードを入力する必要が突然なくなったのはなぜですか?
あなたの答えをありがとう、私の質問が不明瞭な場合、私が明確にしようとすることができるように私に知らせてください。
Bash(デフォルト)を使用している場合、プロンプトは、rootとして機能しているかどうかを示します。 「$
」で終わる場合は、通常のユーザーとして実行しています。 「#
」で終わる場合は、ルートとして実行しています。
さらに、
whoami
あなたが誰であるかが表示されます。
Sudoアクセスが必要だったファイルを突然編集できる場合、最初の疑いは、ファイルのアクセス許可をなんとかして変更できたことです。入力した場合:
ls -l <filename>
結果を調べると、rwxセクションに権限が表示されます。
-rw-rw-r-- 1 user user 77338 Oct 21 17:59 filename.odt
|\ /\ /\ /
| | | +-- permissions for "other": every user on the system.
| | +----- permissions for "group"
| +-------- permissions for "owner"
+---------- filetype (- is regular file)
書き込み許可を持つグループに属している場合、または「その他」に書き込み許可がある場合、ファイルへの書き込みにSudoアクセスは必要ありません。
ファイル許可の詳細については、 Linux許可の概要 を参照してください。
Rootまたは他のユーザーが所有するファイルを編集するには、rootのみを使用する必要があります。 作成または所有するファイルは、rootを使用せずに編集できます。
例えば。次のコマンドを実行します
cd $HOME
touch test.txt
nano test.txt
上記のコマンドは、ホームディレクトリ(個人用領域)に移動し、test.txtというファイルを作成してから、nanoというエディターを使用してファイルを入力しました。
今すぐ試してみると:
nano /etc/apt/sources.list
ファイルは表示できるはずですが、ファイルを編集できないという警告が表示されます。
これは、ファイルの所有者が自分ではない場合でも、すべてのユーザーに読み取りアクセス権があるためです。これは次の図に示すことができます。
Ubuntuでアクセス許可を簡単に表示するには、次のように入力します。
ll /path/to/parent/directory
または、debianなどの他のシステムの場合
ls -al /path/to/directory
ユーザーのアクセス許可について読むための素晴らしいオンラインチュートリアルがたくさんあります thisなど 。 Linuxの権限を理解していないため、サーバーの安全性が低いため、/ var/wwwのすべてを777に設定してWebサーバーを「動作」させるなど、愚かなことをしている人をよく見かけます。
私は新しいubuntuユーザーです...
頑張ってLinuxにようこそ!言葉を広める。
「あなたが誰であるか」を詳細に表示するには、コマンドid
:を使用します
$ id
uid=1000(alphawolf) gid=1000(alphawolf) groups=1000(alphawolf),4(adm),24(cdrom),25(floppy),27(Sudo),29(audio),30(dip),44(video),46(plugdev),107(netdev),113(lpadmin),128(sambashare),132(wireshark),2000(humans-bc-aw)
ご覧のとおり、アカウントによっては出力がかなり長くなる場合があります。
uid=1000(alphawolf)
"を表示するだけでなく、gid=1000(alphawolf)
」アカウントがメンバーになっている他のすべてのグループの名前とID。デフォルトでは、このリストには、通常/制限ユーザーの場合はプライマリグループのみが含まれ、管理ユーザーの場合は少なくともadm
とSudo
を含む長いリストが含まれます。
groups=1000(alphawolf),4(adm),24(cdrom),25(floppy),27(Sudo),29(audio),30(dip),44(video),46(plugdev),107(netdev),113(lpadmin),128(sambashare),132(wireshark),2000(humans-bc-aw)
今、この情報を持つファイルのアクセス権をどのように判断できますか?
例のように、ls -l /path/to/file-or-directory
の出力を取得します。
$ ls -l /usr/bin/dumpcap
-rwxr-xr-- 1 root wireshark 85632 Aug 16 01:43 /usr/bin/dumpcap*
このファイルは、昇格した特権でネットワークパッケージをキャプチャするためにWiresharkが使用する実行可能ファイルです。所有者とグループのアクセス許可が異なるため、私はそれを選択しました。
重要な詳細を見てみましょう。
所有者:root
これはファイルを所有しているユーザーです。
グループ:wireshark
これは、このファイルが割り当てられるユーザーグループです。
パーミッション文字列:-rwxr-xr--
これらは、user、groupのファイルパーミッションです以下に説明するメンバーおよびその他すべて:
- rwx r-x r--
| \ / \ / \ /
| V V V
| | | \__ Other permissions: [r] 'r'ead access granted
| | | [-] 'w'rite access denied
| | | [-] e'x'ecuting denied
| | \__ Group permissions: [r] 'r'ead access granted
| | [-] 'w'rite access denied
| | [x] e'x'ecuting granted
| \__ Owner permissions: [r] 'r'ead access granted
| [w] 'w'rite access granted
| [x] e'x'ecuting granted
\__ File type: [-] normal file
(alternatives: 'd'irectory, sym'l'ink,
'c'haracter device, 'b'lock device, ...)
さて、上記のalphawolf
出力を持つユーザーid
は、このファイルで何ができますか?
root
ead、r
rite、およびew
ecute権限を持っているユーザーx
ではないではありません。wireshark
グループのメンバーであるため、ファイルのグループに設定された権限を持っています:ファイルをr
eadし、ex
ecuteすることはできますが、変更することはできません(w
riteアクセスなし)。r
eadすることしかできませんでしたが、それをw
riteすることもex
ecuteすることもできませんでした。これは、異なるシステムファイルに対する権限を判断するのに役立ちます。
ほとんどのシェルではこれが可能です
if [ $USER = root ] ; then echo Im root; fi
Bashはこれもサポートしています
if [ $UID = 0 ] ; then echo Im root; fi