강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

일반 그룹파일 정책에서 shadow그룹파일 정책으로 변환하는 grpconv와 grpunconv 사용법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

일반 그룹파일 정책에서 shadow그룹파일 정책으로 변환하는 grpconv와 grpunconv 사용법




 

 

grpconv명령어는 /etc/group파일로부터 /etc/gshadow파일을 생성하는 즉, 일반 group파일을 shadow그룹파일로 컨버전하는 명령어입니다.

 

 

 

 이해하기 쉽도록 하려면 shadow패스워드정책으로 변환하는 pwconv를 생각하면 이해하기 쉽습니다.

 

 

 

 , pwconv명령어와 grpconv명령어는 매우 유사한 명령어입니다.

 

 

 

 이 두 명령어는 모두 패스워드파일과 그룹파일의 포맷정책을 shadow정책으로 변환하는 것이니까요?

 

 

 

 

명령어위치 : /usr/sbin/grpconv

             /usr/sbin/grpunconv

 

특별한 작업을 하지 않았다면 현재 여러분의 시스템은 대부분 shadow정책이 적용된 shadow그룹파일로 존재할 것입니다.

 

 

 

 다음을 보십시오.

 

[root@su250 ~]# ls -l /etc/group

-rw-r--r-- 1 root root 854 2009-01-0820:50 /etc/group

[root@su250 ~]#

[root@su250 ~]# ls -l /etc/gshadow

-r-------- 1 root root 706 2009-01-0820:50 /etc/gshadow

[root@su250 ~]#

 

 

 

 

위의 2파일이 존재한다면 그것은 shadow정책이 적용되어 있는 것입니다.

 

 

 

 그리고 위의 두 파일의 퍼미션을 눈여겨 보기 바랍니다.

 

 

 

 /etc/group파일의 퍼미션은 644이지만, /etc/gshadow파일의 퍼미션은 400입니다.

 

 

 

 , /etc/gshadow파일에는 뭔가 중요한 정보가 저장되어 있기 때문에 root외에 다른 사용자들이 보지 못하도록 퍼미션이 설정되어 있습니다.

 

 

 

 (이어서 설명하겠지만, /etc/gshadow파일에는 그룹의 패스워드가 암호화되어 저장되어 있습니다.

 

 

 

) 여기서 우리는 이 두 파일의 저장내용이 꽤 다르다는 것을 알아야 합니다.

 

 

 

 이 두 파일의 저장내용이 어떻게 다른가를 확인하기 위하여 다음과 같이 cat명령어로 파일의 내용을 확인하였습니다.

 

 

 

 

 

먼저 /etc/group파일의 내용입니다.

 

 

 

 확인 하십시오.

 

 

 

 

[root@su250 ~]# cat /etc/group

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

adm:x:4:root,adm,daemon

tty:x:5:

disk:x:6:root

lp:x:7:daemon,lp

mem:x:8:

kmem:x:9:

wheel:x:10:root

mail:x:12:mail

uucp:x:14:uucp

man:x:15:

sshd:x:74:

webalizer:x:67:

torrent:x:488:

haldaemon:x:68:

wbpriv:x:88:squid

squid:x:23:

gdm:x:42:

command:x:503:

sspark:x:504:

bible:x:505:

sulinux:x:506:

named:x:25:

[root@su250 ~]#

 

 

 

 

 

보시는 바와 같이 위의 /etc/group파일에는 그룹패스워드가 보이지 않습니다.

 

 

 

 , 그룹패스워드 자리에 모두 x표시를 해두었습니다.

 

 

 

 그리고 다음은 /etc/gshadow파일의 내용입니다.

 

 

 

 확인 하십시오.

 

 

 

 

[root@su250 ~]# cat /etc/gshadow

root:$6$JFFv/CWx$7PSvyoprm7IjRt3S1Ta.V8.f8YCRaQG4ZON1QU09kcHOdOetVJGYRH3rR/::root

bin:::root,bin,daemon

daemon:::root,bin,daemon

sys:::root,bin,adm

