Linux - 기본 명령어와 사용자 관리

11900 단어 linuxlinux

기본 명령어

ls

해당 디렉토리에 있는 파일의 목록을 나열(LiSt)

ls                      # 현재 디렉토리의 파일 목록
ls /etc/sysconfig       # /etc/sysconfig 디렉토리의 목록
ls -a                   # 현재 디렉토리의 목록(숨김 파일 포함)
ls -l                   # 현재 디렉토리의 목록을 자세히 보여줌
ls *.cfg                # 확장자가 cfg인 목록
ls -l /etc/sysconfig/a* # 해당 디렉토리에 있는 목록 중 앞 글자가 'a'
                        # 인 것의 목록을 자세히 보여줌

cd

디렉토리를 이동하는 명령(Change Directory)

cd                # 현재 사용자의 홈 디렉토리로 이동
cd ~centos        # centos 사용자의 홈 디렉토리로 이동
cd ..             # 바로 상위의 디렉토리로 이동
cd /etc/sysconfig # 해당 디렉토리로 이동

pwd

현재 디렉토리의 전체 경로를 화면에 표시(Print Working Directory)

pwd

rm

파일이나 디렉토리를 삭제(ReMove)

파일이나 디렉토리를 삭제할 권한이 있어야 함

rm abc.txt      # 해당 파일을 삭제
rm -i abc.txt   # 삭제 시 정말 삭제할지 확인하는 메시지가 나옴
rm -f abc.txt   # 삭제 시 확인하지 않고 바로 삭제(force)
rm -r abc       # 해당 디렉토리를 삭제(recursive)
rm -rf abc      # r 옵션과 f옵션을 합친 것으로, abc 디렉토리와 그 아래에
                # 있는 하위 디렉토리를 강제로 전부 삭제
⚠️ root 사용자는 모든 명령을 실행할 수 있는 권한이 있으므로 `rm` 과 같은 명령어를 사용할 때는 주의해야한다. 특히 리눅스에서는 Windows의 휴지통 개념을 잘 사용하지 않으므로 삭제한 파일이나 폴더를 복구하기가 상당히 어렵다.

cp

파일이나 디렉토리를 복사(CoPy)

새로 복사한 파일은 복사한 사용자의 소유가 되므로 명령어를 실행하는 사용자는 해당 파일의 읽기 권한이 필요

cp abc.txt cba.txt  # abc.txt를 cba.txt라는 이름으로 바꿔서 복사
cp -r abc cba       # 디렉토리 복사

touch

크기가 0인 새 파일을 생성하거나, 이미 파일이 존재한다면 파일의 최종 수정 시간을 변경

touch abc.txt

mv

파일이나 디렉토리의 이름을 변경하거나 다른 디렉토리로 옮김(MoVe)

mv abc.txt /etc/sysconfig/  # abc.txt를 해당 디렉토리로 이동
mv aaa bbb ccc ddd          # aaa, bbb, ccc 파일을 /ddd 디렉토리로 이동
mv abc.txt www.txt          # abc.txt의 이름을 www.txt로 변경해서 이동

mkdir

새로운 디렉토리 생성(MaKe DIRectory)

생성된 디렉토리는 명령어를 실행한 사용자의 소유가 됨

mkdir abc          # 현재 디렉토리 아래에 /abc/라는 디렉토리 생성
mkdir -p /def/fgh  # /def/fgh 디렉토리를 생성하는데, 만약 /fgh의 
                   # 부모 디렉토리가 없다면 자동으로 생성(parents)

rmdir

디렉토리 삭제(ReMove DIRectory)

해당 디렉토리의 삭제 권한이 있어야 하며, 디렉토리는 비어있어야 함

파일이 들어 있는 디렉토리를 삭제하려면 rm -r을 실행

rmdir abc

cat

파일의 내용을 화면에 표시(conCATenate)

cat a.txt b.txt  # a.txt와 b.txt를 연결해서 파일의 내용을 화면에 보여줌

head, tail

텍스트 형식으로 작성된 파일의 앞 10행 또는 마지막 10행만 화면에 출력

head anaconda-ks.cfg     # 해당 파일의 앞 10행을 화면에 출력
head -3 anaconda-ks.cfg  # 3행만 화면에 출력
tail -5 anaconda-ks.cfg  # 마지막 5행만 화면에 출력

more

텍스트 형식으로 작성된 파일을 페이지 단위로 화면에 출력

space를 누르면 다음 페이지로 이동하며, B를 누르면 앞 페이지로 이동, Q를 누르면 종료

more anaconda-ks.cfg
more +100 anaconda-ks.cfg # 100행부터 출력

less

more 명령어와 용도가 비슷하지만 기능이 더 확장

화살표 키나 Page Up, Page Down도 사용 가능

less anaconda-ks.cfg
less +100 anaconda-ks.cfg # 100행부터 출력

file

해당 파일이 어떤 종류의 파일인지를 표시

