분류 전체보기 검색 결과

178개 발견
  1. 미리보기
    2018.07.19 - mr.november11

    [Linux] HPE 스마트 스토리지 관리자(HPE SSA) CLI 를 활용한 서버 Disk 상태 확인

  2. 미리보기
    2018.07.09 - mr.november11

    [Linux]sudo 명령어 수행 시 sudo: sorry, you must have a tty to run do Error가 발생할 때 해결 방안

  3. 미리보기
    2018.07.07 - mr.november11

    [javascript ] javascript 로 form이나 element 값 얻어오거나 설정하기

  4. 미리보기
    2018.07.07 - mr.november11

    [python] python 에서 명령어 매개변수 가져오기 sys.argv

  5. 미리보기
    2018.07.07 - mr.november11

    [python] 파이썬에서 time, strftime 함수를 사용하여 날짜와 시간 포맷에 맞춰 가져오기

  6. 미리보기
    2018.07.07 - mr.november11

    [Linux] CentOS7에서 2TB 이상 사이즈의 디스크 GTP 파티션 생성 및 포맷 방법

  7. 미리보기
    2018.07.02 - mr.november11

    [Linux] CentOS 7, rhel7 hostname 호스트네임 변경하기

  8. 미리보기
    2018.06.26 - mr.november11

    [Linux] CentOS SFTP 서버 설정하기 - chroot로 디렉토리 제한 및 SSH와 포트 분리까지

[Linux] HPE 스마트 스토리지 관리자(HPE SSA) CLI 를 활용한 서버 Disk 상태 확인

SSA CLI는 HPE 스마트 스토리지 관리자 CLI툴로 HP 서버의 Disk 상태를 확인할 수 있는 툴이다.

Linux상에서는 bios 를 통해 RAID 설정된 disk 장치만 감지 가능하다.

  • Disk 2장이 RAID 1으로 구성되어 있을 경우 Disk 1개 고장은 Linux kernel상에서는 감지가 불가능하다. Disk 5장이 RAID 5으로 4+1 로 구성되어 있을 경우 또한 마찬가지이다.

실제 Disk의 상태를 확인하기 위해서는 ssacli 사용이 필요하다.

ssacli 명령어를 활용한 Disk 상태 확인

/usr/sbin/ssacli ctrl all show config 명령어를 통해 개별 Disk 상태 및 RAID 구성 확인을 확인 할 수 있다.

  [root@server~]# /usr/sbin/ssacli ctrl all show config 


