IT 주제, 특히 리눅스를 다룹니다.

Posted
Filed under Linux/Gentoo
Gentoo에 Samba 3.6.25 설치 후 문제가 발견되었다.
Samba를 통해 서버의 NFS mount를 share 하는 경우, 디렉토리/파일을 브라우징하는 것은 문제가 없으나, 파일을 read, write 할 때 file corruption이 발생한다.(checksum 맞지 않음) 꽤 심각한 문제다.

Samba log 를 들여다 본 결과 아래와 같은 메시지가 발견되었다.
[2015/04/27 12:37:53.782287,  0] smbd/dfree.c:156(sys_disk_free)
  WARNING: dfree is broken on this system
Redhat Customer Portal에서 정보를 찾을 수 있었다.
Can an NFS mount be shared out via Samba under Red Hat Enterprise Linux?

이는 NFS 클라이언트가 필수적인 file-locking mechanism 없이 파일을 액세스 하기 때문이다. 따라서 해당 클라언트들은 서버로부터 해당 파일을 캐시한 다른 SMB 클라이언트로의 oplock break 요청을 초기화하지 못한다.
그러므로 NFS 파일 접근은 Samba 클라이언트에 의해 캐시된 파일로 write 할 수 있고, 이는 data corruption을 일으킨다.
해당 이슈는 2009년 samba.org 메일링 리스트에서 논의 되었다: [Samba] NFS mounted samba share

근본 해결책은 이러한 방법을 쓰지 않는 것이지만, 필요한 경우 workaround가 존재한다. (Redhat에서는 권고하지 않는다.)
  • /etc/samba/smb.conf 파일에 다음 내용을 추가한다:
posix locking = no
  • 또는, NFS mount 옵션에 nolock을 추가한다.
2015/04/29 16:36 2015/04/29 16:36
Posted
Filed under Linux/Gentoo
보안 상 TCP listen 허용되지 않는 것이 기본값이다.

/etc/slim.conf 파일의 xserver_arguments 항목의 -nolisten tcp 를 지워주면 된다.

2015/04/29 09:15 2015/04/29 09:15
Posted
Filed under Linux/Kernel
기존에 잘 사용하던 PulseAudio가 Gentoo를 새로 설치하면서 동작하지 않았다.
하루동안 삽질을 반복하다가 dmesg에서 이상한 메시지를 발견했다.
Too many HDMI devices 
Consider building the kernel with CONFIG_SND_DYNAMIC_MINORS=y
메시지를 해석하면, 발견된 HDMI 장치가 많아 장치 ID를 생성하지 못한 듯 하다.
커널에서 해당 옵션을 활성화, 빌드 후 재부팅을 하니 2개 인식되던 HDMI가 3개 모두 보인다.
(솔직히 HDMI 장치가 3개인줄도 몰랐다...)

드디어 pavucontrol 에서 Unplugged 되지 않은, 활성화된 장치가 1개 보인다.
출력 장치를 이것으로 선택 후 aplay 로 테스트해 보니 사운드가 정상 출력되었다.
2015/04/21 21:33 2015/04/21 21:33
Posted
Filed under Linux/Gentoo
Xfce는 리눅스 시스템에서 사용할 수 있는 아주 가벼운 윈도우 환경이다. 다른 윈도우 매니저보다 리소스 사용률이 적고, 빠르다. Xfce에 적당한 가벼운 디스플레이 매니저로 SLiM(Simple Login Manager)가 있다.

우선, 불필요한 패키지 빌드는 제외하기 위해, gnome, kde, qt4 USE flag를 사용하지 않도록 한다.
USE="-gnome -kde -qt4 ..."

Xfce를 원격으로 제어하기 위해 TigerVNC를 설치하되, Xorg 서버 모듈을 함께 빌드하기 위한 USE 설정한다.
# echo "net-misc/tigervnc server xorgmodule" >> /etc/portage/package.use

일반 desktop 프로파일을 설정한다.
# eselect profile set <number>

gvfs의 http USE flag의 경우 많은 gnome 의존성 패키지를 빌드하기 때문에 제외한다.
# echo 'gnome-base/gvfs -http' >> /etc/portage/package.use

어떤 Xfce 플러그인을 설치할 것인지 /etc/portage/make.conf 에 정의한다.
XFCE_PLUGINS="brightness clock trash"

