Linux初心者がRed Hat Linux 8.0でファイルのデフォルトパーミッション設定に困っています

このQ&Aのポイント
  • Red Hat Linux 8.0を使用しているLinux入門者が、ファイルのデフォルトパーミッション設定に問題を抱えています。
  • umaskの設定がうまくいかずに困っており、所有者以外の読み書きをできないようにしたいという要望があります。
  • umaskの設定は~/.bash_profileや/etc/profileに追記しているが、ターミナル上での反映がうまくいかず、他の方法も試してみたがうまくいかなかったとのことです。
回答を見る
  • ベストアンサー

ファイルのデフォルトパーミッション設定が出来ません

Red Hat Linux 8.0を使っているLinux入門者です。 デフォルトパーミッションを、 所有者以外の読み書きが出来ない様にしたいのですが、 umaskの設定がうまくいかずに困っております(T.T) ~/.bash_profile に「umask 066」と 下記サイトに出ている通りに追記したのですが、 ( http://www.atmarkit.co.jp/flinux/rensai/security02/security02c.html ) X(GNOME)のターミナル上で設定が全く反映されないのです。 テキストモードや仮想コンソールでは 確かに設定が適用になっているのですが.....。 あと、suを実行後に確認すると何故かちゃんとなっています。 /etc/profile の方もいじってみましたが駄目でした。 ちょっと分かり辛いかもしれませんが、大体下記の様な状況です。 ~/.bash_profileを編集後、rootでログイン  × Xのターミナルでumaskコマンドで設定を確認  ○ umask 066とコマンドラインから実行、確認  × su を実行して確認  ○ su - を実行して確認  × シェルスクリプトにumask 066と書いて実行、確認  ○ Ctrl+Alt+F1で仮想コンソールに切り替え、確認  ○ テキストログイン後、umaskコマンドで確認 その他のユーザーでログイン  ○ su - ユーザー名 を実行して確認    その他はrootと同じ ○=設定が反映されている ×=変化無し  という感じで全くのお手上げ状態なのです。 何か考えられる原因はありますでしょうか? 何分、Linux初心者で基本的な事が抜けているのかもしれません。 お気づきの点がございましたら、 どんな事でも結構ですのでご指摘頂ければと思います。 情報が足りない部分があれば補足致します。 どうか宜しくお願いします。

noname#6461
noname#6461

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

ログインシェル(/etc/passwdに指定されている)がbashの場合 ●まず最初に、ログイン時は /etc/profile ~/.bash_profile が読み込まれます。 ~/.bash_profileの最初のほうで ~/.bashrc を読み込んでいます。 ~/.bashrcの中で /etc/bashrc を読み込んでいます。 /etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc の順番ですね。 ●ログイン後にbashを起動させたら ~/.bashrc /etc/bashrc の順番で実行されますね。 後はGNOME上などでterminalを起動する毎に ~/.bashrc /etc/bashrc の繰り返しですね。 umaskはシェル毎に設定する必要がありますので ~/.bashrc /etc/bashrc に記述すれば良いです。 ------------------------------------------ /etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc がいつ実行されるか自分で調べてみてください。 たとえば各スクリプトのはじめの方に echo "/etc/profile start" >> /tmp/log みたいなデバッグ文をつけて実行してみたら、よくわかります。 スクリプトの中で、別のスクリプトをロードしている事もあるので ソースをちゃんと読んでみましょう。

noname#6461
質問者

お礼

再度のご回答どうもありがとうございます。(^_^) ~/.bash_profileから.bashrcなど連続して 読み込みをしているとは全く知りませんでした。 Xのターミナル上で設定を有効にする為にも .bashrcに書き込んでおけば確実という事になるのですね。 詳細なご説明に感謝いたします。 分かりやすく解説していただいたお陰で また一つ知識を深める事が出来ました。 教えて頂いた情報を参考にこれからじっくり研究致します。 xjdさん、本当にどうもありがとうございました。(^_^)

その他の回答 (1)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

~/.bashrcの「最後」に記述してみてはいかがでしょう?

noname#6461
質問者

お礼

xjdさん、ご回答どうもありがとうございます。 教えて頂いた通りに「~/.bashrc」に追記した所、 見事設定が反映されました。 これで起動時に一々umaskコマンドを実行する 必要も無くなり快適になりそうです。 本当に助かりました。心から感謝いたします。(^_^) 同時に新たな疑問も沸いてきました。(^_^;;) 今まで見たサイトの情報から 「.bash_profile も .bashrc も シェル起動時に読み込まれるもので .bashrc はログインシェル以外の 一般のシェルを起動した時に実行される」 と見て、理解していたつもりになっていたのですが、 ログインシェルはデフォルト設定のままで「bash」なのに .bash_profiles を読み込まずに .bashrc を読んでいるというのは 設定がどこか狂ってしまったのでしょうか......。 シェルスクリプトを実行しても駄目というのも変ですよね。 (ls など他のコマンドも書き込んで試してみましたので、 スクリプトの書式が間違っているという事ではないはずです) OSインストール後いじった事といえば、 @ITやZDNETなどの記事を参考に不要なサービスを停止したり、 使わないIDとグループ(サーバー用のものなど)を削除したり、 SUIDとSGIDを無効にしたりしたぐらいなのですが.....。 (su と passwdコマンド以外。 rootでも駄目なのでこれは今回の事には関係なさそうでしょうか) 何かお気づきの点がありましたら、アドバイス頂けると幸いです。 ご回答どうもありがとうございました。(^_^)

関連するQ&A

  • SFTP/FTPで受信するファイルのパーミッションについて

    Radhat Linux7.1 でFTP/SFTPでファイルを受信時のファイルパーミッションを設定したく、umaskを.bash_profileに設定したのですが駄目でした。どのようにすれば良いのでしょうか。 御存知の方御教示下さい。

  • Linuxにおけるパーミッションに関して

    Linux(Redhat)に関して質問します。 /etc/passwdファイルの第7フィールド(ログインシェル指定の箇所)にて /sbin/nologin指定をしているアカウントに関して、このアカウントで作成 されるディレクトリもしくはファイルのデフォルトでのパーミッションは、 どのようになりますでしょうか? 例えば、第7フィールドに/bin/bashの指定があり、/etc/bashrcにumask の値を設定していれば、ログイン時に/etc/bashrcが読み込まれumask の値によってパーミッションが決定されると思いますが、/sbin/nologin 指定をしているアカウントに関しては、umaskの値が有効になるのか どうか質問している次第です。

  • osxのTerminalで、rootで.bash_profileが反映しない

    MacOSX10.4 Tigerを使用しています。 Terminalで、日本語を使うため、 http://pamo.dip.jp/blog/archives/000170.html を参考に、 ~/.inputrc ~/.bash_profile の設定、 ターミナルインスペクタ->エミュレーション、“非ASCII文字をエスケープする”のチェックをoff の設定をしました。 すると、ユーザー(/Users/hogehoge)では、 日本語表示、入力が可能になったのですが、 sudo su でrootになると、 日本語表示ができません。 なお、rootの~である/var/root/以下に .inputrc .bash_profile はありますが 反映していないようです。

  • whoコマンドで出力される内容

    whoコマンドはログインしているユーザを確認できるとありますが、 su - hogeで別ユーザに変更してもwhoの内容が変わりません。 suコマンドではログインしたことにならないのでしょうか?(/etc/profileも読み取られない?) <su前> root :0 Oct 14 06:24 root pts/1 Oct 14 06:54 (:0.0) <su後> root :0 Oct 14 06:24 root pts/1 Oct 14 06:54 (:0.0)

  • bashの設定ファイル

    起動順番がハッキリしないので質問させていただきます。bashの設定ファイルの起動順番として下記の順番が正しいでしょうか?Fedora3です。 1./etc/bashrc(システム全体用)<---起動時に実行 2.~/.bashrc(各ユーザー用)<---起動時 3./etc/profile(システム全体用)<---ログイン時 4.~/.bash_profile(各ユーザー用) <---ログイン時 ご存知の方よろしくお願いします。

  • rbashについて

    こんにちは。 Windowsのコマンドプロンプトから、Linuxに対して rshにてコマンドを実行させようとしています。 セキュリティの観点からrshでは問題ありと思い rbashを使用してみようと下記設定をおこないましたが 期待している動作になりません。 Linux側設定 1)シンボリックリンクを設定 # ln -s /bin/bash /bin/rbash 2) /home/ohenryに.rhostsを記述 (Windowsマシンのコンピューター名 hoge_win ) hoge_win Administrator 3) /home/ohenry/.bash_profileの属性変更 #chown root /home/ohenry/.bash_profile #chgrp root /home/ohenry/.bash_profile #chmod 755 /home/ohenry/.bash_profile 4) /etc/passwd編集 ユーザのログインシェル設定 ohenry(中略)/bin/rbash 5) /home/ohenry/.bash_profile編集 PATH=$HOME/bin export PATH 6) /home/ohenry/bin下にコマンドコピー # cp /bin/date /home/ohenry/bin/date (これでdateしか実行できないはず) Windows側 rsh hoge_linux -l ohenry ls / dateしか実行できないはずなのですが ls結果が表示されてしまいます。 rsh hoge_linux -l ohenry (password?)***** とログインしてしまったあとはrbashの期待通りに 動作します。 ログインしないコマンドラインからの実行で rbashの制限を有効にすることはできますでしょうか? だらだら書いてしまい申し訳ありませんが どなたかお助けください。

  • パスワード設定していないユーザーのログイン

    いつもお世話になっております。 linuxで、useraddした後、passwdコマンドでパスワードを設定していないユーザーがいます。ここでは、postgresとします。 このユーザーに一般ユーザーからなるときに、 $su - postgres としますが、パスワードがきかれて、何も入力しないと、 invalidになります。(centos5) パスワードを設定しないと、一般ユーザーからログインできないのでしょうか。 ちなみに、rootからpostgresですと、ログインできます。 $su - $su - postgres お手数をおかけしますが、なにとぞご教授お願いいたします。

  • 環境変数の設定

    パスの設定で、$ echo PATH=$PATH:/tmpや ~/.bashrcというファイルに↑を書いて$ echo PATHで設定の反映などを確認しましたが、.bash_profileというファイルにはPATH=$PATH:/tmpを書いて、別端末を開いて $ echo PATHをやっても設定の反映が確認できません。 .bash_profileでパスの設定が可能らしいのですが、確認方法や設定の方法が間違っていると思ったので教えて下さい。

  • パス(PATH)の設定ファイルについて

    OSはRed Hat Linux 9 を使用しております。 また、シェルはbashを使用しております。 ユーザがシステムにログインする際は、通常ですと /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ファイルを読込、パス(PATH)の設定を行うと思いますが、 sshでrootユーザでシステムにログインした際は、 「echo $PATH」の結果は以下でした。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/sbin su -で再度rootユーザでログインした際、もしくは、他ユーザからsu -でログインすると 「echo $PATH」の結果は以下でした。 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/sbin ログインの仕方でパス(PATH)に違いがあります。 また、「/usr/local/bin」をパス(PATH)として設定している記述が 上記ファイルに見当たりません。 http://sakaguch.com/PastBBS/0038/B0018808.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=800405 等のサイトを参考に、以下ディレクトリ配下を確認しましても /etc/profile.d /etc/rc.d/init.d /etc/rc.d/rc3.d 「/usr/local/bin」をパス(PATH)として設定している記述が 見当たりません。 ログインの仕方でパス(PATH)に何故違いがあるのか、 また「/usr/local/bin」をパス(PATH)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • pathの設定

    初歩的な質問かもしれませんが、教えてください。 Linux(CentOS)で最新のバージョンの、とあるtool(mpich)を入れたのですが、.bashrcや.bash_profileにpathを記述してもrootが設定した旧バージョンの方にpathが通ってしまいます。また、 $which 新しいtoolのとあるコマンド(mpirun) としても旧バージョンのpathが表示されてしまいます。このような場合どうすれば、新しくインストールした方にpathが通るのでしょうか?私は一般ユーザーでroot権限はありません。また、OSはCentOSでシェルはbashを使用しています。どなたかお分かりになる方がいらっしゃれば、よろしくお願いします。