Linux2010. 3. 31. 11:38
fileno() 는 fp를 fd로 변환해주고
fdopen()은 fd를 fp로 변환해준다.

int fileno(FILE *stream);
FILE *fdopen(int fildes, const char *mode);

[링크 : http://linux.die.net/man/3/fileno]
[링크 : http://linux.die.net/man/3/fdopen]

아무튼 원하는 파일이나, stdin/out/err에 대한 fd를 얻어온뒤
fcntl() 함수를 이용하여 변경하면 된다.

fctnl(fd, F_SETFL, O_NONBLOCK);
(테스트 안해봣음!)

int fcntl(int fd, int cmd, long arg);

F_SETFL
    Set the file status flags to the value specified by arg. File access mode (O_RDONLY, O_WRONLY, O_RDWR) and file creation flags (i.e., O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC) in arg are ignored. On Linux this command can only change the O_APPEND, O_ASYNC, O_DIRECT, O_NOATIME, and O_NONBLOCK flags.

[링크 : http://linux.die.net/man/2/fcntl]
[링 크 : http://www.falinux.com/win/study/06/devicedriver11.html]

Posted by 구차니
Linux/Ubuntu2010. 3. 26. 22:02
build-essencial을 깔았다고 해서 각종 man page들이 설치되는 것은 아니다.
각종 개발관련 man page는 manpages-dev 패키지에 존재한다.

$ sudo apt-get install manpages-dev

[링크 : https://lists.ubuntu.com/archives/ubuntu-users/2009-May/182747.html]
Posted by 구차니
Linux2010. 3. 26. 17:12
putty로 두개의 창을 ssh를 통해 열었는데,
ps -ef | grep sshd로 하니 아래와 같이 4개의 ssh 데몬이 검색되었다.
root      2050     1  0 Mar24 ?        00:00:00 /usr/sbin/sshd
root     25402  2050  0 10:23 ?        00:00:00 sshd: morpheuz [priv]

morpheuz 25404 25402  0 10:23 ?        00:00:00 sshd: morpheuz@pts/1
root     26343  2050  0 16:53 ?        00:00:00 sshd: morpheuz [priv]
morpheuz 26345 26343  0 16:53 ?        00:00:00 sshd: morpheuz@pts/4
morpheuz 26394 25405  0 17:00 pts/1    00:00:00 grep --color=auto sshd

priv는 previleged의 약자로, 보안을 강화하기 위해
접속은 소켓을 열수 있는 root로 열고
root의 sshd가 chile process를 만들어, 권한을 제한하여 서비스를 해준다.

위의 ps -ef 에서 보이듯,
[root] /usr/sbin/sshd
[root]           + sshd : morpheuz [priv]
[user]                    + sshd : morpheuz@pts/1
[root]           + sshd : morpheuz [priv]
[user]                    + sshd : morpheuz@pts/4
계층구조로 실행되며, 실질적인 권한은 사용자 권한으로 한정시켜, 시스템에 손상을 입히는 행위를 예방한다.

LOGIN PROCESS
     When a user successfully logs in, sshd does the following:

           1.   If the login is on a tty, and no command has been specified, prints last
                login time and /etc/motd (unless prevented in the configuration file or by
                ~/.hushlogin; see the FILES section).
           2.   If the login is on a tty, records login time.
           3.   Checks /etc/nologin; if it exists, prints contents and quits (unless root).
           4.   Changes to run with normal user privileges.
           5.   Sets up basic environment.
           6.   Reads the file ~/.ssh/environment, if it exists, and users are allowed to
                change their environment.  See the PermitUserEnvironment option in
                sshd_config(5).
           7.   Changes to user’s home directory.
           8.   If ~/.ssh/rc exists, runs it; else if /etc/ssh/sshrc exists, runs it; other-
                wise runs xauth.  The “rc” files are given the X11 authentication protocol
                and cookie in standard input.
           9.   Runs user’s shell or command.

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

[링크 : http://www.citi.umich.edu/u/provos/ssh/privsep.html]
[링크 : http://www.citi.umich.edu/u/provos/ssh/privsep-faq.html]



Posted by 구차니
Linux2010. 3. 25. 17:10
fdisk는 몇가지 옵션을 제공하지만, 실질적으로
interactive mode로 일일이 하나씩 설정을 해야 한다.

즉, 프로그램에 내장시켜 파티션을 전부 삭제하고,
단일 파티션으로 잡는다거나 하는 용도로 쓰기에는 모호한 감이 있다.

이를 해결하기 위해서 fdisk를 대화식으로 하지 않는 방법을 찾거나
$ echo -e "n\np\n1\n\n\nt\n8e\nw" | fdisk /dev/sdX

[링크 : http://www.commandlinefu.com/commands/using/fdisk]

혹은 다른 프로그램을 사용해야 한다.

[링크 : http://linux.die.net/man/8/sfdisk]
    [링크 : ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/]
[링크 : http://linux.die.net/man/8/parted]
    [링크 : http://www.gnu.org/software/parted/index.shtml]

Sfdisk is part of the util-linux package, which, as far as I can tell,
is unmaintained since the last release in Sept 2005.

There is a fork called util-linux-ng, released August 2007,
which you can get here: ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/

[링크 : http://www.linuxquestions.org/questions/linux-software-2/location-of-the-latest-sfdisk-source-590331/]

Posted by 구차니
Linux/Fedora Core2010. 3. 24. 15:34
sudo는 일시적으로 권한을 상승시켜 특정 프로그램을 실행하는 명령어이다.
그런데, FC6에서는 기본적으로 sudo를 사용하지 않고 있어서 추가를 해주어야 한다.


/etc/sudoers 는 설정파일로
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
이 부분만 추가되어있다.
이 줄을 복사해서 root 대신 사용자 아이디를 넣어주면, 그 사용자는 모든 명령어에 대해 sudo로 실행할수 있게 된다.

예를 들어 dev라는 사용자를 추가하려면
dev    ALL=(ALL)       ALL
를 추가해주면 된다.


하지만, 이렇게만 하면 아래와 같은 문구가 나타난다.(lecture)
$ sudo ls

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:

이녀석을 매번 보기 싫다면
Defaults    lecture = never
이 녀석을 한줄 추가해주면

ubuntu 처럼 깔끔하게
$ sudo ls
Password:
요렇게만 물어본다.

원래대로라면 직접 /etc/sudoers를 vi로 수정하지 말고
visudo 라는 vi를 이용하여 안전하게 수정을 해야 하지만, FC6에서는 없는듯 하다.

       lecture     This option controls when a short lecture will be printed along with the password prompt.
                   It has the following possible values:

                   never   Never lecture the user.
                   once    Only lecture the user the first time they run sudo.
                   always  Always lecture the user.

                   If no value is specified, a value of once is implied.  Negating the option results in a value of
                   never being used.  The default value is once.

       lecture_file
                   Path to a file containing an alternate sudo lecture that will be used in place of the standard lec-
                   ture if the named file exists.

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

[링크 : http://www.mjmwired.net/resources/mjm-fedora-fc6.html]
[링크 : http://ubuntuforums.org/archive/index.php/t-483591.html]
Posted by 구차니
Linux2010. 3. 19. 10:44
엄밀하게, DOS 처럼 quick format은 존재하지 않는다.
mkfs.ext3 에서 -c 옵션으로 bad sector를 확인하는게 normal format이고
아무런 옵션없이 포맷하는게 quick format인 셈이다.


결론 : 그냥 옵션없이 하는게 quick 인데 느리군요(500GB 하는데 한 1분 걸린듯?)

[링크 : http://kldp.org/node/73233]
[링크 : http://linux.die.net/man/8/mkfs.ext3]
Posted by 구차니
Linux2010. 3. 17. 16:24
grep --color=auto 를 하면 자동으로 색상을 넣어주는데
검색 키워드를 "빨간색"으로 넣어주는 기능이 좀 마음에 든다.
그런데 가끔, 검색 내용뿐만 아니라 전체 내용에서 그 부분만 색상을 바꾸고 싶다면 어떻게 하면 되려나?
(일종의 터미널용 문법강조/신택스 하이라이트/syntax highlight)

grep 명령어에는 Before & After를 지원한다.
       -A NUM, --after-context=NUM
              Print NUM  lines  of  trailing  context  after  matching  lines.
              Places  a  line  containing  --  between  contiguous  groups  of
              matches.

       -B NUM, --before-context=NUM
              Print  NUM  lines  of  leading  context  before  matching lines.
              Places  a  line  containing  --  between  contiguous  groups  of
              matches.

[링크 : http://linux.die.net/man/1/grep]

검색어의 앞뒤로 조금더 출력해주느 기능인데, 검색어들 간에 거리가 적당하게 유지된다면
특정값을 넣어주면, 전체 문서에서 그 부분만 색상이 변해서 나오게 된다.

문서의 전체 길이를 재려면
"wc -l" 로 하면되고
       -l, --lines
              print the newline counts

[링크 : http://linux.die.net/man/1/wc]

파일이 아닐경우 pipe를 통해 넘겨주면 된다.

예를들어 grep의 manpage 에서 it만 강조하고 싶다면
# man grep | grep -A `man grep | wc -l` -B `man grep | wc -l` it
라고 입력하면 된다.

아래는 it의 빈도가 낮아서 a로 바꾸어서 검색해본 결과.
a에만 색상이 나오고 터미널 스크롤바는 길어지고 ㅋㅋ

음.. 깔끔한 방법은 없나?

Posted by 구차니
Linux2010. 3. 15. 14:00
MIME은 Multipurpose Internet Mail Extensions 의 약자로
원래 메일을 주고 받을때 파일의 종류를 알려주기 위해 사용한다.
[링크 : http://ko.wikipedia.org/wiki/MIME]

그런데 왜 리눅스에서 MIME을 쓰는지 궁금했는데 음.. 귀차니즘이.. OTL
아무튼, GDE(Gnome Desktop Environment)의 파일매니저인 natilus 에서 MIME으로
파일을 인지한다고 한다. MIME을 통해 실행할 프로그램의 연결도 한다.

The Nautilus file manager uses MIME types to identify the type of a file. The file manager needs to know the MIME type of a file to perform the following tasks:

  • Open the file in an appropriate application.

  • Display a string that describes the type of file.

  • Display an appropriate icon to represent the file.

  • Display a list of other applications that can open the file.

If you add a new application, you must ensure that other applications can recognize the files associated with the application. You must perform several tasks to enable other applications to detect the MIME type of the application files.


[링크 : http://docs.sun.com/app/docs/doc/817-5310/6mkpbn3tu?a=view]
[링크 : http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-intro.html.ko]

FC6에서는
/usr/share/mime 하위에 카테고리 별로 존재한다.
$ ll /usr/share/mime
total 212
-rw-r--r-- 1 root root  2393 Feb 16 13:30 aliases
drwxr-xr-x 2 root root 12288 Feb 16 13:30 application
drwxr-xr-x 2 root root  4096 Feb 16 13:30 audio
-rw-r--r-- 1 root root 13774 Feb 16 13:30 globs
drwxr-xr-x 2 root root  4096 Feb 16 13:30 image
drwxr-xr-x 2 root root  4096 Feb 16 13:30 inode
-rw-r--r-- 1 root root 11904 Feb 16 13:30 magic
drwxr-xr-x 2 root root  4096 Feb 16 13:30 message
-rw-r--r-- 1 root root 50520 Feb 16 13:30 mime.cache
drwxr-xr-x 2 root root  4096 Feb 16 13:30 model
drwxr-xr-x 2 root root  4096 Feb 16 13:30 multipart
drwxr-xr-x 2 root root  4096 Feb 16 13:30 packages
-rw-r--r-- 1 root root  5680 Feb 16 13:30 subclasses
drwxr-xr-x 2 root root  4096 Feb 16 13:30 text
drwxr-xr-x 2 root root  4096 Feb 16 13:30 video
-rw-r--r-- 1 root root    56 Feb 16 13:30 XMLnamespaces


CUPS(samba, Common Unix Printing System)에서도 이러한 MIME을 사용하는데
/etc/cups/mime.types 파일에서 내용을 볼수있다.

xdg(X Desktop Group)
/etc/xdg 에서는
Gnome의 시작 프로그램 설정 및 메뉴에 관련된 파일이 존재한다.
[링크 : http://en.wikipedia.org/wiki/Freedesktop.org]

'Linux' 카테고리의 다른 글

mkfs에는 quick format 없나요?  (0) 2010.03.19
grep으로 원하는 문자열 색상 바꾸기?  (2) 2010.03.17
glibc는.. 설치시 매~~~우 주의를 요합니다 ㄱ-  (0) 2010.03.11
glibc 컴파일하기  (0) 2010.03.11
*.la 파일 - libtool  (0) 2010.03.09
Posted by 구차니
Linux2010. 3. 11. 14:44
설치하고 나니..
/sbin/init 부터 실행을 못해 ㅠ.ㅠ
= 부팅 불가


Freeing unused kernel memory: 104k freed
/sbin/init: error whiKernel panic - not syncing: Attempted to kill init!
 le loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

니미 ㄱ-


추가


'Linux' 카테고리의 다른 글

grep으로 원하는 문자열 색상 바꾸기?  (2) 2010.03.17
MIME + nautilus(GNOME)  (0) 2010.03.15
glibc 컴파일하기  (0) 2010.03.11
*.la 파일 - libtool  (0) 2010.03.09
fribidi - Unicode BIDIrectional Algorithm  (0) 2010.03.09
Posted by 구차니
Linux2010. 3. 11. 13:30
이 녀석은 특이하게(?) 도 build 용 디렉토리를 따로 구성해야 한다.
그냥 configure 치면 다음과 같은 에러가 발생한다.

"configure: error: you must configure in a separate build directory"

추천 방법은
# git clone git://sourceware.org/git/glibc.git
# cd glibc
# mkdir build
# cd build
# ../configure
소스를 받고 그 아래와 디렉토리를 만들어 그 곳에서 상위의 configure를 호출하는 것이다.

만약, configure에서 --prefix, --exec-prefix 를 설정해주었다면
make install 시에 그 위치로 설치된다.

하지만, 각종 실행파일의 기본 경로가 --exec-prefix로 고정되서 삽입되는 듯한데 어쩌리오..
# cat Changelog.10
2138 Line
2000-01-04  Ulrich Drepper  <drepper@cygnus.com>

        * Makefile (install): Pass $(install_root) to ldconfig.
        Patch by Akira YOSHIYAMA <yosshy@tkf.att.ne.jp>.

ldconfig 에만 install_root을 넣나본데,
이녀석은 configure에서 설정가능한 항목이 존재하지 않는다.
config.make 파일을 수정해야 하는데, 이값을 넣지 않으면 -prefix 값이 들어가는것으로 생각된다.


[링크 : http://kldp.org/node/39946]
[링크 : http://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html#Configuring-and-compiling]

'Linux' 카테고리의 다른 글

MIME + nautilus(GNOME)  (0) 2010.03.15
glibc는.. 설치시 매~~~우 주의를 요합니다 ㄱ-  (0) 2010.03.11
*.la 파일 - libtool  (0) 2010.03.09
fribidi - Unicode BIDIrectional Algorithm  (0) 2010.03.09
chkconfig  (0) 2010.03.06
Posted by 구차니