eUID
: 유효 사용자 ID; effective UID: 프로세스에 대한 접근 권한 규정rUID
: real 사용자 ID; real UID: 프로세스를 처음 시작한 사람$ ps -eo pid,euser,ruser,comm
PID EUSER RUSER COMMAND
1 root root systemd
2 root root kthreadd
3 root root rcu_gp
4 root root rcu_par_gp
6 root root kworker/0:0H-kblockd
8 root root mm_percpu_wq
9 root root ksoftirqd/0
10 root root rcu_sched
11 root root migration/0
12 root root idle_inject/0
.... 중략 ....
19314 paralle+ paralle+ prlcp
19315 paralle+ paralle+ prlsga
19316 paralle+ paralle+ prlshprof
19593 paralle+ paralle+ terminator
19601 paralle+ paralle+ zsh
root
로 가지는 것을 좋아하지 않는다.sudo
가 rUID를 변경하지 않도록 다음 라인을 /etc/sudoers
파일에 덧붙인다.Defaults stay_setuid
geteuid()
시스템 콜을 통해 eUID를 커널에 요구한다./etc/passwd
를 열고 시작 부분부터 읽는다./etc/passwd
에서 읽을 것이 아무 것도 남아 있지 않다면 프로세스는 UID를 찾는데 실패한 것이다.현실에서는 더 복잡하다.
자세한 내용은 PAM 링크 글
$ sudo passwd root # passwd 명령은 비밀번호 변경 명령어
Enter new UNIX password: # 패스워드 2번 입력하면 됨
$ su
$ su
$ su
$ su
명령은 root계정으로 스위칭하는 것. root의 PW를 요구한다.$ su
명령으로 root 계정으로의 스위칭을 거부할 수 있다.$ su user1
$ su user1
$ su - user1
$ su - user1
$ su -c "apt update"
$ su -c "apt update"
$ sudo apt update
$ su - [USER] -c ["CMD"]
$ su - [USER] -c ["CMD"]
su
명령 PW없이 사용하기/etc/pam.d/su
에서 su명령 configure 할 수 있다.$ sudo vi /etc/pam.d/su
/etc/pam.d/su
파일의 저기 영역!auth sufficient pam_wheel.so trust
의미$ usermod -aG wheel dhyang
$ cat /etc/group | grep wheel
(dhyang) $ su
root #
sudo
/etc/sudoers
에서 적용한다.$ sudo -u <USER> <script>
$ sudo -u dhyang ./script.sh
sudo
명령 PW없이 사용하기/etc/sudoers.d/<USER>
CentOS
jenkins
라 가정/etc/sudoers
파일에서 sudo를 configure할 수 있다.Defaults requiretty
를 찾아서 주석처리(#)jenkins ALL=(ALL) NOPASSWD: ALL
을 파일 마지막 부분에 추가Ubuntu
jenkins
라 가정 (유저 등록하지 않아도 됨)/etc/sudoers
에서 configuration/etc/sudoers.d
에 파일을 만든다.jenkins
(USER) $ sudo su
(root) # vi /etc/sudoers.d/jenkins
위 같이 파일(/etc/sudoers.d/jenkins
)을 만들고 내용을 작성한다.
/etc/sudoers.d/jenkins
jenkins ALL=(ALL) NOPASSWD: ALL
/etc/sudoers.d/jenkins
파일의 접근 권한을 바꾼다.(root) (/etc/sudoers/d) # chmod 0440 jenkins
-r--r-----
echo
로 PW 주는 방식$ echo -n 'PASSWD' | sudo -S -u <USER> /bin/true
이후엔 sudo 명령에 Password 입력이 필요없음
$ echo -n 'PASSWD' > mypassword
# mypassword 파일을 만들어 두고
$ cat mypassword | sudo -S -u <USER> /bin/true
이후에 sudo 명령에 Password 입력이 필요없음
id [user]
id
: 현재 로그인 된 user의 uid
, gid
, groups
(소속) 을 알 수 있음user@host:~ $ id
uid=1001(user) gid=1001(user) groups=1001(user),27(sudo)