chmod の -t は何を意味しているのですか?

このQ&Aに関連する最新のQ&A

A 回答 (5件)

パーミッションを変更する際の、Stickyビットを外す


オプションです。一般に、"Stickyビットを立てる"と
表現されます。chmodコマンドによるアクセス権の
変更は、記号によるモード指定と数値によるオクタル
指定のどちらでも指定が出来るようになっています。
モード指定では現在のアクセス権に加える・削除すると
いった相対指定となり、オクタルモードではアクセス権
をすべて指定する絶対指定となります。-tで削除、逆に
+tで追加することが出来ます。

Stickyビットは、誰もが書き込めるけれど、書いた
ものは書いた本人か、管理者(root)でしか削除できない
といったディレクトリを設定するのに便利です。
設定されると、パーミッション表示の一番右にtが
ついているとおもいます(デフォルトで設定されていると
思いますので、試しに"ls -ld /tmp"として確認して
みてください)。ちなみに少々ややこしい話ですが、
ディレクトリではなくファイルにStickyビットを
立てた場合、上記のような動作ではなく
そのファイルをメモリ上に置いて読み込みを早くする
(=常駐)動作になります。

Stickyビットの設定されていないディレクトリでは、
内部のファイルに対しアクセス権の無いユーザで
あってもファイルがあるディレクトリに対する
書き込み権があればファイルを削除することが出来て
しまいますから、もし自分が管理しているディレクトリ
外で作業を行っている(遠隔地にある共有ディレクトリ
など)であればchattrコマンドを使用して、ファイルの
属性を変更することをおすすめします(ただしNFS
マウント時には属性は有効ですが、変更は出来ません)。
    • good
    • 0

> chmod の -t は何を意味しているのですか?



もうちょっと分かりやすく質問していただきたいものですね。これでは chmod の -t オプションについて質問しているようにしか思えません。chmod には -t オプションはありません。

例えば、「chmod o-t directory の -t は何を意味しているのですか?」と書くだけでもニュアンスは変わってきます。

さて、t がスティッキービットを表すことは調べられたようなので既にご存知かもしれませんが、削除する際に所有者しか削除や移動ができないようにするためのフラグです。なので、スティッキービットはディレクトリのその他ユーザに対してのみ設定することができます。

普通にLinuxをインストールすると、/tmp、/var/tmp はパーミッションが 777 でスティッキービットが立てられています (drwxrwxrwt)。

スティッキービットは chmod o-t directory ではずすこともできますが、 chmod 0777 directory としてもはずすことができます。
    • good
    • 0

manコマンドかWeb検索を使って


マニュアル参照すると書いてあるよ。

ただ、この質問文だけだと
-fを見間違っているのか
-tを使いたいのか
あるいはマニュアルで理解できなかったのか

事情がわかんないから
何を聞いているのかわかんないっていえばわかんない。

実際+tに比べれば-tはあんまり使わないと思う。

ちなみに、Googleで検索するときは
"-t"と括って投げないと通らない。要注意。
    • good
    • 0

とりあえずPOSIXの標準ではないですが


お使いのlinuxディストリビューションのchmodに
ついている拡張オプションかと。
-tは+tの無効化つまり、仕様としてはスティッキ
ビットをはずすことを指します。
+tを指定したファイルをls -la するとパーミッション
のケツにt(T)がつきますよね?その指定です。

スティッキビットとは所有者のみがファイル名
の変更,削除を行えるパーミッションですが
わからなければ、おそらく使いことはないと思うので
覚える必要はありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
スティッキビット確認できました。

お礼日時:2005/09/30 13:40

何を聞いているのでしょうか?

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qシェルスクリプトでファイル内の数値文字列を数値として扱うには

失礼します。
シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか?

str:ファイル内のテキスト(数値文字列)

res=$(( $str + 1 ))

・エラー
")syntax error: invalid arithmetic operator (error token is "


よろしくお願いします。

Aベストアンサー

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000

exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをe...続きを読む

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

QFile.delete()にてファイルを削除する事ができない

現在、Javaを用いてシステムの開発を行っておりますが、
1点コーディングにて解決にできず困っている問題があります。

お忙しいところ、誠に申し訳ございませんが、
ご回答のほど宜しくお願い致します。

◎問題
 普通に考えると当り前のことなのですが・・・
 実現方法を探っております。

 削除対象となるファイルがオープン(別のユーザに開かれている)されている状態で、
 Fileクラスのdelete()を実行してもExceptionが発生し、ファイル削除する事ができません。

 不特定多数に利用される可能性があるファイルなので、
 ユーザにファイルを閉じてもらうアナウンスを流すことも、現実的に考えて、難しい状況です。

◎環境
 Java:J2SDK 1.4.2_06
 OS:Windows 2000 Server

Aベストアンサー

#3です。

Javaでcontinueは有効のようです。http://www.atmarkit.co.jp/fjava/rensai2/javaent06/javaent06.html

