write 프로그램에 대한 질문입니다.

beprog의 이미지

RH8.0에서 telnet 서버를 돌리고 있습니다. 제가 root인데 계정 사용자와 대화하기 위해서 write를 사용하고 싶습니다.
문제는 제가 서버에서 일반 사용자 계정으로 로그인해있으면 다른 사용자와 대화하는데 어려움이 없습니다. 문제는 제가 root로 로그인 했을 때 입니다. mesg y 로 write 허용 했구요 /dev/pts/n에 권한이 없다는 말이 나오길래 권한도 바꿔주었습니다. 여기서 n은 숫자 입니다. 이렇게 바꿔주었더니 메시지가 오기는 오더군요. 그런데 읽을 수가 없었습니다. 예를 들어,
\385\386\395\465
이것 처럼 역슬래시와 숫자의 조합으로 출력이 되었습니다. /dev/pts/0 등의 파일이 character special 파일이라 그런 것 같은데 무슨 방법이 없을 까요? 참고로 root가 다른 일반 사용자에게 write하면 메시지가 잘 도착됩니다. 물론 읽을 수 있는 형태로 말입니다.

Quote:

# who
root pts/1 Mar 22 22:38 (:0.0)
jaexxx pts/2 Mar 22 22:13 (211.xxx.xxx.xxx)
root pts/0 Mar 22 22:36
root pts/0 Mar 22 22:36 (:0.0)
root pts/1 Mar 22 22:38

#ls -l /dev/pts
crw--w--w- 1 root root 136, 0 3월 22 22:38 0
crw--w--w- 1 root root 136, 1 3월 22 22:59 1
crw--w-rw- 1 jaexxx tty 136, 2 3월 22 22:44 2

그리고 위의 파일들은 사용자가 로그인 하면 그때에서야 생기는 것 같았습니다. write로 메시지를 주고받기 위해서 로그인할때마다 권한을 바꿔주는 것은 귀찮은 일인데요. 혹시 이런 파일들의 초기 권한 설정을 지정해주는 방법이 있는지요.
고수님들의 고견을 기다리겠습니다. 감사합니다.

pynoos의 이미지

write 에 의해 상대의 terminal에 씌여지는 것은,

write 를 실행하는 프로그램이 직접 쓰는 것입니다.

상대의 computer에 어떤 식으로 쓰이는 지는 전적으로 write program이 어떤일을 하고 있는지를 알아야합니다.

일단 mesg y 라는 명령은

단지

chmod g+w `tty`

라고 생각하시면 됩니다. 그리고 write 프로그램 자체에는 setgid가 terminal 과 같은 것으로 되어 있으므로, 상대방의 tty에 뭔가를 써넣는 권한이 충분해지게 됩니다.

그런데 \385\386\395\465 이런식으로 쓰이는 것은 8진수로 표현되는 것인데, write 라는 녀석이 0x80 이상 character에 대해서는 8진수 3자리로 쓰게 됩니다. 고로 한글은 제대로 출력이 안된다고 보아도 좋을 것 같습니다.

얼핏 생각하기에 입출력으로 shell등에서 쓰이는 readline library를 사용하는 것 처럼 보이고, .inputrc 파일을 수정해주면 고쳐질 것 같아 보이는데, 사실은 아무 상관이 없습니다.

결국 원하는 기능을 얻으시려면, redhat의 경우 SRPM을 받으셔서
write.c 가 출력하는 부분을 직접 고치신후 다시 compile 해야합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.