Linux

[Linux] 一般ユーザのプロセスをポート1024番未満でBindする方法

ircdプログラムを導入しようとしてどうにも6667ポートで通信が出来ないのではまっていたのですが(6667は相変わらずつながらない)その際に別のポートにすればと思って443とか880とか適当にしていたのですが、Permission Deinedになっていました。

これIPのポート番号が1024未満(特権ポート privileged ports)に該当して、特権プロセス(CAP_NET_BIND_SERVICE ケーパビリティを持つプロセス)でないとアクセス出来ないことを無視していたために発生していました。初歩的な事でした。

実際にはrootユーザであればバインドして利用することが可能となりますが ircdのサービスの起動ユーザが irc 等であったたのでバインドが出来ない状態でした。ユーザを変更れば可能かもしれませんがプロセス自体にこの特権を与えることもできます。

この特権を個別にプロセスに付与するために、Linuxではケーパビリティという機能があり特権を少しづつ割り当てることができます。

$ sudo setcap CAP_NET_BIND_SERVICE+ep /usr/sbin/ngircd    
$ sudo getcap /usr/sbin/ngircd     
/usr/sbin/ngircd = cap_net_bind_service+ep

という設定を行います。この状態で起動すると

Jul 23 18:14:15 ubuntu ngircd[3286]: Reading configuration from "/etc/ngircd/ngircd.conf" ...    
Jul 23 18:14:15 ubuntu ngircd[3286]: No SSL server key configured, SSL disabled.     
Jul 23 18:14:15 ubuntu ngircd[3286]: Warning: Error during SSL initialization, continuing ...     
Jul 23 18:14:15 ubuntu ngircd[3287]: Running as user irc(39), group irc(39), with PID 3287.     
Jul 23 18:14:15 ubuntu ngircd[3287]: Not running with changed root directory.     
Jul 23 18:14:15 ubuntu ngircd[3287]: IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd 4).     
Jul 23 18:14:15 ubuntu ngircd[3287]:Now listening on [0::]:1022 (socket 8).
Jul 23 18:14:15 ubuntu ngircd[3287]:Now listening on [0.0.0.0]:1022 (socket 9). 

という形で起動することができます。
参考までに権限を取り外すと

$ sudo setcap -r /usr/sbin/ngircd    
$ sudo getcap /usr/sbin/ngircd

起動すると

Jul 23 18:17:13 ubuntu ngircd[3325]: Reading configuration from "/etc/ngircd/ngircd.conf" ...    
Jul 23 18:17:13 ubuntu ngircd[3325]: No SSL server key configured, SSL disabled.     
Jul 23 18:17:13 ubuntu ngircd[3325]: Warning: Error during SSL initialization, continuing ...     
Jul 23 18:17:13 ubuntu ngircd[3326]: Running as user irc(39), group irc(39), with PID 3326.     
Jul 23 18:17:13 ubuntu ngircd[3326]: Not running with changed root directory.     
Jul 23 18:17:13 ubuntu ngircd[3326]: IO subsystem: epoll (hint size 100, initial maxfd 100, masterfd 4).     
Jul 23 18:17:13 ubuntu ngircd[3326]:Can't bind socket to address 0:::1022 - Permission denied
Jul 23 18:17:13 ubuntu ngircd[3326]:Can't bind socket to address 0.0.0.0:1022 - Permission denied

Jul 23 18:17:13 ubuntu ngircd[3326]: Server isn't listening on a single port!     
Jul 23 18:17:13 ubuntu ngircd[3326]: ngircd exiting due to fatal errors!

となり、1022番ポートではバインド出来ずPermission Deniedとなります。

 

参考文献

 

それにしてもngircdですがディフォルトのポート6667,6668,6669では相変わらず動かないのはなぜでしょうか? ローカルでBindはできているため別の理由によりつながらない模様です。ちょっと原因はさっぱりでした。ここ数年Linux界隈から遠ざかっていたので色々物忘れが激しいです。Ubuntuではセキュリティの機構としてAppArmorなども導入されておりそちらが原因なのか最初かなり悩んでしまいました。なかなか難しいものですね。

さくらインターネットVPSのUbuntuを12.4にアップグレードする