3年ぶりくらいなので、忘れてしまいました(;--

がんばってください。

QUNIXのディレクトリのパーミッションについて

初めて質問させていただきます。

UNIXのディレクトリのパーミッションについてなのですが、
パーミッションを表す'drwxr-srwt'など、"s"や"t"のフラグが付いていているときがあります。
色々と調べてみたのですが、根本的な解決までたどり着けませんでした。
そのフラグが付いているディレクトリが意味しているものは一体何なのでしょうか?

Aベストアンサー

グループ(group)の所にある"s"がセット・グループIDビット(setgid bit/sgid bit)、その他(other)の所にある"t"がスティッキービット(sticky bit)です。
他に所有者(owner)の所にある"s"がセット・ユーザIDビット(setuid bit/suid bit)というものあります。

○セット・ユーザIDビット(setuid bit/suid bit)

実行ファイル(プログラムやコマンド、スクリプト)を実行した時、普通は実行者の権限で動作しますが、suid ビットが立っていると、実行ファイル作成者の権限で動作します。
良く使用されるのがroot権限がないと使用出来ないコマンドを一般ユーザでも使用出来るようにした時です。


○セット・グループIDビット(setgid bit/sgid bit)

あるディレクトリの所有グループが group の時、このディレクトリに sgid ビットが立っていると、その中に作成されるファイルやディレクトリの所有グループは自動的に group になり、ディレクトリには sgid ビットがセットされます。
これは、グループ内で共有ディレクトリを作成し、そこでファイルを共有した時など設定されます。


○スティッキービット(sticky bit)

ディレクトリに sticky ビットが立っていると、そのディレクトリ以下にあるファイルの削除やファイル名の変更は所有者にしか出来なくなります。
これは、テンポラリ(/tmpとか/var/tmpとか)で誰にでも書き込める領域は欲しいが、他ユーザにファイル等を消されるのを防ぎたい時などに設定されます。

なお、実行権限の部分(xの所)に権限がある時は"s"や"t"に、権限がない時には"S"や"T"になります。

グループ(group)の所にある"s"がセット・グループIDビット(setgid bit/sgid bit)、その他(other)の所にある"t"がスティッキービット(sticky bit)です。
他に所有者(owner)の所にある"s"がセット・ユーザIDビット(setuid bit/suid bit)というものあります。

○セット・ユーザIDビット(setuid bit/suid bit)

実行ファイル(プログラムやコマンド、スクリプト)を実行した時、普通は実行者の権限で動作しますが、suid ビットが立っていると、実行ファイル作成者の権限で動作します。
良く使用されるのがroot権限...続きを読む

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Q例 の省略 ex と e.g.

これまで、「例」の省略として、e.g.(exempli gratia,for example)を使ってきたのですが、Ex.もよく見かけます(主に日本語の文中で)。
私の読む英文は学術系に偏っているので、e.g.しか使われないのかもしれないと思いました。普通の英文でもexは、使われることが多いのでしょうか。
goo辞書、アルク英辞郎、Yahoo辞書では、EXが、exampleの略とは出ていなかったので質問させていただきました。

Aベストアンサー

e.g.は文中の括弧内で例を列記するときに使いますよね(e.g. こ、ん、な、ふ、う、に)。

一方Ex.は、例文とかの文頭に使うのがほとんどじゃないでしょうか。Ex. こんなふうに。

Ex.は単にExampleの略、e.g.はfor exampleの略といった感じでしょうか。

参考URL:http://philosophy.byu.edu/classes/dj/phil200hwin05/Basic%20Grammar%20Packet%2010jan05.pdf

Qapacheユーザの実行権限設定はどうすれば良い?

■環境
・Cent OS

■状況
・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります
・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります

■質問
・どうすれば良いでしょうか?
・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い?
・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって?

・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

Aベストアンサー

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能です。しかし、apacheユーザが新
規作成したファイルはapache/apache になるので、apacheグループ
に属さないhogeユーザは編集できません。

そこで、ディレクトリをhogeユーザで作成し、ディレクトリにsgid
ビットを立てます。

$ chmod 2775 dir
$ ls -l dir
drwxrwsr-x 2 hoge hoge 4096 4月 7 13:35 dir

これで、apacheユーザがdir上に作成したファイルはapache/apache
ではなく、apache/hoge になるので、hogeユーザも編集できるよう
になります。

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能...続きを読む

QPOSTGRESのデータの格納場所はどこでしょうか?

RedHat7.2/PostgreSQL7.2/という環境で、サーバーがクラッシュしてしまい、データを他のサーバに移し変えないといけなくなりました。そこで、PostgreSQLを再インストールしないとデータベースが使えない状況となりました。

データベースを再インストールするのは良いとして、どこかに格納されているはずのデータベースの内容を取り出し、復帰させたいのですが、方法はありますか?大変困っております。よろしくお願いします。

Aベストアンサー

No.1の追加です。
データの移設でよかったと思います。
または、データを読み込むときに、「iオプション」でディレクトリを指定して、元のファイルを読み込んでもよかったと思います。


人気Q&Aランキング

おすすめ情報