파일, 디렉토리 권한(퍼미션)을 644 666 등 숫자로 보기

1. 리눅스에서 파일, 디렉토리의 권한을 알기 위해서는 rwx 에 대해 알아야 합니다.

 

( 파일 권한 숫자 )

파일 권한을 구분하는 경우 크게 3가지로 분류할 수 있습니다.

읽기(r) Reading 4
쓰기(w) Writing 2
실행(x) Executing 1

이 숫자들은 8진수로 바꿔서 해석을 할 수 있다.

 

2. 그런데 rw, rwx 등 으로 읽지 않고 그냥  숫자로 보고 싶습니다.

간단하게 아래와 같이 입력합니다.

# ls -al /etc/passwd | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
644 -rw-r--r--. 1 root root 3850 Aug 25 10:02 /etc/passwd

#ls -al /etc/group | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
644 -rw-r--r--. 1 root root 1616 Aug 25 10:02 /etc/group
 
# ls -al /etc/shadow | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
----------. 1 root root 7811 Aug 31 10:31 /etc/shadow

 

3. 디렉토리도 동일하게 하면 됩니다.

# ls -al /var/log | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
total 904764
755 drwxr-xr-x. 12 root   root        4096 Aug 27 17:11 .
755 drwxr-xr-x. 20 root   root        4096 Feb 17  2023 ..
755 drwxr-xr-x.  2 root   root        4096 Feb 17  2023 anaconda
700 drwx------.  2 root   root          99 Aug 31 12:15 audit
600 -rw-------.  1 root   root   238166823 Aug 31 13:55 boot.log
600 -rw-------.  1 root   utmp      134400 Aug 31 13:35 btmp
600 -rw-------.  1 root   utmp      152832 Jul 31 18:07 btmp-20230801
750 drwxr-x---.  2 chrony chrony         6 Nov 15  2022 chrony
600 -rw-------.  1 root   root       34796 Aug 31 13:01 cron
600 -rw-------.  1 root   root       55786 Aug  6 03:23 cron-20230806
600 -rw-------.  1 root   root       55722 Aug 13 03:10 cron-20230813
600 -rw-------.  1 root   root       56049 Aug 20 03:30 cron-20230820
600 -rw-------.  1 root   root       55431 Aug 27 03:01 cron-20230827
644 -rw-r--r--.  1 root   root      523300 Aug 31 12:52 dnf.librepo.log
644 -rw-r--r--.  1 root   root     1048456 Jul 10 17:20 dnf.librepo.log.1
644 -rw-r--r--.  1 root   root     1048393 May  2 15:08 dnf.librepo.log.2
644 -rw-r--r--.  1 root   root     1048487 Apr 11 15:01 dnf.librepo.log.3
644 -rw-r--r--.  1 root   root     1048374 Mar 21 23:02 dnf.librepo.log.4
644 -rw-r--r--.  1 root   root      143795 Aug 31 12:52 dnf.log
644 -rw-r--r--.  1 root   root     1048577 Aug 27 17:11 dnf.log.1
644 -rw-r--r--.  1 root   root     1048549 Jul 29 21:22 dnf.log.2
644 -rw-r--r--.  1 root   root     1048539 Jun 30 20:27 dnf.log.3
644 -rw-r--r--.  1 root   root     1048235 Jun  2 03:53 dnf.log.4
644 -rw-r--r--.  1 root   root      199432 Aug 31 12:52 dnf.rpm.log
640 -rw-r-----.  1 root   root         558 Aug 11 13:30 firewalld
640 -rw-r-----.  1 root   root        3112 May  3 07:34 firewalld-20230503
644 -rw-r--r--.  1 root   root        8415 Jun 18 00:46 kdump.log
664 -rw-rw-r--.  1 root   utmp      314192 Aug 31 13:43 lastlog
...