비디오카드를 정의한다. (Intel HD Graphics를 위해 i965 추가)
VIDEO_CARDS="intel i965"

Xfce, SLiM, ibus, tigervnc 설치를 시작한다.
# emerge -av xfce4-meta xfce4-notifyd xorg-server xfce4-terminal xfce4-volumed-pulse gtk-engines-xfce slim ibus ibus-hangul
# emerge --deselect y xfce4-notifyd

필요한 서비스를 시작한다.
# rc-update add dbus default
# rc-update add consolekit default
# /etc/init.d/dbus start
# /etc/init.d/consolekit start

xdm의 기본 디스플레이 관리자를 SLiM으로 설정한다.
# vi /etc/conf.d/xdm
...
DISPLAYMANAGER="slim"

System default Xsession을 Xfce로 설정한다.
# vi /etc/env.d/90xsession
XSESSION="Xfce"

필요 시 SLiM 환경을 사용자 정의한다. (세션 종류, 자동로그인 등)
# vi /etc/slim.conf

ibus 데몬을 자동 실행하기 위한 환경을 설정한다.
(사용자 홈디렉토리에서)
# vi .xprofile
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

로그인 시 한글 locale을 설정하려면 아래 내용을 추가한다.
# vi /etc/X11/xinit/xinitrc.d/99-local
export LANG=ko_KR.UTF-8
export LC_ALL=ko_KR.UTF-8
# chmod +x /etc/X11/xinit/xinitrc.d/99-local

Xorg 서버 환경을 설정한다.
# vi /etc/X11/xorg.conf
Section "Device"
  Identifier  "Device0"
  Driver      "intel"
  VendorName  "INTEL Corporation"
EndSection
Section "Extensions"
  # fixes tearing
  Option      "Composite"           "Disable"
EndSection
Section "Module"
  Load        "vnc"
EndSection
Section "Screen"
  Identifier  "Screen0"
  Device      "Device0"
  Option      "SecurityTypes" "VncAuth"
  Option      "UserPasswdVerifier" "VncAuth"
  Option      "PasswordFile" "/root/.vnc/passwd"
EndSection

VNC 패스워드를 설정한다.
# vncpasswd

Xfce 로그인을 테스트한다.
# service xdm start

문제가 없다면 부트 스크립트로 추가한다.
# rc-update add xdm default
2015/04/19 21:30 2015/04/19 21:30
Posted
Filed under Linux/Gentoo
Gentoo에 무분별한 ~amd64 flag 사용으로 시스템이 너무 더러워졌다.
필요한 기능만 설치할 겸 /etc 만 백업하고 전체 재설치 중이다.

몰랐는데, XBMC 이름이 v14 들어서며 Kodi로 바뀐 듯 하다.

Kodi 컴파일 시 vaapi를 사용하기 위해서 USE flag "gles" 를 제외해야 한다.
4년 전 버그인데 아직도 dependancy check가 ebuild에 반영되지 않는듯...

이건 내 실수지만, OpenGL ES는 Embedded system 타겟이기 때문에 보통 필요 없다.

참조: http://trac.kodi.tv/ticket/10552
2015/04/19 09:46 2015/04/19 09:46
Posted
Filed under Linux/Gentoo
fail2ban은 iptables을 이용하여 지정된 조건에 맞는 접속 시도를 효과적으로 차단한다.
가장 많은 해킹 시도는 ssh를 통해 이루어진다.
ssh 필터링을 위해 system logger는 /var/log/auth.log 를 생성해야 한다.

emerge -av fail2ban

(syslog-ng 수정)
destination auth { file("/var/log/auth.log"); };
filter f_auth { facility(auth); };
log { source(src); filter(f_auth); destination(auth); flags(final); };

(/etc/fail2ban/jail.d/ssh-iptables.conf)
[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth.log
maxretry = 5

service fail2ban start
2015/04/18 18:42 2015/04/18 18:42
Posted
Filed under Linux/Gentoo
Gentoo Samba 3.6.25 설정 후 Windows 7에서 연결 시도하면 아래와 같은 메시지가 출력된다.
[2015/04/16 13:55:07.368135,  0] smbd/process.c:525(init_smb_request)
  init_smb_request: invalid wct number 255 (size 108)
/etc/samba/smb.conf 파일에 아래 항목을 추가한다.
max protocol = smb2
2015/04/16 15:18 2015/04/16 15:18