프로그램 사용/nfs2011. 6. 24. 21:47
Target 보드용 RootFS를 사용하기 위해 NFS를 사용하다 보니
확실히 NFS는 개발용으로는 좋으나 원격지에 대해서 물려쓰기에는 상당히 보안이 취약하다는 생각이 든다.
최소한 접속할 IP 대역을 제한해놓는다던가 하는 시스템적인 구현이 필요해 보인다.

sNFS와 같은 SSH를 통한 NFS등도 존재는 하지만
구조적인 보안취약성은 해결하기 힘들듯...

[링크 : http://www.sans.org/reading_room/whitepapers/linux/nfs-security-trusted-untrusted-environments_1956]
[링크 : http://www.lug.or.kr/docs/LINUX/others/00-01-5.htm]
[링크 : http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-ko-4/s1-server-nfs.html]
[링크 : http://165.132.13.12/document/service_info/security/guide/document/unix/unix_nfs.html]
Posted by 구차니
프로그램 사용/nfs2010. 2. 17. 09:51
이거 설마.. 랜카드가 Atheros 사 꺼라서 안되는거면 울어 버릴꺼야 ㄱ-

ubnutun 9.10 에서 안되고
Fedora 11 에서도 안되고
Fedora 6 에서도 안되는데.

그렇다면.. 차이점은 메인보드가 달라졌다는 것!
cpu가 바뀌면서 메인보드 바뀌고, 그러면서 LAN 카드가 기존의 RT8109 계열에서
달라졌는데.. 에이 설마~ ㄱ-


집에 남는 랜카드가 있을려나?


[링크 : http://mail-index.netbsd.org/tech-kern/2009/02/24/msg004470.html]
[링크 : http://ubuntuforums.org/showthread.php?t=1373099]
[링크 : https://bugs.launchpad.net/ubuntu/+source/linux/+bug/512764]



---
ㅆㅂ Atheros 다 죽었어!!!
우분투가 안되는게 아니라 랜카드 드라이버가 삐꾸였구만!! ㅆㅃㅆㅃㅆㅃㅆㅃ

아래의 링크에서 소스를 받아서 다시 컴파일 해서 설치 고고싱~
[링크 : http://lnx.sensibile.it/files/foxconn/AR81Family-linux-v1.0.1.4.tar.gz]

혹시 모를 백업용


ASUS 에서 받은 드라이버는
AR8131_AR8132-linux-v1.0.0.10.tar.gz 인데
버전이 올라간 만큼 큰 차이가 있는 것으로 보인다.
그리고 약간의 버그를 수정했다고 하는데

But, when I mounted my NAS with the NFS protocol I was not able to write
files on it and only reading was working fine.

나랑은 조금 다른 문제인것 같다.

ASUS  대신 ATHEROS 홈페이지의 드라이버 페이지를 열어보니
[링크 : http://partner.atheros.com/Drivers.aspx]

AR81Family Linux Driver
AR81Family-linux-v1.0.1.6.tar.gz 131K
뭥미 ㄱ- ASUS 니네 제대로 안해?!


일단 ubuntu 9.10 에서는 자동으로 랜을 잡았고, FC11에서도 자동으로 잡았는데,
FC6에서는 드라이버도 잡지 못하고, 그래서 ASUS 홈페이지에서 직접 소스를 받아 설치한 드라이버가
그모양이라니 ㅠ.ㅠ

'프로그램 사용 > nfs' 카테고리의 다른 글

NFS를 외부에서 접속하기 (공유기를 거쳐)  (0) 2011.07.29
nfs 보안  (2) 2011.06.24
changing port of NFS daemons (Installing STLinux On VMWare)  (0) 2010.02.12
NFS 관련  (0) 2010.02.11
NFS 설정 /etc/exports 의 squash  (0) 2010.02.11
Posted by 구차니
프로그램 사용/nfs2010. 2. 12. 16:52
NFS over TCP가 타겟 보드에서 안되는 문제로 인해 검색을 해보고 실험도 해봤지만
이녀석은 mountd 포트를 고정시켜주는 역활을 한다.
아무래도 VMWARE에서 돌릴려면 내부 방화벽이라던가의 문제로 인해서 특정 포트로 고정하는게 편하니까 말이다.

물론 Fedora/redhat 계열의 경우이고
ubuntu의 경우 다른 파일에서 설정을 해야 한다.

아래는 페도라/레드햇 일 경우
$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
# Add Static ports for NFS, in order to be able to forward them with VMWare NATconfig
RQUOTAD_PORT=32764
STATD_PORT=32765
STATD_OUTGOING_PORT=32766
MOUNTD_PORT=32767

[링크 : http://www.stlinux.com/faq?q=faq/vmware]


아래는 우분투/데비안일 경우
$ cat /etc/services | grep mountd
mountd             32767/tcp
mountd             32767/ucp

[링크 : http://manpages.ubuntu.com/manpages/intrepid/man8/mountd.8.html]
[링크 : http://mindwing.kr/141]

'프로그램 사용 > nfs' 카테고리의 다른 글

nfs 보안  (2) 2011.06.24
NFS 왜 안될까?  (0) 2010.02.17
NFS 관련  (0) 2010.02.11
NFS 설정 /etc/exports 의 squash  (0) 2010.02.11
unfsd - udev nfs deamon  (2) 2010.02.08
Posted by 구차니
프로그램 사용/nfs2010. 2. 11. 18:14
[링크 : http://www.netnux.com/zbxe/794]
[링크 : http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/ch-nfs.html]
[링크 : http://kldp.org/node/20392]
[링크 : http://www.4ellene.net/tt/135]

NFS - Network File System

NFS share
/etc/exports
/var/lib/nfs/etab

NFS server (ubuntu)
/etc/default/nfs-kernel-server
/etc/init.d/nfs-kernel-server

// hosts_access - format of host access control files
/etc/hosts.allow
/etc/hosts.deny

// Network name configuration
/etc/host.conf - resolver configuration file (WHOLE)
/etc/resolv.conf - resolver configuration file (DNS)
/etc/hosts -  The static table lookup for hostnames
/etc/hostname - show or set the system's host name
/etc/dnsdomainname - show the system's DNS domain name

rpc.mountd - NFS mount daemon
rpc.nfsd - NFS server process
rpc.statd - NSM status monitor
exportfs - maintain list of NFS exported file systems
nfsstat - list NFS statistics
rpcinfo - report RPC information
showmount - show mount information for an NFS server
/var/lib/nfs/rmtab

/etc/rpc - rpc program number data base

// NFSv4 ID <-> Name Mapper
idmapd
rpc.idmapd
idmapd.conf

// DARPA port to RPC program number mapper
portmap

/var/lib/nfs/xtab

nfs

mount: [server:path] failed, reason given by server: Permission denied
/etc/exports 에 정의 안된것을 mount 하려하면 이런 에러 발생
exportfs -ra 로 업데이트 되었는지 확인
혹은 service nfs-kernel-server restart로 갱신
혹은 service nfs-kernel-server force-reload로 갱신
혹은 /etc/exports에 있는지 없는지 확인

http://www.higs.net/85256C89006A03D2/web/PageLinuxNFSTroubleshooting


mount: mounting [server:path] on nfs failed: Protocol not supported

http://www.linuxquestions.org/questions/linux-embedded-78/protocol-not-supported-error-after-mount-692466/

mountd port 변경
[링크 : http://mindwing.kr/141]

'프로그램 사용 > nfs' 카테고리의 다른 글

NFS 왜 안될까?  (0) 2010.02.17
changing port of NFS daemons (Installing STLinux On VMWare)  (0) 2010.02.12
NFS 설정 /etc/exports 의 squash  (0) 2010.02.11
unfsd - udev nfs deamon  (2) 2010.02.08
nfsstat  (0) 2010.02.07
Posted by 구차니
프로그램 사용/nfs2010. 2. 11. 14:45
현재 TCP를 통해 NFS가 부팅을 못하는게 이거 문제는 아닌것 같지만
아무튼, 보안관련 설정으로 squash 라는 것이 있다.

No root-squash means that the root user will not be mapped to user nobody (this is normally done for security reasons) when mounting / accessing a NFS file system.

[링크 : http://communities.vmware.com/thread/105011]

no-root-squash        루트의 자격으로 파일시스템에 접근할 수 있도록 마운트
     root-squash        루트의 자격으로 파일시스템에 접근하면 anonymous uid/gid로 바꿔서 허가

[링크 : http://mnslaboratory.springnote.com/pages/952932.xhtml]

User ID Mapping

nfsd bases its access control to files on the server machine on the uid and gid provided in each NFS RPC request. The normal behavior a user would expect is that she can access her files on the server just as she would on a normal file system. This requires that the same uids and gids are used on the client and the server machine. This is not always true, nor is it always desirable.

Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anonymous or nobody uid. This mode of operation (called 'root squashing') is the default, and can be turned off with no_root_squash.

By default, exportfs chooses a uid and gid of 65534 for squashed access. These values can also be overridden by the anonuid and anongid options. Finally, you can map all user requests to the anonymous uid by specifying the all_squash option.

Here's the complete list of mapping options:

root_squash
Map requests from uid/gid 0 to the anonymous uid/gid. Note that this does not apply to any other uids that might be equally sensitive, such as user bin.
no_root_squash
Turn off root squashing. This option is mainly useful for diskless clients.
all_squash
Map all uids and gids to the anonymous user. Useful for NFS-exported public FTP directories, news spool directories, etc. The opposite option is no_all_squash, which is the default setting.
anonuid and anongid
These options explicitly set the uid and gid of the anonymous account. This option is primarily useful for PC/NFS clients, where you might want all requests appear to be from one user. As an example, consider the export entry for /home/joe in the example section below, which maps all requests to uid 150 (which is supposedly that of user joe).

[링크 : http://linux.die.net/man/5/exports]

7.4. I do not have permission to access files on the mounted volume.

This could be one of two problems.

If it is a write permission problem, check the export options on the server by looking at /proc/fs/nfs/exports and make sure the filesystem is not exported read-only. If it is you will need to re-export it read/write (don't forget to run exportfs -ra after editing /etc/exports). Also, check /proc/mounts and make sure the volume is mounted read/write (although if it is mounted read-only you ought to get a more specific error message). If not then you need to re-mount with the rw option.

The second problem has to do with username mappings, and is different depending on whether you are trying to do this as root or as a non-root user.

If you are not root, then usernames may not be in sync on the client and the server. Type id [user] on both the client and the server and make sure they give the same UID number. If they don't then you are having problems with NIS, NIS+, rsync, or whatever system you use to sync usernames. Check group names to make sure that they match as well. Also, make sure you are not exporting with the all_squash option. If the user names match then the user has a more general permissions problem unrelated to NFS.

If you are root, then you are probably not exporting with the no_root_squash option; check /proc/fs/nfs/exports or /var/lib/nfs/xtab on the server and make sure the option is listed. In general, being able to write to the NFS server as root is a bad idea unless you have an urgent need -- which is why Linux NFS prevents it by default. See Section 6 for details.

If you have root squashing, you want to keep it, and you're only trying to get root to have the same permissions on the file that the user nobody should have, then remember that it is the server that determines which uid root gets mapped to. By default, the server uses the UID and GID of nobody in the /etc/passwd file, but this can also be overridden with the anonuid and anongid options in the /etc/exports file. Make sure that the client and the server agree about which UID nobody gets mapped to.

[링크 : http://www.higs.net/85256C89006A03D2/web/PageLinuxNFSTroubleshooting]

root_sqash
     uid/gid 0(uid0와 gid0는 user root와 group root의 값이다)를 익명 uid/gid로 연결하기를 요청한다.
     사용자 'bin'과 같이 민감한 uid에는 적용되지 않음을 유의하라.
no_root_squash
     root squash를 사용하지 않음. 이 옵션은 디스크가 없는 클라이언트(MTD device)에 주로 사용됨.
all_squash
     모든 uid/gid를 익명 uid/gid로 연결함. NFS 로 연결된 공개(익명?) FTP 에 유용함.
     반대 옵션은 no_all_squash이며 기본값임.

기본값
root_squash / no_all_squash
root 계정을 익명(기본값으로 uid:65534/gid:65534로 연결)으로 사용하며, 모든 아이디를 익명으로 연결하지 않음
= 개별 uid/pid를 사용함.

'프로그램 사용 > nfs' 카테고리의 다른 글

changing port of NFS daemons (Installing STLinux On VMWare)  (0) 2010.02.12
NFS 관련  (0) 2010.02.11
unfsd - udev nfs deamon  (2) 2010.02.08
nfsstat  (0) 2010.02.07
우분투에서 nfs로 uboot 부팅이 안돼요 2  (0) 2010.02.06
Posted by 구차니
프로그램 사용/nfs2010. 2. 8. 15:40
패키지 이름은 unfs3
실행파일 이름은 unfsd
서비스 이름은 unfs3

실행은      sudo service unfs3 [start|stop|restart]
도움말은   man unfsd / unfsd -h
exports     /etc/exports

하지만 exports 문법이 조금 달라졌는지
*(rw) 의 *을 인식하지 못한다.

[링크 : http://unfs3.sourceforge.net/]
[링크 : http://sourceforge.net/projects/unfs3/]

[링크 : http://blog.syszone.co.kr/119]

'프로그램 사용 > nfs' 카테고리의 다른 글

NFS 관련  (0) 2010.02.11
NFS 설정 /etc/exports 의 squash  (0) 2010.02.11
nfsstat  (0) 2010.02.07
우분투에서 nfs로 uboot 부팅이 안돼요 2  (0) 2010.02.06
우분투의 nfs 서버로 uboot nfs 타켓 부팅 안되는 경우  (0) 2010.02.05
Posted by 구차니
프로그램 사용/nfs2010. 2. 7. 16:06
NFS의 기본설정을 몰라서 헤매다가 nfsstat을 통해 검사를 해보니
서버나 클라이언트에 따라 다르겠지만, FC6 -> ubuntu 9.10 에서는 TCP, NFSver3 로 접속한다.
물론 mount 명령에서는 별다른 옵션은 나오지 않는다.

# /usr/sbin/nfsstat -m
/media/nfs from 192.168.10.91:/
 Flags: rw,vers=3,rsize=262144,wsize=262144,hard,proto=tcp,timeo=600,retrans=2,sec=sys,addr=192.168.10.91

# mount
192.168.10.91:/ on /media/nfs type nfs (rw,addr=192.168.10.91)

Name

nfsstat - list NFS statistics

Examples

nfsstat -o all -234
Show all information about all versions of NFS.
nfsstat --verbose -234
Same as above.
nfsstat -o all
Show all information about about active versions of NFS.
nfsstat --nfs --server -3
Show statistics for NFS version 3 server.
nfsstat -m
Show information about mounted NFS filesystems.
[링크 : http://linux.die.net/man/8/nfsstat]


Posted by 구차니
프로그램 사용/nfs2010. 2. 6. 14:12
이번에도 될지 안될지는.. 정식으로 서버 아이피 변경해봐야 하겠지만.. OTL
일단 문제가 된건, 자동 생성된 exports 파일의 내용차이

FC6 버전의 exports 파일의 내용이 아래와 같이 간략했다면
 /home/morpheuz/st7109/target      *(rw,async,nohide,no_root_squash)

우분투 버전의 exports 파일은 이렇게 길다
 /home/morpheuz/st7109/target
        *(rw,async,wdelay,nohide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,
        secure_locks,no_acl,anonuid=65534,anongid=65534)

아무튼 exports manpage를 찾아보니,
no_acl

On some specially patched kernels, and when exporting filesystems that support ACLs, this option tells nfsd not to reveal ACLs to clients, so they will see only a subset of actual permissions on the given file system. This option is safe for filesystems used by NFSv2 clients and old NFSv3 clients that perform access decisions locally. Current NFSv3 clients use the ACCESS RPC to perform all access decisions on the server. Note that the no_acl option only has effect on kernels specially patched to support it, and when exporting filesystems with ACL support. The default is to export with ACL support (i.e. by default, no_acl is off).

[링크 : http://linux.die.net/man/5/exports]
요런 내용이 나오는데.. 이게 원인이려나?

잠시 테스트 하는데.. tcp 접속 옵션이 빠져 udp로 되니 이상없이.. OTL 머가 도대체 문제지?
ACL도 상관없고 도대체 TCP가 안되는건 또 머냐고 ㅠ.ㅠ

2010/02/05 - [Linux/Ubuntu] - [확인중] 우분투의 nfs 서버로 uboot nfs 타켓 부팅 안되는 경우

'프로그램 사용 > nfs' 카테고리의 다른 글

unfsd - udev nfs deamon  (2) 2010.02.08
nfsstat  (0) 2010.02.07
우분투의 nfs 서버로 uboot nfs 타켓 부팅 안되는 경우  (0) 2010.02.05
우분투 nfs 서버 접속불가  (2) 2010.02.05
ubuntu에 NFS 서버 설치  (0) 2010.02.04
Posted by 구차니
프로그램 사용/nfs2010. 2. 5. 15:29
Ubuntu 9.10 Desktop Edition 에서 nfs를 사용해서 target 보드를 사용할때 발생하는 문제이다.

1. 우분투 설치시 기본으로 추가하는 계정은
    sudo user로서 admin 그룹에 추가되어 있고, gid/uid=1000 이다.
2. FC6 에서 생성되는 녀석은 gid/uid=500 부터이다.
3. FC6의 유저와 타겟을 우분투로 옮기면 nfs rootfs를 붙이고는 서버가 응답이 없다고 나온다.
IP-Config: Complete:
      device=eth0, addr=192.168.10.198, mask=255.255.255.0, gw=192.168.10.1,
     host=hmp_7109, domain=, nis-domain=(none),
     bootserver=255.255.255.255, rootserver=192.168.10.91, rootpath=
Looking up port of RPC 100003/2 on 192.168.10.91
PHY: 0:03 - Link is Up - 100/Full
Looking up port of RPC 100005/1 on 192.168.10.91
VFS: Mounted root (nfs filesystem) readonly.
Freeing unused kernel memory: 104k freed
nfs: server 192.168.10.91 not responding, still trying
4. 물론, mount -t nfs 서버:/경로 로 붙이면 붙는다.
5. 혹시나 해서 유저를 admin 그룹에 추가하고, uid를 1000번 대로 이동시켰다.(확인 필요)

이런 경우에는 우분투의 nfs-kernel-server의 기본설정이 gid를 확인하도록 해놨기 때문이다.
이러한 보안 설정은 /etc/default/nfs-kernel-server 파일에 들어 있으며, 아래의 내용이 기본으로 들어 있다.
물론 이 파일은 기본 포맷으로 /usr/share/nfs-kernel-server/conffiles/nfs-kernel-server.default 에 존재한다.

$ cat /etc/default/nfs-kernel-server
# Number of servers to start up
RPCNFSDCOUNT=8

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/?SecuringNFS
RPCMOUNTDOPTS=--manage-gids

# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS=

아무튼, 아래 내용을 번역하기 귀찮아서.. 대충 떄려잡기만 했는데,
결과론적으로, gid를 무시하고 접속을 하도록 하는것 같다.(ACL을 무시하는 듯)

장담은 못하겠지만, FC11에서도 동일한 현상으로 NFS 접속이 되지 않았는데(uboot에서)
FC11에서도 gid를 확인하도록 하기 때문이 아닐까 생각된다.

엄밀하게는 gid를 맞추어 주면 해결이 될듯 하지만.. 일단, 작동이 되니 여기까지 하는 구차니즘.. OTL

2010/02/05 - [Linux/Ubuntu] - 우분투 nfs 서버 접속불가
2010/02/04 - [Linux/Ubuntu] - ubuntu에 NFS 서버 설치


$ man mountd

NAME
       rpc.mountd - NFS mount daemon

OPTIONS
       -g  or  --manage-gids
              Accept requests from the kernel to map user id numbers into  lists of group id numbers for use in access  control.   An
              NFS  request  will normally (except when using Kerberos or other cryptographic authentication) contains a user-id and a
              list of group-ids.  Due to a limitation in the NFS protocol, at most 16 groups ids can be listed.  If you  use  the  -g
              flag,  then  the  list  of  group ids received from the client will be replaced by a list of group ids determined by an
              appropriate lookup on the server. Note that the 'primary' group id is not affected so a newgroup command on the  client
              will still be effective.  This function requires a Linux Kernel with version at least 2.6.21.

[링크 : http://linux.die.net/man/8/rpc.mountd]

2010.02.06 추가
막상 구서버를 옮기고 나서 다시 테스트 하는데 안된다 ㄱ- 뭥미?

----
다른 연관글 확인요망
Atheros LAN 드라이버의 버그로 인해 NFS/TCP의 전송에 대한 문제가 있었다.

'프로그램 사용 > nfs' 카테고리의 다른 글

nfsstat  (0) 2010.02.07
우분투에서 nfs로 uboot 부팅이 안돼요 2  (0) 2010.02.06
우분투 nfs 서버 접속불가  (2) 2010.02.05
ubuntu에 NFS 서버 설치  (0) 2010.02.04
NFS 마운트 하기 - how mount nfs filesystem  (0) 2010.01.11
Posted by 구차니
프로그램 사용/nfs2010. 2. 5. 10:18
FC6의 /etc/exports 를 우분투로 끌어왔는데 nfs가 제대로 구동되지 않았다.
아래와 같이 exportfs 라는 명령어를 통해 우분투용 설정에 맞도록 설정을 해주어야 한다.

ubuntu 9.10의 경우 nfs는 존재하지 않고, 커널이나 udev 방식의 nfs 서버가 존재한다.
아마 일반적으로 nfs대신 nfs-kernel-server 라는 서비스명으로 하면 될것이다.
확신은 못하겠지만, service nfs-kernel-server 라고 하면 /etc/exports 변경시 자동으로 업데이트 되는듯 하다.

$ sudo service nfs-kernel-server restart
이거 한줄이면 업데이트 끝.

2010/02/05 - [Linux/Ubuntu] - 우분투의 nfs 서버로 uboot nfs 타켓 부팅 안되는 경우
2010/02/04 - [Linux/Ubuntu] - ubuntu에 NFS 서버 설치


exportfs -a
exportfs
service nfs restart
service network restart

[링크 : http://www.linuxquestions.org/questions/linux-server-73/root-nfs-server-returned-error-13-while-mounting-homearavindbrfsrootfs-589574/]

exportfs - maintain list of NFS exported file systems

/usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]
/usr/sbin/exportfs -r [-v]
/usr/sbin/exportfs [-av] -u [client:/path ..]
/usr/sbin/exportfs [-v]
/usr/sbin/exportfs -f

The exportfs command is used to maintain the current table of exported file systems for NFS. This list is kept in a separate file named /var/lib/nfs/xtab which is read by mountd when a remote host requests access to mount a file tree, and parts of the list which are active are kept in the kernel's export table.

-a
    Export or unexport all directories.

[링크 : http://linux.die.net/man/8/exportfs]

exportfs를 실행하면 /etc/exports 파일에서 /var/lib/nfs/xtab 으로 설정을 옮겨간다.




2010.02.17 추가
*** VERY IMPORTANT!!!! ***

M/B - P5G41T-M LX
LAN - Atheros GbE AR81 family (AR8131/AR8132)
OS   - tested on FC6
증상 - NFS 를 TCP로 접속시 타켓이 부팅을 하지 못함
원인 - 드라이버 이상으로 추측(드라이버 교체로 해결)
해결 -
아래의 링크에서 문제가 해결된 드라이버로 교체(컴파일 필요)
[링크 : http://lnx.sensibile.it/files/foxconn/AR81Family-linux-v1.0.1.4.tar.gz]


2010/02/17 - [Linux] - NFS 왜 안될까?

Posted by 구차니