はじめての方へ
質問箱
Team
相談箱
編集のすすめ
PukiWiki改造メモ
最近更新100件
最近更新ノート
UNIX
コマンド
便利な技
周辺機器
基礎知識
学生ツール
設定、設定ファイル
会津大学ローカル
会津大学への接続
講義関係
過去物
検索
ツールボックス
新しいページの作成
バックアップの表示
リンク元
最近更新したページ
全ページ
ヘルプ
凍結
アップロード
ページ名の変更
recent(10)
2021-02-19
質問箱/46
2020-10-15
質問箱/45
2019-11-29
質問箱/43
2019-11-14
質問箱/44
2018-04-06
UNIX/設定
2017-07-28
UNIX/設定、設定ファ%
2017-04-17
相談箱
2016-11-14
RecentDeleted
2016-07-31
UNIX/周辺機器/USBストレージ
UNIX/コマンド/変換/bmeps - 画像ファイルを高品質なepsに変換
今日の人気
UNIX/コマンド/変換/mogrify
(4)
UNIX/コマンド/tex/bibtex
(4)
UNIX/コマンド/圧縮、アーカイブ/lha
(3)
UNIX/コマンド/テキスト処理/cat
(3)
SandBox
(3)
UNIX/コマンド/ユーザー情報/whoami
(3)
UNIX/コマンド/ファイル管理/ln
(3)
UNIX/コマンド/ファイル管理/chmod
(3)
UNIX/コマンド/画像/display
(2)
UNIX/学生ツール/メディアプレーヤー/wmplayer
(2)
UNIX/コマンド/ファイル管理/pushd、popd、dirs
(2)
UNIX/周辺機器/USBストレージ
(2)
UNIX/基礎知識/ワイルドカード、メタキャラクタ
(2)
UNIX/設定、設定ファイル/.xsession
(2)
UNIX/コマンド/エディタ/vim
(2)
Help
(2)
UNIX/設定、設定ファイル/.rhosts
(2)
UNIX/コマンド/テキスト処理/grep
(2)
UNIX/コマンド/プロセス管理/kill
(2)
UNIX/コマンド/X/xdpyinfo
(2)
昨日の人気
UNIX/コマンド/変換/mogrify
(15)
UNIX/コマンド/ファイル管理/chmod
(11)
UNIX/コマンド/変換/convert
(9)
UNIX/設定、設定ファイル/.rhosts
(9)
UNIX/コマンド/シェル・シェル組み込み/zsh
(8)
UNIX/コマンド/tex/dvipdfm
(7)
UNIX/コマンド/シェル・シェル組み込み/foreach
(6)
UNIX/基礎知識/ワイルドカード、メタキャラクタ
(6)
UNIX/コマンド/ユーザー情報/ypcat
(6)
UNIX/コマンド/変換/sox
(6)
UNIX/コマンド/テキスト処理/tr
(5)
UNIX/コマンド/テキスト処理/diff
(5)
UNIX/コマンド/テキスト処理/sort
(5)
UNIX/コマンド/ファイル管理/touch
(4)
UNIX/便利な技/コマンドの出力を引数にする
(4)
UNIX/設定、設定ファイル/.xsession
(4)
過去物/会津大学ローカル/講義関係/過去問倉庫
(4)
UNIX/コマンド/テキスト処理/uniq
(4)
UNIX/コマンド/ファイル管理/rm
(4)
UNIX/コマンド/テキスト処理/paste
(4)
最近の人気
UNIX/コマンド/変換/mogrify
(19)
UNIX/コマンド/ファイル管理/chmod
(14)
UNIX/設定、設定ファイル/.rhosts
(11)
UNIX/コマンド/変換/convert
(10)
UNIX/コマンド/シェル・シェル組み込み/zsh
(9)
UNIX/コマンド/tex/dvipdfm
(8)
UNIX/コマンド/ユーザー情報/ypcat
(8)
UNIX/基礎知識/ワイルドカード、メタキャラクタ
(8)
UNIX/コマンド/シェル・シェル組み込み/foreach
(7)
UNIX/コマンド/変換/sox
(7)
SandBox
(7)
UNIX/コマンド/テキスト処理/paste
(6)
UNIX/コマンド/テキスト処理/sort
(6)
UNIX/コマンド/テキスト処理/tr
(6)
UNIX/コマンド/テキスト処理/diff
(6)
UNIX/設定、設定ファイル/.xsession
(6)
UNIX/コマンド/シェル・シェル組み込み/setenv
(5)
UNIX/コマンド/テキスト処理/uniq
(5)
UNIX/コマンド/ファイル管理/rm
(5)
UNIX/便利な技/コマンドの出力を引数にする
(5)
全体の人気
UNIX/コマンド/テキスト処理/sed
(80295)
UNIX/コマンド/テキスト処理/sort
(66481)
UNIX/コマンド/シェル・シェル組み込み/foreach
(65041)
UNIX/コマンド/テキスト処理/join
(59717)
UNIX/コマンド/ファイル管理/touch
(58474)
UNIX/基礎知識/バックグラウンド、フォアグラウンド
(56366)
UNIX/コマンド/ファイル管理/rm
(55556)
UNIX/設定、設定ファイル/.forward
(53474)
UNIX/コマンド/検索/find
(52476)
UNIX/コマンド/テキスト処理/cat
(50700)
UNIX/コマンド/変換/mogrify
(50176)
UNIX/学生ツール/ユーザ検索プログラム/gdoko
(46568)
UNIX/設定、設定ファイル/.Xmodmap
(45665)
UNIX/コマンド/プロセス管理/kill
(45581)
UNIX/コマンド/エディタ/vim
(45005)
UNIX/コマンド/シェル・シェル組み込み/source
(43518)
UNIX/コマンド/クライアント/ncftp
(43455)
UNIX/コマンド/tex/dvipdfm
(40809)
UNIX/設定、設定ファイル/.xinitrc
(40520)
UNIX/コマンド/変換/split
(39610)
total:
81400
t
od
ay:
176
yes
terday:
671
now:
10
本文
ノート
編集
差分
Edit of UNIX/コマンド/ファイル管理/chmod
*特殊アクセス権 [#rd9ec12e] 先に紹介した以外にも特殊なアクセス権が存在します。 |u+s|4000|user s-bit (setuid)| |g+s|2000|group s-bit (setgid)| |o+t|1000|sticky bit| **user s-bit (setuid) [#x96dd27b] user s-bit が立っているコマンドはそのファイル所有者の権限で実行 (setuid) されます。 例えば passwd コマンドは % ls -l `which passwd` ---s--x--x 1 root other 7161 2001-02-09 09:54 /bin/passwd* のように user の実行許可の場所に s と表示されており、 user s-bit が立っているのがわかります。 passwd コマンドは /etc/passwd という root のみが編集できるファイルを 編集する必要があるため、一般ユーザでもこのコマンドで可能なことの範囲内で、 root 権限を取得して編集できるという仕組みになっています。 **group s-bit (setgid) [#pa4bd2ea] group s-bit はそれの group 版です。 実行するときはそのファイルのグループ権限で実行 (setgid) されます。 **sticky bit [#wc39c9ac] sticky bit により、どのユーザでも読み書きできるが、ファイルの削除は作成したユーザのみが可能、という特殊なディレクトリを作ることができるようになります。 例えば /tmp ディレクトリは % ls -d /tmp drwxrwxrwt 10 root sys 4259 2003-10-16 16:15 /tmp/ のように最後に t と表示されており、sticky bit が立っているのがわかります。
Do not change timestamp
TITLE:chmod - ファイルのアクセス権の変更 #navi(UNIX/コマンド) chmod でファイルのアクセス権の変更ができます。 例えば、書き込み権限を自分だけが持つようにして他人がそのファイルを編集できないようにしたり、 逆に他人にも権限を与え共有してみたりする設定などができます。 ファイルのアクセス権限はファイル所有者か、スーパーユーザのみが変更できます。 とりあえずはパーミッション記号の読み方、シンボリックモードを読めば OK かと思われます。 しかし、絶対モードも使えるようになることをお薦めします。理解に手間がかかるかもしれませんが、そちらのほうがよく使われます。 #contentsx *パーミッション記号の読み方 [#d08e4081] パーミッション記号の読み方を説明します。現在のパーミッションは ls -l で確認できます。 % ls -l drwxr-xr-x 3 s1080134 student 512 May 14 18:05 GNUstep/ [[ls]] のほうにも書きましたがここにも書いておきます。 左端の文字列 drwxr-xr-x が、ファイルのモード、すなわちファイルの型(type) d と アクセス権限(permission) rwxr-xr-x を表しています。 ファイルの型には以下のような種類があります。 |- |通常のファイル| |d |ディレクトリ| |l |シンボリックリンク| |s |ソケット| |b |ブロックデバイス| |c |キャラクタデバイス| |P |名前つきパイプ| 実際よく見るのは - 、d とせいぜい l ぐらいだと思います。 アクセスパーミッションは rwx|r-x|r-x のように3つに区切って読みます。 ファイルオーナー(s108134)|グループ(student)|その他 のような分け方になります。そして、r,w,x はそれぞれ |r|読み取り許可。ディレクトリの場合、ディレクトリ内ファイル一覧許可。| |w|書き込み許可。ディレクトリの場合、ディレクトリ内ファイル作成許可。| |x|実行許可。ディレクトリの場合、侵入許可| を意味します。よって先の例 rwxr-xr-x では、ファイルオーナーに、読み取り、書き込み、ディレクトリ進入許可すべてがあり、 同じグループの人、その他の人は、読み取り、ディレクトリ進入許可はあるが、書き込み許可がないという意味になります。 *シンボリックモード [#hd7ff386] パーミッションの指定方法には、絶対モードとシンボリックモードがあります。 シンボリックモードには [who]、[operator]、[permissions] の3つの要素があります。 % chmod [who][operator][permissions] [filename] のように指定します。 [who] |u|所有者| |g|グループに属するユーザ| |o|その他のユーザ| |a|全員(ugo)| [operator] |+|アクセス権を付加| |-|アクセス権を除去| |=|指定されたアクセス権をそのまま割り当てる| [permissions] |r|読み取り許可| |w|書き込み許可| |x|実行許可。ディレクトリの場合、侵入許可| 例えば % chmod u+x [filename] のようにして実行します。, (カンマ) で区切って % chmod u+x,g-wx,o-rwx [filename] のように一度に実行することも可能です。 % chmod +x [filename] のように [who] を省略すると a+x という意味になります。 % chmod = [filename] とすれば a= という意味になり、許可の部分が無指定の = なので、すべての許可が消えることになります。 *絶対モード [#t2302e78] パーミッションの指定方法には、絶対モードとシンボリックモードがあります。 絶対モードでは 8 進数で指定します。 r = 4, w = 2, x = 1 として論理和を取ります。 例えば rwx|r-x|--- は 4+2+1|4+1|0 となり、 750 のようになります((論理和は本当は + ではなく bit 演算子の or なのですが、そこまでの説明は省きます。今回の chmod の場合はどちらも同じ結果になるので足し算と考えてもらっても構わないでしょう))。 % chmod 0750 [filename] のように指定します。最初の 0 は省略して 750 と指定することも可能です。 この 0 の部分については次で説明します。 *特殊アクセス権 [#rd9ec12e] 先に紹介した以外にも特殊なアクセス権が存在します。 |u+s|4000|user s-bit (setuid)| |g+s|2000|group s-bit (setgid)| |o+t|1000|sticky bit| **user s-bit (setuid) [#x96dd27b] user s-bit が立っているコマンドはそのファイル所有者の権限で実行 (setuid) されます。 例えば passwd コマンドは % ls -l `which passwd` ---s--x--x 1 root other 7161 2001-02-09 09:54 /bin/passwd* のように user の実行許可の場所に s と表示されており、 user s-bit が立っているのがわかります。 passwd コマンドは /etc/passwd という root のみが編集できるファイルを 編集する必要があるため、一般ユーザでもこのコマンドで可能なことの範囲内で、 root 権限を取得して編集できるという仕組みになっています。 **group s-bit (setgid) [#pa4bd2ea] group s-bit はそれの group 版です。 実行するときはそのファイルのグループ権限で実行 (setgid) されます。 **sticky bit [#wc39c9ac] sticky bit により、どのユーザでも読み書きできるが、ファイルの削除は作成したユーザのみが可能、という特殊なディレクトリを作ることができるようになります。 例えば /tmp ディレクトリは % ls -d /tmp drwxrwxrwt 10 root sys 4259 2003-10-16 16:15 /tmp/ のように最後に t と表示されており、sticky bit が立っているのがわかります。 *おまけ [#m36ddf8d] 上位ディレクトリの侵入パーミッション (x) さえ切ってしまえば、 下位のディレクトリ、ファイルへアクセスも不可能になります。 読み取り許可 (r) はなく、侵入許可 (x) はある場合、 ls などでディレクトリ内を参照することはできませんが、 ディレクトリ内のファイルを直接指定してファイルを参照することはできます。 ディレクトリに含まれるすべてのファイル、サブディレクトリ のパーミッションをすべて変更したい場合は、-R オプションを使用します。 % chmod 705 -R [dir] しかしこれでは、ファイルすべてに実行許可がついてしまったりなど、 あまりありがたくない場合が多いです。 そこで、ファイルのみ、ディレクトリのみと指定したい場合は find コマンドとの合わせ技を使用します。 % find . -type f -exec chmod 604 \{\} \; ファイルのみ。 % find . -type d -exec chmod 705 \{\} \; ディレクトリのみ。 さらにおまけですが、-exec を使用するよりも % find . -type f -print | xargs chmod 604 のようにしたほうがきっと動作は軽いです。これは find のコツですね。 ただし、ファイル名に空白が含まれている場合はxargsは使えません。 #navi(UNIX/コマンド,,footer)
ログインまたはアカウント作成