adm:::root,adm,daemon

tty:::

disk:::root

lp:::daemon,lp

mem:::

kmem:::

wheel:::root

mail:::mail

uucp:::uucp

man:::

sshd:x::

webalizer:x::

torrent:x::

haldaemon:x::

wbpriv:x::squid

squid:x::

gdm:x::

command:$6$1iAD7/LTBNK2$DtOL7U4kK6aMsWEo/bNANz5FSPVA/efC5JD6lHJkMV25gdq3DB20VBA.::

sspark:$6$OZ4yYItfHB2vb$Q5WKXqUFAJ1fG2CFAvLZgC.LZ0vD9LHY.N/b8.WBq3/rQ4tDHpjX8oo/::

bible:$6$4zA0LLTMaZ3y8oC/$V5.1eUV4f4HCv0mDAM2amT/yvPNgz/uqtkUvITZsuLFRQMfKZNV9B1::

sulinux:$6$TF6JC/elj2Y/$fTNjbZeCIeN8cupFtzz5Aeca59FjsbC4xwlaWUuzVpwfVK9rxw/7IPz.::

named:!::

[root@su250 ~]#

 

 

 

 

위의 파일에는 x자리에 그룹패스워드가 암호화되어 저장되어 있습니다.

 

 

 

 , 앞에서 이 두 파일의 퍼미션을 확인하셨고, 이번에는 이 두 파일의 저장내용이 다르다는 것을 확인하였습니다.

 

 

 

 , /etc/gshadow파일에는 그룹의 패스워드가 저장되어 있습니다.

 

 

 

 명심해 주세요.

 

그렇다면 우리가 이번 장에서 배우고 있는 grpconv의 역할은 명백해 졌습니다.

 

 

 

 , grpconv를 실행하면 /etc/group파일로만 보관해 왔던 일반 그룹파일 정책을 shadow그룹파일정책으로 변경해 준다는 것입니다.

 

 

 

 위의 예에서 /etc/gshadow파일이 존재한다는 것 만으로도 이미 shadow그룹패스워드 정책이 적용되어 있다는 것을 알려주고 있습니다.

 

 

 

 

 

 

 

shadow그룹파일 정책에서 일반 그룹파일 정책으로 되돌리는 grpunconv

 

 

 

 

그렇다면 이렇게 적용된 shadow그룹파일정책을 다시 일반 그룹파일정책으로 변경할 때에는 어떻게 할까요? 매우 간단합니다.

 

 

 

 쉽게 쉘상태에서 grpunconv를 실행하면 됩니다.

 

 

 

 , grpconv명령어와 grpunconv명령어는 서로 상반되는 명령어입니다.

 

 

 

 다음은 grpunconv를 실행하여 그룹파일정책을 shadow정책에서 일반정책으로 변경한 예입니다.

 

 

 

 

 

[root@su250 ~]# grpunconv

[root@su250 ~]#

[root@su250 ~]# ls -l /etc/group

-rw-r--r-- 1 root root 1340 2009-01-1616:26 /etc/group

[root@su250 ~]#

[root@su250 ~]# ls -l /etc/gshadow

ls: cannot access /etc/gshadow: 그런 파일이나 디렉토리가 없습니다

[root@su250 ~]#

 

 

 

 

, 위와 같이 grpunconv를 실행하면 일반그룹파일 정책으로 돌아옵니다.

 

 

 

 그런 다음 ls로 앞에서 확인했던 2개의 파일을 확인한 결과 /etc/gshadow파일은 존재하지 않는다는 것을 확인 하였습니다.

 

 

 

 당연한 얘기입니다.

 

 

 

 일반 그룹파일정책에서는 /etc/gshadow파일이 존재하지 않으니까요.

 

, grpunconv명령어는 grpconv와는 반대로 이 명령의 실행으로 /etc/group파일과 /etc/gshadow파일로부터 /etc/group파일을 새롭게 생성한 후에 /etc/gshadow파일을 삭제합니다.

 

 

 

 이제 다음을 보십시오.

 

 

 

