Samba を設定するメモ

この記事を書いた動機 ssh サーバ (sshd) の設定のメモ の設定についてメモを書いたのと似たような動機で、sambaについても書いていく。疲れたので、説明も簡素に、とりあえずどんな設定にしているのかおいておくことにする。 ちなみにこれら設定は、プライベートネットワークでしか使うことを想定しておらず、外部に公開されるようなサーバでは使えない、セキュリティーホールになりえる設定になっている可能性が大いにあるので、注意する。 /etc/samba/smb.conf # ネットワークドライブ名 [data] comment = data folder # ファイル共有する場所を指定 path = /Path/To/ShareFolder browsable = yes writable = yes guest ok = yes read only = no force create mode = 0777 create mask = 0777 # 全体共通の設定項目 [global] min protocol = SMB2 max protocol = SMB3 Workgroup = WORKGROUP netbios name = dataserverName log file = /Path/To/LogFile/%m.log log level = 1 wins support = yes domain master = yes ユーザの追加 ついでなので、samba のユーザの追加方法についてもよく忘れるので記録を取る。 ...

February 7, 2025

ssh サーバ (sshd) の設定のメモ

この記事を書いた動機 最近、サーバーをセットアップする機会があって、sshd に関して最低限どんな設定をしていたか、忘れていたということがあった。そこではいちいち調べていたが、今後同じようなことがあったときのために、適当に記録しておくことにした。 ちなみに、今回以下に示す設定項目については、sshd のデフォルトの設定状態から、変更または追加した部分についてしか書いていない。使う linux ディストリビューション次第では、パッケージマネージャからインストールされる sshd のデフォルトのコンフィグの設定が地味に違う可能性があるので注意する。 /etc/ssh/sshd_config # Include drop-in configurations Include /etc/ssh/sshd_config.d/*.conf ... # ルート(管理者権限を持ったアカウント)でログインさせない PermitRootLogin no # 公開鍵によるユーザ認証を許可する PubkeyAuthentication yes # パスワードによるユーザ認証は許可しない PasswordAuthentication no # 多分これはなくても ".ssh/authorized_keys" が公開鍵の保存場所としてデフォルトで認識されるが、今回は明示的に示している AuthorizedKeysFile .ssh/authorized_keys ... 関連性のありそうな記事 Samba を設定する 参考にしたサイトとか 今回は自分のサーバの設定を見て、適当にどういう解釈で設定しているか記録を取っただけなので、特になし。

February 7, 2025

Gnome Mutter と ネットワーク共有フォルダ(SMB CIFS)

この記事を書いた動機 ただ単に、すぐに気づけなかったけど、後々気づいたことがあったので、それを記録するだけです。具体的には、Gnome の mutter において、ネットワークドライブ上を参照している場合においても、サムネイルを表示するようにすることについて、記事を書いていく予定です。 Gnome Mutter と ネットワーク共有フォルダ デフォルトの設定 gnome mutter ではデフォルトで、ネットワーク共有フォルダの中身のサムネイルなどを表示しない。 サムネイルを表示する設定に変更 以下の画面で、サムネを表示したりその他情報についてどうするか、設定できる。デフォルトでは、全ての項目がトラブルを避けるためか、ネットワーク共有フォルダなどを含まない、端末上のディスク内にしか機能しないように設定されている。 設定を開く サムネイルを表示するように設定を変更 変更後の様子 設定を変更し、ネットワーク共有フォルダ等をのぞいてみると、サムネイルなどが見えるようになったりする。 参考にしたサイト ただ気づいたことを書いただけなので特になし。

January 6, 2025

linux 休止状態の動作を確認したい

