Linuxでディレクトリを作成して単一のコマンドで権限を与える方法は?
完全な権限でたくさんのフォルダを作成する必要があります777
。
コマンド
mkdir path/foldername
chmod 777 path/foldername
2つのコマンドで作成して許可を与えるのは好きではありません。これを単一のコマンドで実行できますか?
Linuxでディレクトリを作成して単一のコマンドで権限を与える方法は?
完全な権限でたくさんのフォルダを作成する必要があります777
。
mkdir path/foldername
chmod 777 path/foldername
2つのコマンドで作成して許可を与えるのは好きではありません。これを単一のコマンドで実行できますか?
回答:
mkdirのマニュアルページによると...
mkdir -m 777 dirname
-p
上記の@DisplayNameに関する問題の他に、別の問題もあります。これ-m
は、ディレクトリが実際に作成された場合にのみ適用されます。すでに存在する場合、そのモードは変更されません。コンテキストに応じて、これは良い場合も悪い場合もあります。
install -d -m 0777 /your/dir
あなたが望むものをあなたに与えるはずです。すべてのユーザーがそのディレクトリの追加および削除ファイルを書き込む権利を持っていることに注意してください。
three
デフォルトのアクセス許可でパスに十分です。
ディレクトリがすでに存在する場合:
mkdir -m 777 /path/to/your/dir
ディレクトリが存在せず、親ディレクトリを作成する場合:
mkdir -m 777 -p /parent/dirs/to/create/your/dir
find /your/dirs -type d -exec chmod 755 {} \;
上記の答えのいくつかを拡張して改善するだけです:
まず、mkdir manページでGNU Coreutils 8.26を確認します。これにより、オプション「-m」および「-p」に関する情報が得られます(それぞれ--mode = MODEおよび--parentsとして指定することもできます)。 ):
... set [s]ファイルモード(chmodなど)、a = rwxではない-umask
...存在する場合はエラーなし、必要に応じて親ディレクトリを作成
ステートメントは曖昧で、私の意見では不明確です。しかし、基本的には、「chmod数値表記」(8進数)で指定されたアクセス権でディレクトリを作成できるか、「逆の方法」でumaskを使用できると記載されています。
補足:私は「逆の方法」と言います。umaskの値は実際にはそれがどのように聞こえるかです。つまり、chmodの8進数表記のように「許可」するのではなく、マスク、許可を非表示/削除します。
shell-builtinコマンドumask
を実行して、3桁のumaskを確認できます。私にとっては022
です。つまりmkdir yodirectory
、特定のフォルダー(たとえばmahome)で実行すると、次のstat
ような出力が得られます。
755 richard:richard /mahome/yodirectory
# permissions user:group what I just made (yodirectory),
# (owner,group,others--in that order) where I made it (i.e. in mahome)
#
次に、これらの8進数のアクセス許可についてほんの少しだけ追加します。ディレクトリを作成すると、「あなたのシステム」はデフォルトのディレクトリperms ' (新しいディレクトリに適用されます(その値は777である必要があります))を取り、yo(u)maskで平手打ちし、それらのpermsの一部を効果的に隠します。私のumaskは022です。つまり、777から022を「減算」すると(技術的に減算は過度に単純で常に正しいわけではありません。実際にはパーマをオフにするか、マスクをマスクします)...指定されたとおりに755になります(または「示されています」) ) ついさっき。
3桁の8進数の前にある「0」は省略できます(4桁である必要はありません)。この場合、スティッキービット、setuid、またはsetgidsは必要なかった(または言及しなかった)ためです。 (あなたはそれらを調べたいかもしれません、ところで、あなたは777に行くのでそれらは役に立つかもしれません)。したがって、言い換えると、0777は777を意味します(または同等です)(ただし、777は必ずしも0777と同等ではありません。777は、setuids、setgidsなどではなく、アクセス許可のみを指定するためです)。
さて、これをより広い意味であなたの質問に適用するために-あなたは(すでに)いくつかのオプションを持っています。上記のすべての答えは機能します(少なくとも私のcoreutilsによると)。ただし、777のアクセス許可を持つサブディレクトリ(ネストされたディレクトリ)を一度に作成する場合は、上記の解決策で問題が発生する可能性があります(または発生する可能性が高い)。具体的には、0222のumaskを使用してmahomeで以下を実行した場合:
mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff
私はパーマなります755
両方のためにyodirectory
とyostuff
だけで、777
用パーマmastuffinyostuff
。だから、それumask
は叩きつけられたすべてであるように見えます... yodirectory
そしてyostuff
これを回避するためにサブシェルを使うことができます:
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
以上です。yostuff、mastuffinyostuff、yodirectoryの777 perms。
しないでください。 mkdir -m 777 -p a/b/c
これ777
により、最後のディレクトリcにのみ権限が設定されます。aとbは、umaskからのデフォルトの許可で作成されます。
代わりに、権限を持つ新しいディレクトリを作成777
するmkdir -p
には、umaskをオーバーライドするサブシェルで実行します。
(umask u=rwx,g=rwx,o=rwx && mkdir -p a/b/c)
ただし、a、b、cのいずれかがすでに存在している場合でも、権限は変更されません。
mkdir temp; chmod 777 temp
1行です。'temp'を変数にして、bashコマンドとして保存できます。これはあなたが探していることですか?