root 유저로 접속을 위해 su - 하고 나서 tail -6 passwd 명령어로 마지막 6줄을 보겠다. khs라는 유저를 확인할 수 있다.
useradd
를 통해 새로운 유저를 생성하겠다.
-c 옵션은 comment 추가하는 것이다.
user10이 추가된 것도 확인할 수 있다.
id
id 명령어를 통해서 유저 정보 더 알 수 있다.
/etc/shadow에는 해시 형태로 된 비밀번호가 있다.
passwd
user10의 password 바꾸고 싶다.
userdel
user10 지우고 싶으면
usermod -G <그룹명> <유저명>
usermod -G wheel user02 하면 user02를 wheel그룹에 넣을 수 있다.
su
만 하면 root 사용자가 지정된다.(비밀번호 치면 됨)
root 상태에서 su user01과 같이 사용자 이름 지정하면 패스워드 필요하지 않다.
참고로 su만 치면 그 이전에 작업하던 경로 그대로 있는다.
근데 만약 root로 들어가서 root의 홈 디렉토리로 가고 싶다면 su -
sudo 명령 사용하려면 두 가지 조건 필요한데
- khs라는 유저가 wheel이라는 그룹에 속해있고 wheel이라는 그룹에 있는 사람들은 run all commands 권한이 있다.
- wheel이라는 그룹에 안 속해있으면 sudo 못 쓴다.
usermod -aG <그룹명> <유저명>
- 이런 식으로 user 새로 생성하고 wheel이라는 그룹에 안 들어가있으면 넣어줘야 sudo 명령어 쓸 수 있게 된다.
- 보통은 옵션을 -aG로 준다.
참고) 디렉토리 열려면 x권한 줘야한다, 디렉토리도 파일이다
보통 파일을 실행하면 실행한 사용자가 주체가 되어 프로세스가 실행되는데, setuid가 설정되어 있는 파일을 실행하면 파일을 실행한 사용자가 아니라 파일을 소유하고 있는 사용자의 권한으로 프로세스가 실행된다.
ls -l /bin/passwd를 통해 passwd 파일의 권한을 확인할 것인데, 권한이 rwx가 아니라 rws로 되어있다.
which 명령어를 사용하면 뒤의 명령어가 저장되어 있는 곳의 위치를 찾을 수 있다.
파일 소유자는 현재 root이고 user09로 접속한 상태이다.
아무튼 모든 passwd 명령어는 setuid가 설정되어 있는 상태이기 때문에 사용하면 root권한으로 /etc/shadow파일의 내용을 변경할 수 있게 된다.
요약하면 setuid로 설정되어 있어서 유저인 상태로 본인 패스워드를 바꿀 수 있다.(그것에 대해서만 파일 소유자 권한-여기서는 루트 권한을 받을 수 있어서)
보면 root만 권한 있다.
디렉토리이고 유저는 rwx, 그룹은 rx, other는 rx
소유자 khs, 소유 그룹 khs이다.
chmod 555로 쓰기 권한을 빼면 touch로 파일을 만들 수 없다
다시 chmod 775로 권한 주면 파일 만들 수 있다.
root 들어가서 해야함. chown :devops /home/linux1/aaa로 해도 된다
<과정>
- user3과 user4가 있고, user3의 홈 디렉토리는 /home/user3이다.
- 여기에 mkdir로 linux라는 디렉토리를 만들어보자(/home/user3/linux)
- user4도 vi편집기로 user3이 만들어둔 디렉토리에서 작업할 수 있게 권한 설정을 할 것이다.
- 여기서 중요한 것은 먼저 /home/user3/linux 디렉토리의 그룹명이 user3과 user4가 동시에 속해있는 그룹명이어야 한다. 이것은 chgrp 명령어를 통해서 설정할 것이다.
- 그 뒤에 setgid 설정을 할 것이고, s권한을 준 다음 만든 vi편집기로 작업할 수 있게 한다는 것이다.
- 여기서 주의할 점은 s권한 주기 전에 만든 파일에 대해서는 이 권한이 상속되지 않는다는 것이다.
- 예를 들어 setgid설정 전에 abc라는 파일을 만들었고, s 권한 설정을 해준 다음에 panda라는 파일을 만들었다고 하자. group소유자도 abc는 상속이 안 된 상태일 것이고, panda만 상속이 된 상태일 것이다.
- 마지막으로 /home/user3 디렉토리에게 771권한을 주는 것이 중요하다. 그래야지 user4에서 cd /home/user3/linux 명령어를 쳤을 때, permission denied가 안 뜨기 때문이다.
많이 쓰는 명령어
- usermod -aG 그룹명 유저명
- tail -5 /etc/passwd,group,shadow
- useradd 유저명
- id 유저명
- passwd 유저명
- chmod g+s /home/user/linux1
- groupadd devops : 그룹 생성
- chgrp devops /home/user/linux1 : 그룹소유자 변경
chown :devops /home/user/linux1
useradd
먼저 user3, user4 만들겠다
tail -5 /etc/group
group이 뭐가 있는지 확인하고 미리 만들어둔 devops 그룹에 user3, user4를 넣겠다.
usermod -aG <그룹명> <유저명>
넣은 것 확인가능하다.
su, mkdir, ls -ld
user3으로 접속하고
현재 linux디렉토리의 권한에 setgid권한은 없는 것을 확인할 수 있다.
또한, 그룹도 user3으로 되어있다.
chgrp, chmod
그래서 우선 그룹을 devops로 바꾸고, 그 뒤에 s권한을 추가해주고 추가로 user3 디렉토리에게 771 권한을 주도록 하겠다.
cd로 이동
그 뒤에 터미널 하나 더 열고 /home/user3/linux로 가서 무슨 파일 있나 확인도 한다.
다른 유저의 디렉토리에서 작업 가능해짐
vi panda 해보면 readonly가 안 뜨는 것을 확인할 수 있다.
s권한 주기 전에도 파일 만들어보고, s권한 준 다음에 파일 만들어 본 다음에 각각 ls -ld로 그룹소유자 봤더니 자동적으로 안 바뀐다는 것 확인할 수 있었다.
디렉토리에만 설정 가능. 파일을 소유한 사용자와 root만 파일 삭제 가능. 누구나 파일 생성할 수는 있다.
drwxrwxrwt면 마지막에 t있어서 판별 가능.
setfacl -m u:user09:rwx /tmp/abcde
-m은 modify, u:유저:권한, 파일 위치
권한 맨 뒤에 +가 붙은 것 확인 가능
getfacl로 확인해보면