도커 알파인에서 std_out 프로그램을 / dev / stdout으로 리디렉션하는 테스트 중입니다. 사용자에서 stdout으로 에코 할 수 있지만 su
명령 에서는 에코 할 수없는 이유를 알 수 없습니다 .
docker exec -it 779ddea6ec33 bash
# 루트 사용자
bash-4.4# su - http -c "echo 1 >> /dev/stdout"
-sh: can't create /dev/stdout: Permission denied
# why comman above failed
bash-4.4# whoami
root
bash-4.4# su - root -c "echo 1 >> /dev/stdout"
1
docker exec -u http -it 779ddea6ec33 bash
# http 사용자
bash-4.4$ whoami
http
bash-4.4$ echo 1 >> /dev/stdout
1
# but this command works
일부 ls :
bash-4.4# ls -lad /dev/stdout
lrwxrwxrwx 1 root root 15 Jul 7 16:47 /dev/stdout -> /proc/self/fd/1
bash-4.4# ls -lad /proc/self/fd/1
lrwx------ 1 root root 64 Jul 7 18:09 /proc/self/fd/1 -> /dev/pts/0
bash-4.4# ls -lad /dev/pts/0
crw--w---- 1 root tty 136, 0 Jul 7 18:09 /dev/pts/0
통계 :
bash-4.4# stat /dev/stdout
File: '/dev/stdout' -> '/proc/self/fd/1'
Size: 15 Blocks: 0 IO Block: 4096 symbolic link
Device: 4dh/77d Inode: 8013573 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-07-07 18:09:33.000000000
Modify: 2019-07-07 16:47:08.000000000
Change: 2019-07-07 16:47:08.000000000
bash-4.4# stat /dev/pts/0
File: /dev/pts/0
Size: 0 Blocks: 0 IO Block: 1024 character special file
Device: 4eh/78d Inode: 3 Links: 1 Device type: 88,0
Access: (0620/crw--w----) Uid: ( 0/ root) Gid: ( 5/ tty)
Access: 2019-07-07 18:15:28.000000000
Modify: 2019-07-07 18:15:28.000000000
Change: 2019-07-07 17:48:22.000000000
/dev/stdout
특수 파일입니다.
두 명의 사용자 (tty1의 user1, tty2의 user2)로 로그인했다고 가정 해 보겠습니다.
/dev/stdout
사용자 1은을 /dev/tty1
, 사용자 2 는를 나타냅니다 /dev/tty2
.
여기서 http
사용자는 /dev/stdout
현재 사용자 (루트)에 속한 것을 작성하려고합니다 .
bash-4.4# su - http -c "echo 1 >> /dev/stdout"
-sh: can't create /dev/stdout: Permission denied
다른 경우 http
는 자신이 소유 한 파일에 쓰는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다