sticky bit

sticky bit

8진수로 1000 이며
대표적으로 설정된 디렉토리는 /tmp 이다
이 비트가 설정되어있으면 해당 권한을가진 사용자외에는 삭제가 불가능하다
예를들어
root 유저로 777권한의 디렉토리를 만들면
그 안에 A유저가 디렉토리를 생성할수있다(쓰기권한이 있으니까)
근데 중요한건 B유저가 A유저가 만들어놓은 디렉토리(파일)를 삭제할수있다(B역시 쓰기권한이있다!)
하지만 sticky bit를 설정한 1777 로 만들면
A가 만든 디렉토리는 A 와 root 만이 지울수있게된다 (읽는거는 B도 가능하다(A가 권한을 줫을경우))

Linux MD5 passwd hash analysis

이전 포스트에서 shadow 파일에대해 살펴봤는데

openssl로 다음과같이 shadow에 MD5로 생성되는 같은 단락(?)을 만들수 있다
 openssl passwd -1 -salt salt testpasswd
$1$salt$GjASc4pDEk5p9FgnhQbfW/
salt 값이 어떻게 들어가는지 알아보기위해 openssl 라이브러리의 apps/passwd.c 를 살펴보았다. 살펴볼 함수는
static char *md5crypt(const char *passwd, const char *magic, const char *salt)
으로 인자로 패스워드, 매직값(1,apr1) , salt 값 을 받음을 알수있다.
먼저 “[PASSWD][SALT][PASSWD]” 로 MD5 로 해싱을 하고
“[PASSWD]$[MAGIC]$[SALT]”이랑 위 해시값이랑 적절하게 섞어서 그걸또 1000번 더 해싱하던데
자세한건 직접 소스 보는게 좋을꺼같다. (볼일도 없을거같지만)
으으 존더리퍼 만세 …

Linux passwd and shadow and group 에 대한 고찰 ?!

passwd  권한 644 (root:root)
root:x:0:0:root:/root:/bin/bash
test:x:1001:1002:,,,:/home/test:/bin/bash
[ID]:[PASSWD]:[UID]:[GID]:[GECOS]:[USERDIR]:[USERSHELL]
오래된 리눅스 or 유닉스는 PASSWD 칸이 직접 매겨져있다.
요즘은 PASSWD만 따로 shadow 파일로 만들어서 쓰는데
뭐 옛날에는 해싱을 못풀어서 패스워드파일이 공개되도 별 문제 없었다는데
이젠 개나소나 다푸니까 그거 자체도 보호해야된다 싶어서 일반유저는 읽을수도 없다나 뭐라나…
예를들어 test아이디는 암호가 shadow파일에 있으며 UID는 1001이며 GID는 1002이다 홈디렉토리는 /home/test 이며 쉘은 /bin/bash 를 쓴다  정도?
GECOS는 사용자 정보를 저장하는데
Full Name: Only
Room Number []: 105
Work Phone []: 010
Home Phone []: 055
뭐 이런거? 위대로 쓰니까 GECOS 에 Only,105,010,055 이렇게 들어가있네
passwd 파일을 변경시킬수있는 명령어들로는
adduser – 유저 생성시
deluser – 유저 제거시
usermod – 유저 변경시
chfn – GECOS 변경시
기타등등 (만들기나름이겠지뭐)
shadow  권한 640 (root:shadow)
root:!:14606:0:99999:7:::
test:$6$j9YC72KG$ysrTy/UpuPez62gWPp/P0.glzzGm9JnpKmQ3TDn1ab..uT8TvHEpv9.IISjdjhQut4CXgA.RieQtVAPtiLq0w.:14643:0:99999:7:::
 – 아이디
 – 해시된 패스워드
 – 마지막 패스워드 바꾼날짜
 – 패스워드 변경까지 남은기간 (최소)
 – 패스워드 변경까지 남은기간 (최대)
 – 패스워드 만료전 경고기간
 – 패스워드 만료후 사용 가능한 기간
 – 계정 만료일
 – 사용치 않음
패스워드를 중점적으로 관리하기위해 따로 떨어져나온 파일이다 랄까 ..
해시된 패스워드에 대해 자세히 쓰자면
$6$j9YC72KG$ysrTy/UpuPez62gWPp/P0.glzzGm9JnpKmQ3TDn1ab..uT8TvHEpv9.IISjdjhQut4CXgA.RieQtVAPtiLq0w
으잌 매우길다 ㅋㅋ ($는 토큰이다)
첫번째는 해시방법 0-DES, 1-MD5, 2-Blowfish, 5-SHA-256, 6-SHA512  (6이므로 SHA512로 되어있음을 알수있다)
두번째는 SALT – 사전파일크랙을 방지하기위해 암호문에 추가하는 문자열.
세번째는 해시된 문자열 (MD5라고해서 MD5형식이 아니다… 위 해시방법을 Base 로 조금 다른 해시방법)
passwd 명령어를통해 조작할수있다.
group  권한 644 (root:root)
root:x:0:root,test
test:x:1002:
[GROUP_NAME]:[GPASSWD]:[GID]:[USER_LIST]
이런형태이며
USER_LIST 에는 여러명의 유저가 들어갈수있으며 , 콤마로 구분된다.
변경할수있는 명령어들은
groupadd  groupdel  groupmod  이런거 ?!
gshadow도 있는데 잘 안쓰이며 위 shadow와 비슷하므로 넘어간다

VirtualBox 컴퓨터 켤때 자동으로 머신 돌리기

/etc/init.d/wsv

#!/bin/sh
user=”wsv”
PATH=/home/only/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
DESC=”Virtual Box Wsv”
NAME=wsv
SCRIPTNAME=/etc/init.d/$NAME
VM_NAME=”Wsv”
USERNAME=only
do_start()
{
su $USERNAME -c “VBoxManage startvm ${VM_NAME} -type headless”
}
do_stop()
{
su $USERNAME -c “VBoxManage controlvm ${VM_NAME} acpipowerbutton && sleep 5”
}
case “$1” in
  start)
        echo -n “Starting $DESC: $NAME”
        do_start
        echo “.”
        ;;
  stop)
        echo -n “Stopping $DESC: $NAME”
        do_stop
        echo “.”
        ;;
  restart|force-reload)
        echo -n “not support”
        ;;
  *)
        echo “Usage: $SCRIPTNAME {start|stop|restart|force-reload}” >&2
        exit 1
        ;;
esac
exit 0
뭐 이런식으로 ?
update-rc.d  wsv defaults 99 1
맞나? (제일먼저  켜지고 제일먼저 꺼지게 )
뭐 하여튼 지금 이렇게 씀.
acpid 설치 필수 (안그러면 안꺼져 -_-)