sambaのパーミッション設定について

このQ&Aのポイント
  • 自宅サーバーでsambaを用いてファイルサーバーを運用しているときに、sambaのパーミッションについて疑問が生じました。
  • 具体的には、create mask/directory mask パラメータとforce create mode/force directory mode パラメータについて理解したいと思っています。
  • マニュアルに記載されているAND演算やOR演算について具体的な説明を教えていただけると幸いです。
回答を見る
  • ベストアンサー

sambaのパーミッション設定について

自宅サーバーでsambaを用いてファイルサーバーを運用しているのですが、sambaのパーミッションについて疑問があります。 疑問(1) : create mask/directory mask パラメータについて マニュアルに、 『作成時に付与されるパーミッションは、 DOS の属性を UNIX のパーミッションに変換することにより生成され、このパラメータとビット単位の AND 演算が行なわれる。 ここで設定されないビットは、 ファイル作成時のパーミッションから削除される。』(一部略) とありますが、 『このパラメータとビット単位の AND 演算が行なわれる』の『AND演算』とはどのような演算を指すのでしょうか。 具体的に教えていただきたいと思っております。 疑問点(2) : force create mode / force directory mode パラメータについて これもマニュアルに、 『Samba によって作成されたファイルのパーミッションに 必ず設定される UNIX のパーミッションビットを指定する。 これは、ファイルの作成時やパーミッションの変更時に、 パーミッションビットに対して、このパラメータの値でビット単位の OR 演算を行なうことで実現される。このパラメータの値がビット単位の OR 演算に用いられるのは、 create mask パラメータの適用後である。』(一部略) とあります。 こちらは『OR演算』とありますが、この『OR演算』についても具体的に教えていただきたいと思います。 初歩的ですが、よろしくお願いいたします。 マニュアル : http://www.samba.gr.jp/project/translation/current/htmldocs/smb.conf.5.html

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

>744∩733 -> 733 ?   744→111 100 100 ∩733→111 011 011 --------------------   700←111 000 000 >444∩777 -> 444 ?   444→100 100 100 ∩777→111 111 111 --------------------   444←100 100 100 >744∪733 -> 744 ?   744→111 100 100 ∪733→111 011 011 --------------------   777←111 111 111 >444∪777 -> 777 ?   444→100 100 100 ∪777→111 111 111 --------------------   777←111 111 111

mamyutyan
質問者

お礼

ありがとうございます。今まで悩んでいたことが一気に解決しました。 いろいろなところにビット演算って書かれてあるので、早めに気づけばよかったのに、かなり無知でした。 今回は本当にありがとうございました。

その他の回答 (1)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

AND演算(論理積:∩) 0 ∩ 0 = 0 0 ∩ 1 = 0 1 ∩ 0 = 0 1 ∩ 1 = 1 OR演算(論理和:∪) 0 ∪ 0 = 0 0 ∪ 1 = 1 1 ∪ 0 = 1 1 ∪ 1 = 1 論理演算 http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E6%BC%94%E7%AE%97 論理積(AND) http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E7%A9%8D 論理和(OR) http://ja.wikipedia.org/wiki/%E8%AB%96%E7%90%86%E5%92%8C AND演算 http://www.atmarkit.co.jp/icd/root/92/40151892.html OR演算 http://www.atmarkit.co.jp/icd/root/76/72584476.html

mamyutyan
質問者

お礼

早速の回答、ありがとうございます。

mamyutyan
質問者

補足

実際のパーミッションではどのように計算されるのでしょうか。 うすうすとは感ずいているのですが、、、 744∩733 -> 733 ? 444∩777 -> 444 ? 744∪733 -> 744 ? 444∪777 -> 777 ? これであっているでしょうか。 自信がないもので。