file anaconda-ks.cfg  # 텍스트 파일이므로 아스키 파일(ASCII)로 표시
file /usr/bin/gzip    # gzip은 실행 파일이므로 Executable 파일로 표시

clear

현재 사용 중인 터미널 화면을 깨끗하게 지워줌

사용자 관리

사용자와 그룹

리눅스는 다중 사용자 시스템(Multi-User System)이다. 즉, 1대의 리눅스에 사용자 여러 명이 동시에 접속해서 사용할 수 있다. 리눅스를 설치하면 기본적으로 root라는 이름을 가진 super user가 있고, 이 root 사용자에게는 시스템의 모든 작업을 실행할 수 있는 권한이 있다. 또한 시스템에 접속할 수 있는 사용자를 생성할 수 있는 권한도 있다.

사용자

gedit이나 vi Editor로 /etc/passwd 파일을 열면 시스템에 존재하는 사용자를 확인할 수 있다.

vi /etc/passwd

# Output Example
centos:x:1000:1000:centos:/home/centos:/bin/bash

위 커맨드를 실행하면 아래와 같은 형식으로 사용자 정보가 나온다.

💻 **사용자이름:암호:사용자ID:사용자가소속된그룹ID:전체이름:홈디렉토리:기본셸**

사용자 이름은 centos고, 암호가 x로 표시되어 있는데 이는 etc/shadow 파일에 비밀번호가 지정되어 있다는 의미이다. centos의 사용자 id는 1000번이고, centos가 속한 그룹의 id는 1000번이다. 전체 이름도 centos로 사용하며, centos 사용자의 홈 디렉터리는 /home/centos이고, 로그인 시 제공되는 셸은 /bin/bash이다.

그룹

gedit 이나 vi Editor로 /etc/group 파일을 열면 시스템에 존재하는 그룹을 확인할 수 있다.

vi /etc/group

# Output Example
centos:x:1000:centos
💻 **그룹 이름:비밀번호:그룹ID:그룹에 속한 사용자 이름**

마지막 '그룹에 속한 사용자 이름'은 참조로 사용된다. 즉, 해당 부분에 아무 것도 써있지 않다고 해서 그룹에 소속된 사용자가 없다는 뜻은 아니다.

명령어

사용자 및 그룹과 관련된 명령어로는 다음과 같은 것들이 있다.

useradd 또는 adduser

새로운 사용자를 추가한다. 이 명령어를 실행하면 /etc/passwd, /etc/shadow, /etc/group 파일에 새로운 행이 추가된다.

useradd newuser             # newuser라는 사용자 생성
useradd -u 1111 newuser     # 사용자ID를 1111로 지정
useradd -g mygroup newuser  # mygroup 그룹에 newuser사용자를 포함시킴 
                            # (mygroup 그룹을 먼저 만들어놓아야 함)
useradd -d newhome newuser  # newuser 사용자를 생성하면서  
                            #홈 디렉터리를 /newhome으로 지정
useradd -s /bin/csh newuser # 기본 셸을 /bin/csh로 지정

passwd

사용자의 비밀번호를 지정하거나 변경한다.

passwd newuser # newuser 사용자의 비밀번호를 지정(또는 변경)

usermod

사용자의 속성을 변경한다. 옵션은 useradd와 동일하다.

usermod -g root newuser # newuser 사용자의 그룹을 root 그룹으로 변경

userdel

사용자를 삭제한다.

userdel newuser    # newuser 사용자를 삭제
userdel -r newuser # newuser 사용자를 삭제하면서 홈 디렉터리까지 삭제

chage

사용자의 암호를 주기적으로 변경하도록 설정한다.

chage -l newuser            # newuser 사용자에 설정된 사항을 확인
chage -m 2 newuser          # newuser 사용자에 설정한 암호를 사용해야 
                            # 하는 최소 일자
chage -M 30 newuser         # newuser 사용자에 설정한 암호를 사용할 수 
                            # 있는 최대 일자
chage -E 2019/12/12 newuser # newuser 사용자에 설정한 암호 만료되는 날짜
chage -W 10 newuser         # newuser 사용자에 설정한 암호가 만료되기 
                            # 전에 경고하는 기간. 
                            # 지정하지 않았을 경우 기본 값은 7일

group

사용자가 소속된 그룹을 보여준다.

groups         # 현재 사용자가 소속된 그룹을 보여줌
groups newuser # newuser가 소속된 그룹을 보여줌

groupadd

새로운 그룹을 생성한다.

groupadd newgroup         # newgroup을 생성
groupadd -g 2222 newgroup # newgroup을 생성하면서 그룹 ID를 222로 지정

groupmod

그룹의 속성을 변경한다.

groupmod -n new group my group # newgroup 그룹의 이름을 mygroup으로 변경

groupdel

그룹을 삭제한다.

groupdel newgroup # newgroup 그룹을 삭제(단, 해당 그룹을 주요 그룹으로 
                  # 지정한 사용자가 없어야 함)

gpasswd

그룹의 암호를 설정하거나 그룹 관리를 수행한다.

좋은 웹페이지 즐겨찾기