LoginSignup
14
11

More than 3 years have passed since last update.

permission denied(パーミッション ディナイド)とは? 

Last updated at Posted at 2020-07-06

概要

今日は自動デプロイの学習中にpermission denied問題で悩み、権限系の知識が浅いと感じましたので復習を兼ねて詳しく調べてみました。

permissionとは英語で「許可や権限」を指し、deniedとは「否定の過去形で否定した」という意味を持ちます。つまり、permission deniedとは「権限がありません」というような意味を持ちます。
そして、プログラミングにおけるpermissionは「誰に、どのような操作を許可するのか」という権限を規定する情報が設定されています。この情報のことを、パーミッションと呼びます。

パーミッションを確認するには?

lsコマンド-lオプションで実行します。
するとこんな感じの画面になるかと思います。

ターミナル
$ ls -l 
drwxr-xr-x. 20 root  root  2077 July  5 14:34 bin/cat

「d」はディレクトリを指し、rwxはr(読み込み)、w(書き込み)、x(実行)を表し、それぞれ左側から「オーナー」、「グループユーザー」、「その他ユーザー」を表しています。
したがって「rwxr-xr-x」のような表示になっています。
※この場合だと、オーナーには「全権限」があって、グループユーザーとその他ユーザーは「読み込みと実行」が可能で「書き込み」の権限がないと言われています。

権限を変更するには?

chmodコマンドを指定します。chmodは「チェンジモード」と読みます。
書式は以下のようになります。
chmod <8進数の数値> <ファイル名>

意味  数字
読み取り(r) 4
書き込み(w) 2
実行(x) 1

例として、以下のようにコマンドを入力することで権限を変更できます。
今回だと2行目のchmod 755 file.txtの部分が当たります。

ターミナル
$ ls -l file.txt
-rw-r--r--  1 takuya  staff  0 Jul 12 18:58 file.txt

$ chmod 755 file.txt

$ ls -l file.txt
-rwxr-xr-x  1 takuya  staff  0 Jul 12 18:58 file.txt*

つまり、「755」というのは「7(4+2+1)5(4+1)5(4+1)」であり、ユーザには全てに権限を、グループとそののユーザには「読み込み」と「実行」する権限を与えているわけです。

スーパーユーザー

ありとあらゆる操作が許可された強い権限を持つユーザがスーパーユーザです。ユーザ名がrootであることから「rootユーザ」とも呼ばれます。スーパーユーザはあらゆる操作が許可された強い権限をもつユーザであり、設定ファイルを変更したり、新しいアプリケーションをインストールしたりすることができますが、強い権限をもつだけにリスクも伴いますので、通常は一般ユーザでログインして操作し、必要な時だけスーパーユーザとして作業するといったことが大切になります。
コマンドとしてsuコマンドsudoコマンドがありますが、違いは、suコマンドを実行したのちには、exitコマンドでsuperuser状態から抜ける必要があります。
また、sudoコマンドはrootユーザーに成り代わってコマンドを実行するのに対して、suコマンドはrootユーザーにそのまま成り代わって操作することを可能にするため、rootユーザーのパスワードが求められます。

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11