Smart Array P840 in Slot 3               (sn: XXXXXX )
  Port Name: 1I
  Port Name: 2I
  Internal Drive Cage at Port 1I, Box 1, OK
  Internal Drive Cage at Port 1I, Box 1, OK
  Internal Drive Cage at Port 2I, Box 2, OK
  Array A (SAS, Unused Space: 0 MB)
    logicaldrive 1 (1.8 TB, RAID 0, OK)
    physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS HDD, 2 TB, OK)
  Array B (SAS, Unused Space: 0 MB)
    logicaldrive 2 (43.7 TB, RAID 6, OK)
    physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:5 (port 1I:box 1:bay 5, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:6 (port 1I:box 1:bay 6, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:7 (port 1I:box 1:bay 7, SAS HDD, 6 TB, OK)
    physicaldrive 1I:1:8 (port 1I:box 1:bay 8, SAS HDD, 6 TB, OK)
    physicaldrive 2I:2:1 (port 2I:box 2:bay 1, SAS HDD, 6 TB, OK)
    physicaldrive 2I:2:3 (port 2I:box 2:bay 3, SAS HDD, 6 TB, OK)
    physicaldrive 2I:2:4 (port 2I:box 2:bay 4, SAS HDD, 6 TB, OK)
  Unassigned

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[Linux]sudo 명령어 수행 시 sudo: sorry, you must have a tty to run do Error가 발생할 때 해결 방안

1. 현상

특정 유저의 crontab이나 zabbix 계정으로 실행되는 zabbix agent 에서 root 권한의 명령어를 수행하고 싶다면 sudo를 사용하면 된다.

문제는 sudo 관련하여 /etc/sudoers에 해당 계정의 권한을 설정했음에도, 아래와 같은 로그를 남기며 명령어 수행을 실패하는 경우가 있다.

sudo: sorry, you must have a tty to run sudo

 

2. 원인

해당 원인을 분석한 결과 /etc/sudoers 파일 내 Defaults requiretty 값이 설정되어 위와 같은 에러가 발생했다. Defaults requiretty 이 설정되면 cron 이나 agent 내부에서 sudo 명령어 실행이 불가능하며, 실제 tty(teletyperwriter, Linux 콘솔 or 터미널) 를 통해 접속된 상태에서만 sudo 명령어 실행이 가능하다.

[man page 내 requiretty 관련 guide]

requiretty 

If set, sudo will only run when the user is logged in to a real tty. When this flag is set, sudo can only be run from a login session and not via other means such as cron(8) or cgi-bin scripts. This flag is off by default.

 

3. 해결방안

visudo 또는 /etc/sudoers 파일을 vi 편집기로 Open 한 후

Defaults    requiretty 구문을 주석(#) 처리하면 된다.

 

 

 

 

 

 

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[javascript ] javascript 로 form이나 element 값 얻어오거나 설정하기

javascript 코드를 통해 html 페이지에서 form 및 기타 element의 객체를 얻어오는 것이 가능하다.

객체를 얻은 후에는 해당 값을 얻어오거나 자유롭게 값을 수정할 수 있다.

얻고자하는 값이 form 형식이라면 form으로 접근하여 얻을 수 있다. 

 

document 활용

  • document.forms["<form이름>"].elements["<element이름>"]

    ex) document.forms["frm"].elements["name"];

 

getElementById, getElementsByName 활용

원하는 객체의 Id나 Name을 알고 있다면 아래 함수를 통해 바로 객체를 얻어올 수 있다.

  • document.getElementById("<#id>");
  • document.getElementsByName("<#name>");

객체를 얻어온 후에는 javascript reference를 참고하여 원하는 값을 출력하거나 설정하면 된다. 

http://www.w3schools.com/jsref/dom_obj_all.asp

text 타입의 input객체를 얻어왔을 경우 아래1 property를 활용하면 된다.

input text 내의 값은 value 항목을 활용한다.

 

활용 예제 : FootLock 제품 페이지 내 객체 얻기

 

  • FootLocker 사이트 내 객체 얻기


 

 

Input Text Object Properties


PropertyDescription
autocompleteSets or returns the value of the autocomplete attribute of a text field
autofocusSets or returns whether a text field should automatically get focus when the page loads
defaultValueSets or returns the default value of a text field
disabledSets or returns whether the text field is disabled, or not
formReturns a reference to the form that contains the text field
listReturns a reference to the datalist that contains the text field
maxLengthSets or returns the value of the maxlength attribute of a text field
nameSets or returns the value of the name attribute of a text field
patternSets or returns the value of the pattern attribute of a text field
placeholderSets or returns the value of the placeholder attribute of a text field
readOnlySets or returns whether a text field is read-only, or not
requiredSets or returns whether the text field must be filled out before submitting a form
sizeSets or returns the value of the size attribute of a text field
typeReturns which type of form element a text field is
valueSets or returns the value of the value attribute of the text field

 


1 Input Text Object Properties


다른 카테고리의 글 목록

Javascript 카테고리의 포스트를 톺아봅니다

[python] python 에서 명령어 매개변수 가져오기 sys.argv

python 에서는 sys.argv[] 를 통해 명령어 실행 시 매개변수 값을 얻어올 수 있다.

0번째 매개변수는 실행파일명이다. 

  • python argv_test.py red blue 실행결과

❯ python argv_test.py red argv_test.py red

 

매개변수의 개수를 len(sys.argv) 함수를 통해 얻어올 수 있다. 

 

  • 매개변수 개수 확인 실행결과(실행 파일명이 포함되기 때문에 +1 해야 한다.)

❯ python argv_test.py 1 2 3 4 5

❯ python argv_test.py 1 2 3 4 5 6 7

❯ python argv_test.py 1 2 3 4 5 6 7 8 9 10

 

 

 

다른 카테고리의 글 목록

Python 카테고리의 포스트를 톺아봅니다

[python] 파이썬에서 time, strftime 함수를 사용하여 날짜와 시간 포맷에 맞춰 가져오기

python 코드 내에서 일자 및 시간을 형식을 표현하고 싶다면 strftime 함수를 사용하면 된다.

strftime 함수는 원하는 포맷에 맞춰 출력 포맷을 설정할 수 있다. 

 

현재 시각 정보는 localtime 함수를 통해 얻을 수 있다.

 

localtime, strftime 모두 time 패키지를 통해서 import 하면 된다.

 

localtime() 함수 실행 시 아래와 같은 시간정보를 확인할 수 있다. 

 

localtime() 함수로 얻은 시간 값을 strftime 함수를 통해 원하는 포맷으로 표현 가능하다. 

 

strftime 관련 포맷은 아래와 같다. 

포맷설명결과 값(2018 년 07월 07일 13시 기준)
%y연도를 축약하여 표시>>> strftime("%y", localtime())
'18'
%Y연도를 축약하지 않고 표시>>> strftime("%Y", localtime())
'2018'
%b축약된 월 이름>>> strftime("%b", localtime())
'Jul'
%B축약되지 않은 월이름>>> strftime("%B", localtime())
'July'
%m숫자로 표현한 월>>> strftime("%m", localtime())
'07'
%d>>> strftime("%m", localtime())
'07'
%H24시를 기준으로 한 시>>> strftime("%H", localtime())
'13'
%I12시를 기준으로 한 시>>> strftime("%I", localtime())
'01'
%M>>> strftime("%M", localtime())
'40'
%S>>> strftime("%S", localtime())
'34'
%p오전(AM)/오후(PM)>>> strftime("%p", localtime())
'PM'
%a축약된 요일 이름>>> strftime("%a", localtime())
'Sat'
%A축약되지 않은 요일 이름>>> strftime("%A", localtime())
'Saturday'
%w요일을 숫자료 표시
일~토 = 0~6
>>> strftime("%w", localtime())
'6'
%j1월 1일부터 누적된 날짜(001~366)>>> strftime("%j", localtime())
'188'


다른 카테고리의 글 목록

Python 카테고리의 포스트를 톺아봅니다


[Linux] CentOS7에서 2TB 이상 사이즈의 디스크 GTP 파티션 생성 및 포맷 방법

우리가 일반적으로 사용하는 Linux 디스크는 MBR(Master Boot Record) 방식의 파티션을 사용한다.

MBR의 단점은 파티션 최대 용량 제한으로 한 개의 파티션에 최대 2TB 밖에 사용이 불가능하다.

추가로, MBR의 경우 생성 가능한 파티션의 개수가 주 파티션 4개이며,

일반적으로 주 파티션 3개 + 확장 파티션 1개를 사용한다. (확장 파티션의 경우 부팅 파티션으로 지정이 불가능)


이러한 단점에도 불구하고 상용 환경에서 큰 영향은 없었기 때문에 MBR이 지속 사용되었다.

하지만, 최근 빅데이터 저장 서버의 증가와 디스크 기술 발전에 따른 대용량 디스크 대중화로 2TB 이상의 파티션 생성이 필요한 환경이 되었다.

GPT(GUID Partition Table)은 최대 용량 8ZB을 지원하며 최대 파티션 128개를 지원한다.

추가로 GPT 파티션으로 부팅하기 위해서는 BIOS가 아닌 UEFI 부팅 설정이 필요하다.

GPT 파티션 생성

GPT 파티션을 생성하기 위해서는 일반적으로 사용하는 fdisk 명령어가 아닌

parted라는 명령어를 사용해야 한다.

[root@server ~]# parted /dev/sdb 

GNU Parted 3.1

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted)

파티션 생성은 parted 커맨드 내 mkpart 명령어를 통해 생성 가능하다.

ex) mkpart primary 1 8002GB 