この記事を書いた動機 (Nov 14 あたりの出来事) 最近、HP Proliant ML 150 (9 Gen) の消費電力削減の目的で、休止状態を利用できるようにしようとした過程で、それが正しく機能しているのか調べたくなった。そこで、ただメモリをたくさん指定した量だけ消費するプログラムを作成し、とりあえず動くところまで作ったので、ここに置いておこうというわけである。どこまで意味があるのかは不明。 ちなみに、一応メモリ割り当てに失敗したとき用に、再度メモリ割り当てを試みる機能や、メモリ割り当てに完全に失敗したときにプログラムを終了するなど、セーフティも実装しているが、結局使うことはなかったので正しく動く保証はない。 使い方 プログラムのコンパイル gcc useram.c -o useram プログラムの利用 # 10 GB のメモリを埋めるときの例 useram 10 Too many ram will be allocated by your request. denied operation. と出てくる時 プログラム内の定数 margin の大きさが大きすぎる可能性があるので、適宜調整する。 後は単純に、実装されているメモリサイズより大きなサイズを指定してしまっているので、小さい値で再度プログラムを実行してみる。 プログラム本体 #include <stdio.h> #include <stdlib.h> #include <sys/sysinfo.h> // unit GB #define margin 10 #define retry 3 // Get the amount of entire installed RAM. // No args are required. // return: amount of entire installed RAM int checkRAM(){ unsigned int amount = 0; // GB struct sysinfo info; sysinfo(&info); // convert unit byte to Giga byte (10^9) amount = info.totalram / 1000 / 1000 / 1000; return amount; } // allocate RAM (amount GB) // args:(Unit -> GB) // amount: allocation size unsigned int // maxAmount: entire system RAM amount unsigned int // return: // pointer: pointer to allocated area void* // If all ram allocation attempts are failed, return NULL. void* allocateRAM(unsigned int amount, unsigned int maxAmount){ // find specified allocation size is exceed entire system RAM amount or not. if(amount >= maxAmount - margin){ printf("Too many ram will be allocated by your request. denied operation.\n"); return 0; } // allocate ram but still the allocated area is not utilized. unsigned long allocateSize = (long)sizeof(char) * (long)amount * (long)1000 * (long)1000 * (long)1000; void* pointer = (void*)malloc(allocateSize); // retry ram allcation if it is failed. if(pointer == NULL){ printf("ram allocation is failed. retry %d times\n",retry); int counter = 0; while(pointer == NULL && counter < retry){ printf("retry %d\n",counter); void* pointer = (void*)malloc(allocateSize); counter++; } } // If all ram allocation attempts are failed, return NULL. if(pointer == NULL){ printf("allocation failed!\n"); return NULL; } printf("allocation OK\n"); return pointer; } // amount unit GB void useRAM(void* pointer,unsigned int amount){ // 4 mean size of int unsigned long loopAmount = (long)amount * (long)1000 * (long)1000 * (long)1000 / (long) 4; int* arr = (int*)pointer; // For each loop, fill up the allocated area with random value by 4 byte(size of int) for(unsigned long i = 0; i < loopAmount; i++){ arr[i] = (int)rand(); } printf("Loop amount %lu\n",loopAmount); printf("RAM area is filled up. The process is finished.\n"); return; } int main(int argc,char **argv){ // find entire system ram unsigned int ramAmount = checkRAM(); // If The allocation size is not specified, exit this program. if(argc <= 1){ printf(" The size of ram amount that will be filled up is not specified. (GB)\n"); return -1; } unsigned int amount = atoi(argv[1]); // find correct value is entered or not if(amount != 0){ printf("%d GB\n",amount); }else{ printf("You may enter string or 0 as args. Stop.\n"); return -1; } printf("System info: \n %d GB RAM is installed\n",ramAmount); // ram allocation and filling up process void* pointer = allocateRAM(amount,ramAmount); useRAM(pointer,amount); // If ram allocation is failed, exit this program if(pointer == NULL) { printf("went worng\n"); return -1; } // wait until get user input. // The filled up RAM area will not be free while there is no user input for 'q' key. char input = 'a'; while(input != 'q') scanf("%c",&input); free(pointer); return 0; } 参考にしたサイト How to determine memory size via C code - Stack Overflow https://stackoverflow.com/questions/45259131/how-to-determine-memory-size-via-c-code (2024年12月12日)

December 12, 2024

yay コマンドのインストール

この記事を書いた動機 単純に別の記事を更新してて、一応書いとくかってなっただけです。二番煎じというか、自分用のメモとしての補足的な記事なので、シンプルに書きます。 環境 arch linux (2024/11/13の時点で最新のやつ) yay のインストール 必要なコマンドをインストール sudo pacman -S base-devel git 作業ディレクトリとして適当な場所に移動 cd /tmp git から yay のリポジトリのクローン git clone https://aur.archlinux.org/yay.git cd yay yay をインストール makepkg -si 以上で、yayコマンドが使えるはずである。。。 参考にしたサイト Arch Linux に yay をインストール #archLinux - Qiita https://qiita.com/ekzemplaro/items/6714469c1fb1ae06b80f (2024年11月14日)

November 14, 2024

linuxカーネルを設定したりする📓