関連するQ&A

  • smb.confで設定したパーミッションが反映されない。

    下記の流れでwindowsからsambaサーバにファイルを作成したのですが、パーミッションがcreate maskで設定したとおりになりません。 原因不明で困っております。 よろしくお願いします。 [root@localhost sub]# cat /etc/samba/smb.conf ~中略~ [homes] comment = Home Directories read only = No browseable = No create mask = 0111 ~中略~ [root@localhost sub]# service smb reload smb.conf ファイルを再読み込み中: [ OK ] [root@localhost sub]# ls -l ~hoge ---x------ 1 hoge hoge 0 11月 4 16:29 新規テキスト ドキュメント.txt

  • NASのパーミッション設定

    市販のIOのHDL-XVやバッファローのテラステーションのような簡単なネットワークファイルサーバー装置で、unixのようにothersに対してパーミッションをr--(リードオンリー)にし、指定したユーザーやグループだけrwx(読み書き可能)にできる製品は無いでしょうか? この設定は、ルートにあるディレクトリ単位でも構いません。 ローカルネットに接続できる全てのユーザーに閲覧可能にしたいのですが、変更をされては困る特定のディレクトリ(サブディレクトリも含む)作成する必要があります。 (HDL-XVでは、ルートのディレクトリ単位でアクセス制限が掛けられるのですが、othersのような概念が無いようです。OSはLINUXだと聞いた記憶がありますが、LINUX自体のパーミッションはunixと同じだと思っていました)

  • sambaで読み取り専用ファイルの禁止はできますか

    Debian squeezeでsambaを使用しています。 shareというグループを1つ用意し、sambaを利用する全員がグループshareに所属することで、お互いのファイルを共有しています。 いままでは特に問題なく使用していたのですが、ある時読み取り専用のファイルが格納されたzipファイルをユーザAが展開したところ、共有フォルダ上にパーミッション444(r--r--r--)のファイルが作成され、ユーザA以外がこのファイルの読み取り専用を解除することも削除することもできなくなってしまいました。 そこで試してみたところ、共有フォルダ上にあるファイルを誰かが読み取り専用にすると、その他のユーザはこのファイルの削除ができなくなってしまいました。 他の人がつけた読み取り専用を解除できるように、もしくは読み取り専用に設定することができないようにしたいのですが、実現可能でしょうか。 smb.confでパーミッションに関係しそうな設定は以下のようになっています。 create mode = 664 directory mode = 775 writable = yes wide links = yes follow symlinks = yes この問題が発覚してから以下の設定を加えて試してみたのですが、効果はありませんでした。 force create mask = 0020 force directory mask = 0020 write list = www-data 直接の解決策でなくても構いません。何か試すことなどありましたらアドバイスよろしくお願い致します。

  • sambaのログ

    VM上にCentOSでsambaを構築してみました。 ファイル共有はできており、一応の目標は達成できたのですが、sambaのログがよくわかりません。 named.confではlogの設定は変更していないので、/var/log/samba/log.接続コンピューター名.log とのことで、 ls /var/log/sambaを実行してみた所、 cores log.192.168.180.1 log.test-pc log.nmbd log.smbd old が出力されたので、 cat /var/log/samba/log.test-pc [2015/11/01 11:35:13.319073, 0] param/loadparm.c:8004(lp_do_parameter) Global parameter dos charset found in service section! [2015/11/01 11:35:13.319792, 0] param/loadparm.c:7969(lp_do_parameter) Ignoring unknown parameter "unix" と出力されました。これは、ログはとれているのしょうか? また、 cat /var/log/samba/log.192.168.180.1も実行してみたのですが、何も表示されませんでした。 いったいどういうことでしょうか?どなたかご教授願います。 cat /etc/samba/smb.conf抜粋 #------- Logging Options------ # logs split per machine log file = /var/log/samba/log.%m # max 50KB per log file, then rotate max log size = 50

  • sambaにWinからアクセスできません。

    現在、sambaで共有サーバーを構築しています。 過去、何度か構築しており、今回は新たなサーバーに交換するために構築しています。 しかし、奇妙な現象で足止めくらっております(ーー; /tmpにはアクセスできるのですが、共有ディレクトリとして作成したディレクトリにはアクセスができません。 smb.confは下記の通りです。 [share] path = /home/samba/share read only = No force create mode = 0666 force directory mode = 0777 guest only = Yes guest ok = Yes [share2] path = /samba read only = No force create mode = 0666 force directory mode = 0777 guest only = Yes guest ok = Yes [tmp] path = /tmp read only = No force create mode = 0666 force directory mode = 0777 guest only = Yes guest ok = Yes ディレクトリの権限は drwxrwxrwt. 19 root root 4096 7月 2 19:40 2012 tmp drwxrwxrwt. 2 root root 4096 6月 29 17:41 2012 samba [share]は drwxrwxrwx. 2 root root 4096 6月 29 15:35 2012 share /tmpは問題なくアクセスできることから、 /samba のパーミッションにもスティッキービットを設定してみましたが、結果はダメでした。 iptablesの方はきちんと設定しておりますので問題ありません。 /tmpにはフルアクセスできているので、問題はないと思います。 なお、/tmpにはフルアクセスできますが、 /home/samba/share にアクセスした場合は、その下にあるディレクトリは見ることができますが、ファイルはWinからは見えません。これも謎です。新規にファイルを作成しようとすると、 対象のフォルダへのアクセスは拒否されました この操作を実行するアクセス許可が必要です とダイアログが表示されます。 /samba にアクセスしようとしたら、ディレクトリ内は閲覧できず、 ネットワークエラー \\192.168.1.10\share2 にアクセスできません 名前のスペルを確認しても問題がない場合は、ネットワークに問題がある可能性があります。 と出ます。 まったく同じ設定で、なぜこう動作が違うのか・・・ 今までのsambaの設定でこのようなことは起こったことはありません。 完全に行き詰っております。アドバイスをお願いします。 環境 CentOS6.2 samba3.5.10-116.el6_2

  • Samba で新規作成したファイルやディレクトリの権限

    宜しくお願いします。 Samba から新規作成したファイルやフォルダのパーミッションに、グループの書込み権限もつくようにするには、どのように設定するのでしょうか。 初歩的な質問かもしれなくて恐縮ですが、どなたか教えていただければ、嬉しく思います。宜しくお願いします。

  • 「samba」2?での質問です。

    「samba」2?での質問です。 Windows98 マシンが2台、Debian Linux Lenny マシンが一台あります。 smb.conf を書きます。それと、ファイルサーバである、Linux での認証暗号を訊かれるのを止めたいのですが、どのように、設定すれば、よろしいでしょうか? smb.conf [global] dos charset = CP932 workgroup = AKAZUKIN server string = %h server security = SHARE encrypt passwords = true obey pam restrictions = Yes ;passdb backend = tdbsam pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . unix password sync = Yes lanman auth = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 printcap name = cups dns proxy = No ldap ssl = no panic action = /usr/share/samba/panic-action %d load printers = yes netbios name = marine ;guest account = umiboz ;nobody = no preferred master = yes os level = 21 map to guest = Never [homes] comment = Home Directories valid users = %S create mask = 0700 directory mask = 0700 guest ok = Yes browseable = No [printers] comment = All Printers path = /var/spool/samba create mask = 0777 guest ok = Yes public = Yes printable = Yes printer name = cups printing = cups use client driver = Yes browseable = Yes hosts allow = 192.168.1.0/255.255.255.0 [print$] comment = Printer Drivers path = /var/lib/samba/printers [data0] comment = temporary path = /tmp read only = No guest ok = Yes [data] comment = Home Directories path = /home/umiboz read only = No guest ok = Yes create mask = 0700 directory mask = 0700 [ipc$] hosts allow = 192.168.1.0/255.255.255.0 ---- よろしくお願いします。

  • sambaがネットワーク上で認識されません

    sambaがネットワーク上で認識されません。 起動も、自動起動も確認しましたが、Windowsのネットワーク上の、 Workgroupに表示されません。 ご存知の方がいらっしゃいましたら教えてください。 以下が「/etc/samba/smb.conf」の設定を変更した箇所です。 --------------------------------------------------------- [global] 74 workgroup = WORKGROUP 75 server string = Samba Server Version %v 76 93 # ----------------------- Standalone Server Options ------------------------ 94 # 95 # Scurity can be set to user, share(deprecated) or server(deprecated) 96 # 97 # Backend to store user information in. New installations should 98 # use either tdbsam or ldapsam. smbpasswd is available for backwards 99 # compatibility. tdbsam requires no further configuration. 100 101 security = share 102 unix charset = UTF-8 103 display charset = UTF-8 104 dos charset = CP932 105 passdb backend = tdbsam [public] 286 # comment = Public Stuff 287 path = /public 288 # public = yes 289 writable = yes 290 # printable = no 291 # write list = +staff 292 guest ok = yes 293 guest only = yes 294 # create mask = 0777 295 # directory mask = 0777 --------------------------------------------------------- 宜しくお願い致します。

  • chmodでのパーミッション

    実行すると、同じディレクトリにあるディレクトリとその中のファイルを同じ階層にディレクトリを新規に作って、その中のファイルを全部コピーするスクリプトを組んでいます。 コピーはうまくいったのですが、パーミッションの設定がうまくいきません。 例えば @chmod("$dir/xxx.cgi",0755)or die("エラー"); と書くと、パーミッションは363になってしまいます。 5ファイルくらいあるのですが、他のパーミッション(例えば666など)も137になってしまいます。 Webを検索してもこういった事例にはおめにかからないのですが、私の使っている2つのサーバーで、どちらも同様の結果でした。 何がいけないのでしょうか? よろしくお願いいたします。 #ついでにmkdirも作成はできるのですが、パーミッションが必ず755になってしまいます。 #作成されたディレクトリやファイルのownerは、1つめのサーバーではnobody、もう一つのサーバーではログインユーザーになります。 #サーバーはどちらもLinuxです。 #PHPのヴァージョンは、1つめが4.3.1、2つめが4.3.4です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • samba4とopenladap

    ドメインを作成しようと考えています。 OSは、CentOS6を考えています。 ユーザ、グループの一元管理を 「Samba4でするか」 「openldap1ですか」 の二つを考えています。 ちなみに、作成したドメインに、 「メールリレーサーバ(postfix)」 「メールサーバExchange)」 「監視サーバ(nagios or cacti or mrtg or monit)」 「ntpサーバ(ntpd)」 「dnsサーバ(bind」 「ファイルサーバ(openldap使用時は、samba)」 「Windowsサーバ(2008と2008R2と2012) 「クライアント(Win7、CentOS)」 を参加させます。(クライアント以外は、CentOS6を使用) どちらを選択してドメインを作成するのがよいのでしょうか ご教示お願いします。