mkpart PART-TYPE [FS-TYPE] START END     make a partition 

생성된 GPT 파티션을 print 명령어를 통해 확인 가능하다.

(parted) print 

Model: HPE LOGICAL VOLUME (scsi)

Disk /dev/sdb: 8002GB

Sector size (logical/physical): 512B/4096B

Partition Table: gpt

Disk Flags:
Number Start   End     Size   File system Name Flags

1     1049kB 8002GB 8002GB  

이후에는 일반 MBR 파티션과 같이 mkfs로 xfs 타입으로 포맷 후 /etc/fstab에 mount 하여 사용하면 된다.

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[Linux] CentOS 7, rhel7 hostname 호스트네임 변경하기

CentOS 6버전 및 rhel6 버전에서는 /etc/sysconfig/network 파일 내 hostname이 변수로 저장되어 있었다.

7버전부터는 /etc/hostname 파일 내 hostname이 저장된다. 

권장되는 hostname 변경 방법은 hostnamectl 명령어를 통한 변경이다.

hostnamectl 사용법은 아래와 같다. 

ServerAfter는 변경될 호스트 네임을 임의로 지정한 값이다. 

변경된 호스트네임을 확인하려면 터미널 종료 후 재접속하면 된다. 

 

추가로, 위와 같이 명령어 실행 시 대문자가 적용되지 않고 ServerAfter 가 serverafterf로 모두 소문자로 변경되어 저장된다.