この記事を書いた動機 最近linuxのカーネルパラメータとか、コンフィグをいじる機会があったって、どうやっていじるんだっけとなったので、メモを残そうということになった。 いつものように、基本は自分のために書いてるというのもあって、他人が見るためのコンテンツとしてはクオリティは終わってるので、そこは承知ください。。。。 環境 ここには、簡易的にどんな環境でやることについて書いているか、記録してみる。 arch linux linux kernel version: 6.9.7 UEFIに対応したハードウェア環境 grub をブートローダーとして使っている x86 系列の 64 bit CPU (Intel の core i シリーズとか、ryzenとか、、、) カーネルをビルドする 今使っているlinuxのバージョンを確認 uname -r 6.9.7 作業用のフォルダを作成 いろいろ、コンフィグだのカーネル本体だのをいじくりまわして散らかるので、一つのフォルダにそれらをまとめる。 mkdir ~/kernel cd ~/kernel linux をダウンロード linux archivesから、自分の使っているlinuxのバージョンに合った、linux をダウンロードしてくる。私の場合は、以下のように、リンクを改変することで、バージョンを合わせた。 改変前 https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.11.7.tar.xz 改変後 https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.7.tar.xz linuxのダウンロードには、ブラウザから直接ダウンロードボタンを押したり、リンクを踏むことでできたり、gitが使えたりする。いろいろあるが、めんどくさかったので、wgetコマンドを使った。 wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.7.tar.xz ダウンロードしたカーネルを展開する tarコマンドで以下のようにして、適当に中身を展開する。 tar xfv linux-6.9.7.tar.xz cd linux-6.9.7 # オプションのヒント # x: extract (抽出) # f: file (展開するファイルを指定する) # v: verbose (途中経過の表示ができる) カーネル設定ファイルをコピー linuxでは、何も設定がないところからスタートする場合は、たぶん自分で以下のようにして、一つ一つコンフィグを設定していくっぽいが、そんなことを一からしていたら日が暮れてしまうので、今動いているカーネルの設定を使いまわす。 make menuconfig ... # 何かしらのメニューがしばらくすると表示され、圧倒的な量の設定項目があることに圧倒されるまでがセット。。。 linuxカーネルのバージョンを合わせたのは、バージョンがあっていないと、新たにカーネルの設定が追加されていたりして、その設定をするのが面倒だし、それで動かなかったらさらに面倒だからである。arch linuxの場合だと以下のようにして、設定をコピーできる。 ...

November 10, 2024

https通信をプライベートネットワークで使いたい

この記事を作った動機 私はプライベートネットワークにおいて、自分のためだけのサービスをhttpプロトコル経由で利用できるようにしているが、拡張機能とかの作成にあたり、httpsじゃないと不都合が生じるようになったことがきっかけで、https化に苦労することになり、もう嫌だということでこの記事を書くことになった。 例えばyoutube上で動作する拡張機能が、自分だけのためのサービスが動いているhttpサーバをバックエンドとして使うことを考えると、http通信とhttps通信が一つのWebページを表示するために混在してしまうために、ブラウザ側で通信がブロックされたリ、騒がしいエラーが出てきてしまい、非常に不快な思いをすることになる。 前提としていること 参考程度に前提条件とかも書いておく。 httpdを使っている。 opensslパッケージがインストール済み すでにhttpdを使っていて、ブラウザでなんか表示できる状態にある。 あくまで個人用など、閉じられた環境において、https通信を実現したいと考えている。 このブログの様な、大っぴらに公開されているWebサイトには使えない手法であることを理解している。 https通信の実現方法 証明書を作る HTTPsを実現するために、mkcertコマンドを使って証明書を作成するが、どんな証明書が必要が一応自分の理解の範囲であり、間違っているかもしれないが、簡易的に書いておく。必要そうな証明書は以下のとおりである。 サーバ自体を証明する証明書 各httpサーバとかのためにサービスごとに個別に用意される証明書 この中で、サーバと通信するパソコンがインストールしているべき証明書は、「サーバ自体を証明する証明書」の証明書の公開鍵であり、「各httpサーバとかのためにサービスごとに個別に用意される証明書」の公開鍵ではない。 mkcert コマンドのインストールを行う 私は arch linux を使っているので、以下のようにパッケージマネージャを利用した。 yay -S mkcert # たぶんリポジトリの分類がExtraにあるので、pacmanでもインストールできる # pacman -S mkcert mkcertの初期化を行う サーバ自体を証明する証明書の作成を行う。 mkcert -install # 証明書が保存された場所を調べるためには以下のコマンドでできる。基本的にmkcert -installを実行したユーザのホームディレクトリのどこかにある。 # mkcert -CAROOT # /home/username/.local/username/mkcert # 自分の環境だとこのような出力が得られる。 httpサーバ用の証明書を作る 次に以下のようにして、httpサーバが動いているドメイン名やIPアドレスを引数として、サービス用に証明書を作成する。この証明書は今回の場合であれば、httpdサーバの443番ポートを経由して、通信しているブラウザ等に送られることになる。 # コマンドを実行したファイル内で証明書の公開鍵と秘密鍵ができてしまうため、一応作業用のフォルダを作っている。 mkdir ./sslLocal/ cd ./sslLocal # 各httpサーバとかのためにサービスごとに個別に用意される証明書を作成 mkcert mydomain.name ipAddr # ドメイン名やIPアドレスなど複数指定できるらしいが、自分はとりあえずドメイン名だけにしてた。 # あっ、mydomain.nameやipAddrとかは適宜読み替えてください httpdが使う証明書を配置 私は以下の様にして、httpサーバ用の証明書を配置した。 # 証明書を作成したディレクトリへ移動 cd ~/sslLocal/* # ファイル内容を確認し、証明書の公開鍵と秘密鍵があることを確認する。 ls -rw-------⠀username⠀1708⠀Nov 4 02:06:02⠀⠀mydomain.name-key.pem -rw-r--r--⠀username⠀1452⠀Nov 4 02:06:02⠀⠀mydomain.name.pem # httpdのconfigがあるところに、証明書を置いておく場所も作る。 sudo mkdir /etc/httpd/conf/ssl # 署名書を作成したフォルダまで移動する。 cp ~/sslLocal/* /etc/httpd/conf/ssl/ httpdの設定 ssl通信に必要なモジュールを読み込む。 ...