[root@su250 ~]# cat /etc/group

root:$6$JFFv/CWx$7PSvyoprm7IjRt3S1Ta.V8.f8YCRaQG4ZON1QU09kcHOdBgMeVJGYRH3rR/:0:root

bin::1:root,bin,daemon

daemon::2:root,bin,daemon

sys::3:root,bin,adm

adm::4:root,adm,daemon

tty::5:

disk::6:root

lp::7:daemon,lp

sshd:x:74:

webalizer:x:67:

torrent:x:488:

haldaemon:x:68:

wbpriv:x:88:squid

squid:x:23:

gdm:x:42:

command:$6$1iAD7/LTBNK2$DtOL7U4kK6aMsWEo/bNANz5FSPVA/efCasdfaas5JD5gdyq3DB20VBA.:503:

sspark:$6$OZ4yYItfHB2vb$Q5WKXqUFAJ1fG2CFAvLZgC.LZ0vD9LHY.N/ptwQQlqrky4tDHpjX8oo/:504:

bible:$6$4zA0LLTMaZ3y8oC/$V5.1eUV4f4HCv0mDAM2amT/yvPNgz/uqtkUvRXhbvsp/QMfKZNV9B1:505:

sulinux:$6$TF6JC/elj2Y/$fTNjbZeCIeN8cupFtzz5Aeca59FjsbC4xwlaWUuviQEyIr9rxw/7IPz.:506:

named:!:25:

[root@su250 ~]#

[root@su250 ~]# cat /etc/gshadow

cat: /etc/gshadow: 그런 파일이나 디렉토리가 없습니다

[root@su250 ~]#

 

 

 

 

당연한 결과로서 /etc/gshadow파일에 저장되어 있던 암호화된 그룹패스워드정보들이 모두 /etc/group파일에 저장되어 있다는 것을 알 수 있습니다.

 

 

 

 그리고 /etc/gshadow파일은 삭제되어 더 이상 존재하지 않습니다.

 

 

 

 

 

당연한 얘기겠지만 이 상황에서 다시 grpconv명령어를 실행한다면 다시 shadow그룹파일정책으로 돌아가게 되며 /etc/gshadow파일이 생성되게 됩니다.

 

 

 

 참고로 여러분들께서도 잘 아시는 것이지만 일반 사용자가 아닌 그룹의 패스워드를 설정하는 명령어는 gpasswd라는 것 다들 아시죠.



다음은  LockyLinux 에서 위의 예들을 사용해본 예입니다. 
참고로 보시기 바랍니다. 



 

 

[root@RockyLinux01 ~]# ls -l /etc/group

-rw-r--r-- 1 root root 1143  5 12 11:51 /etc/group

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# ls -l /etc/gshadow

---------- 1 root root 926  5 12 11:51 /etc/gshadow

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# grpconv

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

wheel:x:10:sspark

cdrom:x:11:

mail:x:12:

man:x:15:

dialout:x:18:

floppy:x:19:

games:x:20:

tape:x:33:

video:x:39:

ftp:x:50:

lock:x:54:

audio:x:63:

users:x:100:

nobody:x:65534:

pegasus:x:65:

utmp:x:22:

utempter:x:35:

input:x:999:

kvm:x:36:qemu

render:x:998:

systemd-journal:x:190:

systemd-coredump:x:997:

dbus:x:81:

qemu:x:107:

sssd:x:996:

polkitd:x:995:

printadmin:x:994:

ssh_keys:x:993:

rtkit:x:172:

saslauth:x:76:

dnsmasq:x:992:

unbound:x:991:

libstoragemgmt:x:990:

pipewire:x:989:

libvirt:x:988:

tss:x:59:clevis,keylime

cockpit-ws:x:987:

cockpit-wsinstance:x:986:

rpc:x:32:

rpcuser:x:29:

setroubleshoot:x:985:

clevis:x:984:

geoclue:x:983:

flatpak:x:982:

sgx:x:981:

stapusr:x:156:

stapsys:x:157:

stapdev:x:158:

systemd-oom:x:980:

pesign:x:979:

sshd:x:74:

slocate:x:21:

chrony:x:978:

tcpdump:x:72:

sspark:x:1000:

sulinux:x:1001:

apache:x:48:

nginx:x:977:

mysql:x:27:

docker:x:976:

avahi:x:70:

brlapi:x:975:

colord:x:974:

gdm:x:42:

gnome-initial-setup:x:973:

radiusd:x:95:

keylime:x:972:

dirsrv:x:389:

kdcproxy:x:388:

ipaapi:x:387:apache

pcp:x:386:

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/gshadow

root:::

bin:::

daemon:::

sys:::

adm:::

tty:::

disk:::

lp:::

mem:::

kmem:::

wheel:::sspark

cdrom:::

mail:::

man:::

dialout:::

floppy:::

games:::

tape:::

video:::

ftp:::

lock:::

audio:::

users:::

nobody:::

pegasus:!::

utmp:!::

utempter:!::

input:!::

kvm:!::qemu

render:!::

systemd-journal:!::

systemd-coredump:!::

dbus:!::

qemu:!::

sssd:!::

polkitd:!::

printadmin:!::

ssh_keys:!::

rtkit:!::

saslauth:!::

dnsmasq:!::

unbound:!::

libstoragemgmt:!::

pipewire:!::

libvirt:!::

tss:!::clevis,keylime

cockpit-ws:!::

cockpit-wsinstance:!::

rpc:!::

rpcuser:!::

setroubleshoot:!::

clevis:!::

geoclue:!::

flatpak:!::

sgx:!*::

stapusr:!*::

stapsys:!*::

stapdev:!*::

systemd-oom:!*::

pesign:!::

sshd:!::

slocate:!::

chrony:!::

tcpdump:!::

sspark:!::

sulinux:!::

apache:!::

nginx:!::

mysql:!::

docker:!::

avahi:!::

brlapi:!::

colord:!::

gdm:!::

gnome-initial-setup:!::

radiusd:!::

keylime:!::

dirsrv:!::

kdcproxy:!::

ipaapi:!::apache

pcp:!::

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# grpunconv

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/group

root::0:

bin::1:

daemon::2:

sys::3:

adm::4:

tty::5:

disk::6:

lp::7:

mem::8:

kmem::9:

wheel::10:sspark

cdrom::11:

mail::12:

man::15:

dialout::18:

floppy::19:

games::20:

tape::33:

video::39:

ftp::50:

lock::54:

audio::63:

users::100:

nobody::65534:

pegasus:!:65:

utmp:!:22:

utempter:!:35:

input:!:999:

kvm:!:36:qemu

render:!:998:

systemd-journal:!:190:

systemd-coredump:!:997:

dbus:!:81:

qemu:!:107:

sssd:!:996:

polkitd:!:995:

printadmin:!:994:

ssh_keys:!:993:

rtkit:!:172:

saslauth:!:76:

dnsmasq:!:992:

unbound:!:991:

libstoragemgmt:!:990:

pipewire:!:989:

libvirt:!:988:

tss:!:59:clevis,keylime

cockpit-ws:!:987:

cockpit-wsinstance:!:986:

rpc:!:32:

rpcuser:!:29:

setroubleshoot:!:985:

clevis:!:984:

geoclue:!:983:

flatpak:!:982:

sgx:!*:981:

stapusr:!*:156:

stapsys:!*:157:

stapdev:!*:158:

systemd-oom:!*:980:

pesign:!:979:

sshd:!:74:

slocate:!:21:

chrony:!:978:

tcpdump:!:72:

sspark:!:1000:

sulinux:!:1001:

apache:!:48:

nginx:!:977:

mysql:!:27:

docker:!:976:

avahi:!:70:

brlapi:!:975:

colord:!:974:

gdm:!:42:

gnome-initial-setup:!:973:

radiusd:!:95:

keylime:!:972:

dirsrv:!:389:

kdcproxy:!:388:

ipaapi:!:387:apache