호스트네임에 대문자 적용을 원할 시 --static 옵션을 한 번 더 지정해준다. 

재접속 시 대문자가 적용되어 있다.

 

 

 



다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다

[Linux] CentOS SFTP 서버 설정하기 - chroot로 디렉토리 제한 및 SSH와 포트 분리까지

SFTP는 보안 프로토콜을 사용하는 FTP서버이며, 원격 터미널 접속 프로토콜인 SSH와 동일하게 SSH 데몬하에서 동작한다.

여기서는

1) SFTP 접속을 위한 User 생성 및 접속 테스트

2) SSH 데몬 내 SFTP 서버용 포트 추가

3) SSH(22) 과 SFTP 서버용 포트 분리

4) Chroot를 활용한 홈 디렉토리 이동 제한

를 정리할 예정이다.

 

해당 문서를 정리에는 아래 Zetawiki 사이트가 큰 도움이 되었다.

https://zetawiki.com/wiki/SFTP%EB%A7%8C_%EB%90%98%EB%8A%94_%EA%B3%84%EC%A0%95_%EC%83%9D%EC%84%B1

 

1) SFTP 접속을 위한 User 생성 및 접속 테스트

 

  1. User생성

    SFTP용 User 생성 시 shell 관련 option에서 /sbin/nologin 을 설정하여

    쉘 권한은 제외하고 SFTP 및 FTP 접속 권한만 제공한다. 

    여기서 user는 test 라는 이름으로 진행한다.

    이후 passwd 명령어로 해당 유저에 패스워드를 할당한다.

     

  2. SSH 및 SFTP 접속 테스트

    1. (SSH)앞단에 Shell 관련 설정을 /sbin/nologin으로 지정했기 때문에 SSH 접속 시 아래와 같은 메시지가 발생한다.

    2. (SFTP) sftp 명령어(sftp test@localhost)를 통해 아래와 같이 SFTP 접속이 가능하다.

      현재는 chroot 설정이 되어 있지 않아, test 계정임에도 불구하고 외부 디렉토리 이동이 자유롭게 가능하다.

      이는 보안정책상 지양해야하며 chroot를 통해 디렉토리 이동에 제한 설정이 필요하다.

       