November 4, 2024

gnomeの設定のメモ ⚙

この記事を書いた動機 ただの自分用のよく使う設定集としてのメモ。基本的にgnome標準で付いてくると思われるgsettingsコマンドを使う。 環境 細かいことは書かないけど一応 gnome wayland Xwayland no X11 4kなどの高解像度ディスプレイ gnome の有効化(一応) gnomeのディスプレイマネージャーを単にsystemdのサービスとして起動時に立ち上がってくれるように有効にするだけ。Windowsで言ったら、logonui.exeかみたいなやつに近い気がする。 systemctl enable gdm トラックパッドの設定 物理ボタンではなく、タップしている領域で右クリックか判定しているトラックパッド用の設定。 gsettings set org.gnome.desktop.peripherals.touchpad click-method 'areas' ウィンドウのボタン 最大化、ウィンドウモードとかのボタンなどのWindowsでは標準の機能がデフォルトで無効になっているので、有効にする。 gsettings set org.gnome.desktop.wm.preferences button-layout ":minimize,maximize,close" スケーリングの設定 スケーリングとか、gnomeの実験的な機能として現在(2024年10月27日)組み込まれている機能を有効化する。よくバグる。 # 125% とかもっと細かいスケーリングを有効にできる。ある程度は実用できる段階に体感では感じるが、Xwaylandのアプリが思いっきりぼけてしまう。 gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']" # Xwayland で動くアプリがぼけないようにする、欲張り設定。中途半端な125%とかの設定と併用すると、変にウィンドウが特定の領域でしか反応しなくなるなど、バグが多い。 gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer','xwayland-native-scaling']" ちなみに、Xwaylandの「xwayland-native-scaling」などは、以下のサイト(githubのmutterのリポジトリ)で設定値の存在を確認できる。 https://github.com/GNOME/mutter/blob/main/data/org.gnome.mutter.gschema.xml.in 例えば、こんな感じで書いてある。何か気になるのがあったら、仮想マシンかなんかで使う前に試してみるといいかもしれない。 <schemalist> <flags id="org.gnome.mutter.MetaExperimentalFeature"> <value nick="scale-monitor-framebuffer" value="1"/> <value nick="kms-modifiers" value="2"/> <value nick="autoclose-xwayland" value="4"/> <value nick="variable-refresh-rate" value="8"/> <value nick="xwayland-native-scaling" value="16"/> </flags> カーソルの大きさ サイズの取得 gsettings get org.gnome.desktop.interface cursor-size サイズの変更 gsettings set org.gnome.desktop.interface cursor-size 12 設定のリセット gsettings list-schemas | xargs -n 1 gsettings reset-recursively fcitx5 日本語環境についても、いちいち調べるのはめんどくさいので、今日(2024/11/14)追記してみることにした。 ...

October 27, 2024