pcp:!:386:

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/gshadow

cat: /etc/gshadow: 그런 파일이나 디렉터리가 없습니다

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/group

root::0:

bin::1:

daemon::2:

sys::3:

adm::4:

tty::5:

disk::6:

lp::7:

mem::8:

kmem::9:

wheel::10:sspark

cdrom::11:

mail::12:

man::15:

dialout::18:

floppy::19:

games::20:

tape::33:

video::39:

ftp::50:

lock::54:

audio::63:

users::100:

nobody::65534:

pegasus:!:65:

utmp:!:22:

utempter:!:35:

input:!:999:

kvm:!:36:qemu

render:!:998:

systemd-journal:!:190:

systemd-coredump:!:997:

dbus:!:81:

qemu:!:107:

sssd:!:996:

polkitd:!:995:

printadmin:!:994:

ssh_keys:!:993:

rtkit:!:172:

saslauth:!:76:

dnsmasq:!:992:

unbound:!:991:

libstoragemgmt:!:990:

pipewire:!:989:

libvirt:!:988:

tss:!:59:clevis,keylime

cockpit-ws:!:987:

cockpit-wsinstance:!:986:

rpc:!:32:

rpcuser:!:29:

setroubleshoot:!:985:

clevis:!:984:

geoclue:!:983:

flatpak:!:982:

sgx:!*:981:

stapusr:!*:156:

stapsys:!*:157:

stapdev:!*:158:

systemd-oom:!*:980:

pesign:!:979:

sshd:!:74:

slocate:!:21:

chrony:!:978:

tcpdump:!:72:

sspark:!:1000:

sulinux:!:1001:

apache:!:48:

nginx:!:977:

mysql:!:27:

docker:!:976:

avahi:!:70:

brlapi:!:975:

colord:!:974:

gdm:!:42:

gnome-initial-setup:!:973:

radiusd:!:95:

keylime:!:972:

dirsrv:!:389:

kdcproxy:!:388:

ipaapi:!:387:apache

pcp:!:386:

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# grpconv

[root@RockyLinux01 ~]#

[root@RockyLinux01 ~]# cat /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

wheel:x:10:sspark

cdrom:x:11:

mail:x:12:

man:x:15:

dialout:x:18:

floppy:x:19:

games:x:20:

tape:x:33:

video:x:39:

ftp:x:50:

lock:x:54:

audio:x:63:

users:x:100:

nobody:x:65534:

pegasus:x:65:

utmp:x:22:

utempter:x:35:

input:x:999:

kvm:x:36:qemu

render:x:998:

systemd-journal:x:190:

systemd-coredump:x:997:

dbus:x:81:

qemu:x:107:

sssd:x:996:

polkitd:x:995:

printadmin:x:994:

ssh_keys:x:993:

rtkit:x:172:

saslauth:x:76:

dnsmasq:x:992:

unbound:x:991:

libstoragemgmt:x:990:

pipewire:x:989:

libvirt:x:988:

tss:x:59:clevis,keylime

cockpit-ws:x:987:

cockpit-wsinstance:x:986:

rpc:x:32:

rpcuser:x:29:

setroubleshoot:x:985:

clevis:x:984:

geoclue:x:983:

flatpak:x:982:

sgx:x:981:

stapusr:x:156:

stapsys:x:157:

stapdev:x:158:

systemd-oom:x:980:

pesign:x:979:

sshd:x:74:

slocate:x:21:

chrony:x:978:

tcpdump:x:72:

sspark:x:1000:

sulinux:x:1001:

apache:x:48:

nginx:x:977:

mysql:x:27:

docker:x:976:

avahi:x:70:

brlapi:x:975:

colord:x:974:

gdm:x:42:

gnome-initial-setup:x:973:

radiusd:x:95:

keylime:x:972:

dirsrv:x:389:

kdcproxy:x:388:

ipaapi:x:387:apache

pcp:x:386:

[root@RockyLinux01 ~]#

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,015 명
  • 현재 강좌수 :  35,688 개
  • 현재 접속자 :  180 명