2) SSH 데몬 내 SFTP 서버용 포트 추가

SFTP 서버는 SSH 데몬을 통해 내 실행되기 때문에 Default로 SSH와 동일하게 22번 포트를 사용하여 서비스 된다.

SFTP 포트는 /etc/ssh/sshd_config 설정 변경을 통해 분리 가능하다.

 

여기서는 Server2(192.168.124.200)를 Client로 7777라는 Port를 SFTP로 사용예정이다.

  1. sshd_config 설정

    SFTP 서버를 위한 추가 포트 설정은 sshd_config 내 Port 값 추가를 통해 지원 가능하다.

Port 

Specifies the port number that sshd(8) listens on. The default is 22. Multiple options of this type are permitted.

위와 같이 설정 후 systemctl restart sshd 로 데몬을 재기동하면 아래와 같이 7777 포트로 SSH 접속이 가능하다.

 

3) SSH(22) 과 SFTP 서버용 포트 분리

현재 SSH 및 SFTP 데몬은 22 및 7777을 통해 제공되고 있다.

외부 클라이언트에 SFTP서버를 제공하며 방화벽 정책을 허용해줄 시 7777 그대로를 Open하면 해당 포트를 통한 외부의 터미널 접속이 가능해진다.

보안상의 위험을 사전 방지하고자 7777 포트는 SFTP 접속만 가능하도록 설정할 수 있다.

sshd_config 내 Match 룰설정을 통해 SFTP전용 포트 설정이 가능하며

SFTP 클라이언트 유저들이 서버를 마음대로 이동하지 못하도록 홈디렉토리 제어가 가능하다.

 

  1. SFTP 전용 데몬 포트 설정

    Match rule 내 ForceCommand 설정을 통해 가능하다.

    ForceCommand Specifying a command of internal-sftp will force the use of an in-process SFTP server that requires no support files when used with ChrootDirectory. The default is none.

     

    위와 같이 설정 시 SSH를 통해 접속을 시도하면 This service allows sftp connections only. 메시지가 출력되며 접속이 실패한다.

4) Chroot를 활용한 홈 디렉토리 이동 제한

위에서 봤던것과 같이 test 계정을 통해 sftp 접속 시 root나 외부 계정의 파일 현황을 그대로 조회할 수 있다.

SFTP 서버 운용상 보안의 Risk가 있기 때문에 test 계정이 SFTP 접속 시에는 test 홈 디렉토리 이외에는 이동하지 못하게 제어가 필요하다.

홈 디렉토리 설정은 sshd_config 내 Match의 chroot를 통해 설정 가능하다.

/etc/ssh/sshd_config 파일 내 아래와 같이 설정 시

/home/test 디렉토리는 SFTP를 접속 시 / 디렉토리와 동일 계위가 된다.

위와 같이 설정 후 데몬 재기동 시 

-> systemctl restart sshd

외부에서 SFTP 접속을 시도하면 Connection closed가 발생한다.

이를 해결하기 위해서는 SFTP의 홈 디렉토리로 설정한 /home/test 폴더의 소유권자를

root로 변경이 필요하다.

-> chown root:root /home/test

추가로 test 계정에서 접속 시 디렉토리 조회 권한을 갖기 위해 755 권한 설정을 수행한다.

 

변경 후에는 접속이 가능하다.

[root@server2 ~]# sftp -P 7777 192.168.124.100 root@192.168.124.100's password: Connected to 192.168.124.100. sftp>

 

이후 SFTP 업로드 및 다운로드로 운용 예정인 폴더 대상으로

test 그룹 설정 후 chmod 775로 쓰기 권한을 설정하여 운용 하면된다.

다른 카테고리의 글 목록

Linux 카테고리의 포스트를 톺아봅니다