何をおもったのか先日はサーバをアップデートしたのですがUbuntu11.4でやめてしまいました。よく考えたらもっと新しいバージョンが出ているわけです。なんか11.4が耳慣れていてそこでやめてしまいました (^^;

1 tmux

root@ubuntu:/home# do-release-upgrade

後2回実施して 11.10 。そしてつい先日でた 12.4 にあげておく事にします。

一番の変更してしまうのはMySQLが5.5になってしまう事のような気もします。アプリケーションとしては前回同様にあまり導入されていないのでさほど変更はありませんでした。念のため構成ファイルが置き換わるものは以前のものをコピーしておいて後から書き換えるようにしています。

ubuntuはそういえば、ローリングリリースになるとか行っていたのですがまだ半年おきのアップデートなんですかね?色々区分するにも分かりやすくて良いのですが。 


あと、今回は容量も大きいのでgitも使えるようにして起きました。これでローカルに今までおいておいたソースなどはすべてサーバ側におくように出来ます。普段は家のファイルサーバにバックアップとっていたのですがこれで複数の端末から作業が出来ます。今更なんですがね。

普段からWindowsが仕事で使っているのでMac/Windows共存の環境を心がけないといけないのですが最近色々さぼっていたらバラバラになってしまって何やら大変なのです。以前Gitを用いて設定ファイルを管理されている方がいたので同じように頑張りたいなと思っているのですが。

後はRedmineを入れないといけないなと思いながら会社で作りたいので自分のサーバにいれてもなとも思っているところ。一度設定すると色々バージョンに縛られて遊びづらいというのもあるしな。ちょっとプライベートも仕事も redmine + toodledo + evernote(memo) で管理していこうかなと思ったりしています。

さくらインターネットVPSのUbuntuを11.4にアップグレードする

今日横浜での雹にびっくりした @tokida です。帰り道、まだ氷が道路の脇にありました。


photo credit: Kat Gloor via photo pin cc

MacOSはパッチがあたってそうそうと忘れていた、さくらインターネットVPSのUbuntuを最新版に上げます。gitを使おうとおもってパッケージ見たら古いのしか無くて今更ながらにバージョンが古いのを認識しました。

現在のバージョンの確認

root@ubuntu:/home# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"

設定ファイルの更新(release-upgradesの最後の指定を normal に変更します)

root@ubuntu:/home# cat /etc/update-manager/release-upgrades
# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
#Prompt=lts
Prompt=normal

最後にアップデートコマンドで最新版のUbuntu11.04にアップします。

root@ubuntu:/home# do-release-upgrade

ちなみに、サポートされない(gnupg-curl libmpfr1ldbl)と 削除(libc6-i686 libept0)がありましたが悩んでも仕方ないのでyで進めていきます。それにしてもOSのりリースアップデートがこんなに楽なんて素晴らしいですね。昔からDebian系を結構使っていたのですが相変わらずスムースでした。
殆どアプリケーションも入れていない状態なので特にアップグレード時の質問は困るものはありませんでした。変更が多いと差分みてとメモしながらのほうがいいかと思います。

root@ubuntu:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

さてバージョンを見てみると 10.10 ですね。11.4には一気にはバージョンアップできないのです。なのでこのままもう一度、do-release-upgrade を行うことで完了となります。

root@ubuntu:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"

ということでようやく natty になりました。
これで心置きなく他のアプリも入れて見ることが出来ます。本来ならNgnixとかWordpressとか入れる前にやっておきたい作業でしたね。

さくらインターネット(スタンダード)から ServersMan VPS(エントリ)に移設してみた

先週からちょっとづつ移動したりしていたのですが先ほどDNSの切替も終えて移動しました。しばらく利用していて不具合があればもとに戻しますがMySQLとしては以前から移動していたので大丈夫かなぁとおもっています。VPSになるので今までとディレクトリ構成とか使い方を変更しているので色々考慮不足の点が出てきそうで怖いです。

 

プランはとりあえず、「エントリー」で初めてみますが状況を見て上位に変更をしたいと思います。(なにより初期2ヶ月無料+契約費用無料、途中解約OK!なので気楽に始められます)

ServersManは、いわゆるクラウドとかではなくて仮想ホスティングなのでバックアップとかが簡単にできないのですが公表されているものといしてはRAID6のディスクとされていたので壊れないで動くのかな?サーバ自体の故障などでどの様に動くのかわかないことも多いですが楽しみではあります。

WordPress単体での管理ではなくてサーバを見ていかないといけないのはたしかに面倒ですが、多少なりとも安く済ませるためには致し方無いかなと思っています。これでさくらよりスペック落ちると泣けて来るのですが使ってみていかないとわかりませんね。

色々ツールはあるかと思いますが、リソースもグラフにしたりして管理していかないといけないですね。とりあえず nginx の soketとかは見るようにしていきたいと思います、色々しないといけないことが多くて面倒ですね。

image

image

あとは、/proc/user_beancounters なども監視していけば面白いのかもしれません。

[Ubuntu] iPhoneを認識させる(できず)

※このUbuntu10.10はVmware上のVMとして構成されていますので一般的な構成とは異なる可能性があります。また「うまくいかなかった」という記事ですので(^^; あしからず。

とりあえずディフォルトのままでは反応してくれない。もちろん素のUbuntuであれば問題ないのだろうと思われるのでこれは基本的にVmwareとの辛味であると思われるのでちらほら散策。

image

Web Accessの箇所で上のアイコンのところでUSBのデバイスでチェックを入れる欄がありましたので「Apple iPhone」にチェックを入れてUSB経由でiPhoneをつなげてみます。(注意したいのは、ホストOS側に複数のUSBポートがあると実際にはその都度設定をしないといけません)

$dmesg

[ 2831.169321] usb 1-1: USB disconnect, address 4
[ 2831.183003] ipheth 1-1:4.2: Apple iPhone USB Ethernet now disconnected
[ 2850.512410] usb 1-1: new full speed USB device using uhci_hcd and address 5
[ 2851.431042] ipheth 1-1:4.2: Apple iPhone USB Ethernet device attached

上記のようにiPhoneの文字が見えます。でもまだまだファイルシステムとしては見ることが出来ないみたいですね。ただUSB経由で確認が出来ているのは確かな模様です。

さて色々ドライバやらもろもろいれていかなければいけないのですが何を入れていいのやらですのでググって見つけたこのサイトのとおりにやってみたいと思います。

 

なにやら結果としてたくさん入れることになりますが支持に従います。Forumの方にも情報がありました

$ gksudo add-apt-repository ppa:pmcenery/ppa && gksudo apt-get update && gksudo apt-get install gvfs gvfs-backends gvfs-bin gvfs-fuse libgvfscommon0 ifuse libgpod-common libplist++1 libplist-utils python-plist libusb-1.0-0 libusbmuxd1 usbmuxd libimobiledevice-utils

上記のコマンドでアプリを導入します。後は、/etc/fuse.confを書き換えてグループ fuseに追加したりして再起動。

tokida@tokidavm:~$ ifuse /mnt/iPhone
No device found, is it connected?
If it is make sure that your user has permissions to access the raw usb device.
If you’re still having issues try unplugging the device and reconnecting it.

と怒られてしまっています。さてさて。本来であれば自動的にマウントしてくれるはずなんですがね!?
わかる方いれば教えて欲しいです・・・

 

tokida@tokidavm:~$ lsusb -v

Bus 001 Device 009: ID 05ac:1294 Apple, Inc. iPhone 3GS
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x05ac Apple, Inc.
  idProduct          0x1294 iPhone 3GS
(省略)

などと表示されるのが見えます。

 

update1 :

ググッていると以下の記事を見つけけたけど。。再度Vmから作成直してみましたがやはりうまくいきません。基本的なパッケージはすでに導入されているのでアップデートから実施できるはずですがやはり美味きう動作しませんでした。残念。

Ubuntu Weekly Recipe:第151回 Ubuntu 10.10で4世代目iPod touchをマウントする|gihyo.jp … 技術評論社

Ubuntu 10.04,正確には搭載されたGNOME 2.30の新機能として,iPodがマウントできるようになりました。その後,iPhone/iPodは新機種が発売され,iPadも登場しました。OS(iOS)のバージョンも上がっています。そんな理由で,以前はiPodをマウントできたけど今はできなくなってしまったというケースも多いのではないでしょうか。

上部へスクロール