็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง Linux ไฝฟ็”จ่€…่ˆ‡ๆฌŠ้™้€ฒ้šŽๆŒ‡ๅ—:useradd、็พค็ต„็ฎก็†่ˆ‡ ACL ๅฏฆๆˆฐ

    ๐Ÿง Linux ไฝฟ็”จ่€…่ˆ‡ๆฌŠ้™้€ฒ้šŽๆŒ‡ๅ—:useradd、็พค็ต„็ฎก็†่ˆ‡ ACL ๅฏฆๆˆฐ

    ๅœจๅ–ฎๆฉŸๆกŒๆฉŸไธŠ,ๅพˆๅคšไบบๅชๆœƒๅปบ็ซ‹ไธ€ๅ€‹ๅธณ่™Ÿ,ๆฌŠ้™ๅ•้กŒๅฅฝๅƒไธๆ˜Ž้กฏ;ไฝ†ๅœจ ๅคšไบบๅ…ฑ็”จ、ๅŒๆ™‚่ท‘ๅคšๅ€‹ๆœๅ‹™็š„ Linux ไผบๆœๅ™จ ไธŠ, ไฝฟ็”จ่€…่ˆ‡ๆฌŠ้™่จญ่จˆๅฐฑๆœƒ็›ดๆŽฅๅฝฑ้Ÿฟๅˆฐๅฎ‰ๅ…จๆ€ง่ˆ‡็ถญ้‹ๆ•ˆ็އ。

    ๆœฌ็ฏ‡ๆ–‡็ซ ไปฅ「็™พ็ง‘็ดš」็š„ๆทฑๅบฆ,ๅฎŒๆ•ด่ชชๆ˜Ž Linux ็š„ ่บซๅˆ†ๆจกๅž‹(User / Group / Others)ไฝฟ็”จ่€…่ˆ‡็พค็ต„็ฎก็†ๅ‚ณ็ตฑๆช”ๆกˆๆฌŠ้™, ไปฅๅŠๆ›ด้€ฒ้šŽ็š„ ACL(Access Control List)ๅฏฆๆˆฐๆ‡‰็”จ。 ไฝ ๅฏไปฅๆŠŠ้€™็ฏ‡็•ถๆˆ:ๅปบ็ซ‹ไธ€ๅฐๅคšไบบๅ…ฑไบซ Linux ไผบๆœๅ™จไน‹ๅ‰,ๅฟ…่ฎ€็š„ๆฌŠ้™่จญ่จˆๆŒ‡ๅ—


    ไธ€、Linux ็š„่บซๅˆ†่ˆ‡ๆฌŠ้™ๆจกๅž‹ๆฆ‚ๅฟต

    ๅœจๆ“ไฝœๆŒ‡ไปคไน‹ๅ‰,ๅ…ˆๅผ„ๆ‡‚ๅนพๅ€‹้—œ้ตๅ่ฉž:

    • UID(User ID):ๆฏๅ€‹ๅธณ่™Ÿ่ƒŒๅพŒ้ƒฝๆœ‰ไธ€ๅ€‹ๆ•ธๅญ— ID。
    • GID(Group ID):ๆฏๅ€‹็พค็ต„ไนŸๆœ‰ไธ€ๅ€‹ ID。
    • user / group / others:ๆช”ๆกˆๆฌŠ้™ๅˆ†ๆˆไธ‰็ต„่บซๅˆ†。
    • root:UID ็‚บ 0 ็š„่ถ…็ดšไฝฟ็”จ่€…,ๅนพไนŽๅฏไปฅๅšไปปไฝ•ไบ‹ๆƒ…。
    • shell:/bin/bash、/bin/zsh… ไฝฟ็”จ่€…็™ปๅ…ฅๅพŒๆ“ไฝœ็š„็’ฐๅขƒ。

    ๅฏไปฅ็”จ id ๆŒ‡ไปค็œ‹็œ‹่‡ชๅทฑ็›ฎๅ‰็š„่บซๅˆ†:

    id
    id <username>

    ่ผธๅ‡บๅคง่‡ดๅƒ้€™ๆจฃ:

    uid=1000(wwfandy) gid=1000(wwfandy) groups=1000(wwfandy),27(sudo),999(docker)
    • uid=1000:ไฝฟ็”จ่€… ID。
    • gid=1000:ไธป่ฆ็พค็ต„ ID。
    • groups=...:้™„ๅŠ ็พค็ต„(่ฃœๅ……ๆฌŠ้™็š„้‡่ฆไพ†ๆบ)。

    Linux ่จญ่จˆ็š„ๆ ธๅฟƒ็ฒพ็ฅžๆ˜ฏ:ไธ€ๅˆ‡็š†ๆช”ๆกˆ、ๆ‰€ๆœ‰ๆ“ไฝœ้ƒฝๅฟ…้ ˆ็ถ“้ŽๆฌŠ้™ๆชขๆŸฅ。 ๅŒ…ๅซๆช”ๆกˆ、็›ฎ้Œ„、่ฃ็ฝฎ็ฏ€้ปž、Socket、Pipe,้ƒฝๆœ‰ๆ“ๆœ‰่€…่ˆ‡ๆฌŠ้™่จญๅฎš。


    ไบŒ、้‡่ฆ็š„ๅธณ่™Ÿ่ˆ‡็พค็ต„็›ธ้—œ็ณป็ตฑๆช”

    ไฝฟ็”จ่€…่ˆ‡็พค็ต„่ณ‡่จŠไธป่ฆๅ„ฒๅญ˜ๅœจ้€™ๅนพๅ€‹ๆช”ๆกˆ:

    • /etc/passwd:ๅธณ่™ŸๅŸบๆœฌ่ณ‡ๆ–™(ๅ็จฑ、UID、GID、ๅฎถ็›ฎ้Œ„、้ ่จญ shell)。
    • /etc/shadow:ๅฏ†็ขผ้›œๆนŠ่ˆ‡ๅฏ†็ขผๆ”ฟ็ญ–(ๅชๆœ‰ root ็œ‹ๅพ—ๅˆฐ)。
    • /etc/group:็พค็ต„ๅ็จฑ่ˆ‡ GID,ไปฅๅŠๆˆๅ“กๅˆ—่กจ。

    ๅฏไปฅ็”จ getent ๆŒ‡ไปคๆŸฅ่ฉข:

    getent passwd wwfandy
    getent group sudo

    ๅปบ่ญฐ้ฟๅ…็›ดๆŽฅๆ‰‹ๆ”น้€™ไบ›ๆช”ๆกˆ,้™ค้ž้žๅธธ็†Ÿๆ‚‰ๆ ผๅผ;ๅคงๅคšๆ•ธๆƒ…ๆณ่ซ‹ไฝฟ็”จ useraddusermodgroupadd ็ญ‰ๆŒ‡ไปค้€ฒ่กŒ็ฎก็†。


    ไธ‰、ไฝฟ็”จ่€…ๅธณ่™Ÿ็ฎก็†:useradd / passwd / usermod / userdel

    1. ๆ–ฐๅขžไธ€่ˆฌไฝฟ็”จ่€…

    ๆœ€ๅธธ่ฆ‹็š„ๆƒ…ๅขƒ:็‚บๅŒไบ‹ๆˆ–ๆœๅ‹™ๅปบ็ซ‹ไธ€ๅ€‹ๆ–ฐ็š„ๅธณ่™Ÿ。

    # ๅปบ็ซ‹ๆ–ฐๅธณ่™Ÿ alice,ไธฆๅปบ็ซ‹ๅฎถ็›ฎ้Œ„ /home/alice
    sudo useradd -m alice
    
    # ่จญๅฎšๅฏ†็ขผ
    sudo passwd alice

    ๆŸไบ›็™ผ่กŒ็‰ˆ(ไพ‹ๅฆ‚ Debian/Ubuntu)ๆœƒๅๅฅฝไฝฟ็”จ adduser ้€™ๅ€‹ๆฏ”่ผƒ่ฆชๅˆ‡็š„ไบ’ๅ‹•ๅผๅŒ…่ฃๆŒ‡ไปค, ไฝ†ๅบ•ๅฑค้‚„ๆ˜ฏๅ‘ผๅซ useradd

    2. ๅธธ็”จ useradd ๅƒๆ•ธ

    sudo useradd -m -s /bin/bash -c "ๅฐˆๆกˆA ้–‹็™ผ่€…" alice
    • -m:่‡ชๅ‹•ๅปบ็ซ‹ๅฎถ็›ฎ้Œ„。
    • -s:ๆŒ‡ๅฎš้ ่จญ shell。
    • -c:ๅ‚™่จปๆฌ„ไฝ(ๅœจ /etc/passwd ็š„ GECOS)。
    • -u:่‡ช่จ‚ UID(็‰นๆฎŠๆƒ…ๅขƒๆ‰้œ€่ฆ)。

    3. ไฟฎๆ”นๅธณ่™Ÿๅฑฌๆ€ง:usermod

    # ๆŠŠ alice ็š„้ ่จญ shell ๆ”นๆˆ zsh
    sudo usermod -s /bin/zsh alice
    
    # ๆŠŠ alice ๅŠ ๅˆฐ sudo ็พค็ต„(้™„ๅŠ ็พค็ต„)
    sudo usermod -aG sudo alice

    ๅ…ถไธญ -aG ้žๅธธ้‡่ฆ:-a ไปฃ่กจ「append」,ๆฒ’ๆœ‰้€™ๅ€‹ๆœƒ่ฆ†่“‹ๆމไฝฟ็”จ่€…ๅŽŸๆœ‰็š„้™„ๅŠ ็พค็ต„。

    4. ๅˆช้™คๅธณ่™Ÿ:userdel

    # ๅƒ…ๅˆช้™คๅธณ่™Ÿ,ไฟ็•™ๅฎถ็›ฎ้Œ„
    sudo userdel alice
    
    # ๅˆช้™คๅธณ่™Ÿไธฆ้€ฃๅŒๅฎถ็›ฎ้Œ„ไธ€่ตท็งป้™ค(่ซ‹่ฌนๆ…Ž)
    sudo userdel -r alice

    ๅœจๆญฃๅผ็’ฐๅขƒๅปบ่ญฐๅ…ˆ้Ž–ๅฎšๅธณ่™Ÿ(passwd -l ๆˆ–ๅœ็”จ็™ปๅ…ฅ),่ง€ๅฏŸไธ€ๆฎตๆ™‚้–“็ขบ่ชๆฒ’ๆœ‰ๆœๅ‹™ไพ่ณดๅพŒ, ๅ†ๆฑบๅฎšๆ˜ฏๅฆๆธ…้™คๅฎถ็›ฎ้Œ„。


    ๅ››、็พค็ต„็ฎก็†:groupadd / gpasswd ่ˆ‡ primary / supplementary groups

    Linux ็š„ๆฌŠ้™ๅคšๅŠๆ˜ฏ「ไฝฟ็”จ่€… + ็พค็ต„」ไธ€่ตท่จญ่จˆ。 ไธ€ๅ€‹ไฝฟ็”จ่€…้€šๅธธๆœƒๆœ‰:

    • ไธป่ฆ็พค็ต„(primary group):ๅœจ /etc/passwd ไธญ่จ˜้Œ„็š„้‚ฃๅ€‹ GID。
    • ้™„ๅŠ ็พค็ต„(supplementary groups):้กๅค–่ขซๅŠ ้€ฒๅŽป็š„็พค็ต„。

    1. ๆ–ฐๅขž็พค็ต„

    # ๅปบ็ซ‹ไธ€ๅ€‹ๅฐˆๆกˆ็พค็ต„ projectA
    sudo groupadd projectA

    2. ๆŠŠไฝฟ็”จ่€…ๅŠ ๅ…ฅ็พค็ต„

    # ่ฎ“ alice ๅŠ ๅ…ฅ projectA
    sudo usermod -aG projectA alice
    
    # ไนŸๅฏไปฅ็”จ gpasswd ็ฎก็†
    sudo gpasswd -a alice projectA

    3. ๆชขๆŸฅ็พค็ต„

    id alice
    getent group projectA

    ๅฏฆๅ‹™ไธŠๅพˆๅธธ่ฆ‹็š„ๅšๆณ•ๆ˜ฏ:ๆฏไธ€ๅ€‹ๅฐˆๆกˆๅปบ็ซ‹ไธ€ๅ€‹็พค็ต„,ๅ†ๅฐ‡้œ€่ฆๆฌŠ้™็š„ไบบๅ…จ้ƒจๅŠ ้€ฒ่ฉฒ็พค็ต„, ๅฆ‚ๆญคไธ้œ€่ฆๅฐๆฏๅ€‹ๆช”ๆกˆ้€ไธ€่จญๅฎšๅคšๅ€‹ๅธณ่™Ÿ,ๅช่ฆไฝฟ็”จ่€…ๆœ‰「็พค็ต„่บซๅˆ†」ๅณๅฏ。


    ไบ”、ๅ‚ณ็ตฑๆช”ๆกˆๆฌŠ้™:rwx / chmod / chown / chgrp

    1. ls -l ๆฌŠ้™ๆฌ„ไฝ่งฃ่ฎ€

    ls -l
    -rw-r----- 1 alice projectA  4096 Nov 15 10:00 report.txt
    drwxrws--- 2 root  projectA  4096 Nov 15 09:00 /srv/projectA
    • ็ฌฌ 1 ๅ€‹ๅญ—ๅ…ƒ:ๆช”ๆกˆ้กžๅž‹(- ไธ€่ˆฌๆช”ๆกˆ、d ็›ฎ้Œ„、l ่ปŸ้€ฃ็ต…)。
    • ๅพŒ้ข 9 ๅ€‹ๅญ—ๅ…ƒๅˆ†ๆˆไธ‰็ต„:user / group / others ็š„ rwx。
    • ไธŠไพ‹ -rw-r----- ่กจ็คบ:
      • ๆ“ๆœ‰่€…(alice):่ฎ€ๅฏซ。
      • ็พค็ต„(projectA):่ฎ€。
      • ๅ…ถไป–ไบบ:ๆฒ’ๆœ‰ไปปไฝ•ๆฌŠ้™。

    2. chmod ๆ•ธๅญ—่ˆ‡็ฌฆ่™Ÿ็”จๆณ•

    # ๆ•ธๅญ—่กจ็คบๆณ•:owner/group/others
    chmod 640 report.txt
    
    # ็ฌฆ่™Ÿ่กจ็คบๆณ•:u/g/o/a + +/-/=
    chmod g+w report.txt    # ็ตฆ็พค็ต„ๅฏซๅ…ฅๆฌŠ้™
    chmod o-r report.txt    # ๆ‹ฟๆމๅ…ถไป–ไบบ็š„่ฎ€ๅ–ๆฌŠ้™
    chmod a-x script.sh     # ๆ‰€ๆœ‰ไบบ้ƒฝไธ่ƒฝๅŸท่กŒ

    3. chown ่ˆ‡ chgrp:่ชฟๆ•ดๆช”ๆกˆๆ“ๆœ‰่€…่ˆ‡็พค็ต„

    # ๆ”น่ฎŠๆช”ๆกˆๆ“ๆœ‰่€…่ˆ‡็พค็ต„
    sudo chown alice:projectA report.txt
    
    # ๅƒ…่ฎŠๆ›ด็พค็ต„
    sudo chgrp projectA report.txt

    ๅฐๆ–ผๅฐˆๆกˆ็›ฎ้Œ„,ๅฏไปฅไธ€ๆฌก่ชฟๆ•ดๆ•ดๆฃต็›ฎ้Œ„็ตๆง‹:

    sudo chown -R root:projectA /srv/projectA

    4. setgid ่ˆ‡็›ฎ้Œ„็นผๆ‰ฟ็พค็ต„

    ๅฐๆ–ผ「ๅคšไบบๅ…ฑ็”จ็š„ๅฐˆๆกˆ็›ฎ้Œ„」,ๅพˆๅธธๆœƒๆญ้…็›ฎ้Œ„็š„ setgid ไฝๅ…ƒ:

    sudo chmod 2770 /srv/projectA    # 2 ไปฃ่กจ setgid

    ้€™ๆจฃ,ๅœจ /srv/projectA ๅบ•ไธ‹ๆ–ฐๅปบ็ซ‹็š„ๆช”ๆกˆ,็พค็ต„ๆœƒ่‡ชๅ‹•็นผๆ‰ฟ็‚บ projectA, ่€Œไธๆ˜ฏๅ„ไฝฟ็”จ่€…่‡ชๅทฑ็š„ไธป่ฆ็พค็ต„。้€™ๆ˜ฏๅ”ไฝœ็’ฐๅขƒไธญๅพˆ้‡่ฆ็š„ไธ€ๅ€‹็ดฐ็ฏ€。


    ๅ…ญ、็‚บไฝ•้œ€่ฆ ACL?ๅ‚ณ็ตฑๆฌŠ้™็š„้™ๅˆถ

    ๅ‚ณ็ตฑ็š„ rwx ๆฌŠ้™ๆจกๅž‹,ๅฐ่ฑกๅชๆœ‰ไธ‰้กž:user / group / others。 ๅœจๆŸไบ›ๆƒ…ๅขƒๆœƒไธๅคชๅค ็”จ,ไพ‹ๅฆ‚:

    • ๅฐˆๆกˆ็พค็ต„ projectA ๆƒณๅ…ฑ็”จ่ณ‡ๆ–™ๅคพ,ไฝ†ๅชๆƒณ้กๅค–้–‹ๆ”พ「ๅช่ฎ€」็ตฆ audit ๅธณ่™Ÿ。
    • ๆŸๅ€‹ๆช”ๆกˆ้œ€่ฆๅŒๆ™‚่ฎ“ๅ…ฉๅ€‹็พค็ต„ๅฏ่ฎ€ๅฏซ(ไพ‹ๅฆ‚ dev ่ˆ‡ ops)。

    ๅฆ‚ๆžœๅช้ ๅ‚ณ็ตฑๆฌŠ้™,ๅธธๅธธ้œ€่ฆ็กฌๅˆ‡็พค็ต„ๆˆ–ๅปบ็ซ‹้กๅค–่ค‡้›œ็š„็›ฎ้Œ„็ตๆง‹。 ้€™ๆ™‚ๅ€™ๅฐฑๅฏไปฅไฝฟ็”จ ACL(Access Control List) ไพ†ๅšๆ›ด็ดฐ็ทป็š„ๆŽงๅˆถ。

    ๅธธ่ฆ‹ๆŒ‡ไปค:

    • getfacl:ๆŸฅ็œ‹ ACL。
    • setfacl:่จญๅฎš ACL。

    ็ขบ่ชๆช”ๆกˆ็ณป็ตฑๆœ‰ๆ”ฏๆด ACL(ๅคง้ƒจๅˆ† ext4、xfs ้ ่จญ้ƒฝๆ”ฏๆด):

    mount | grep -E 'ext4|xfs'
    # ๅฆ‚ๆžœๆœ‰็œ‹ๅˆฐ acl ้ธ้ …,ๅฐฑไปฃ่กจๅทฒๅ•Ÿ็”จ ACL ๆ”ฏๆด

    ไธƒ、ACL ๅฏฆๆˆฐ:้‡ๅฐ็‰นๅฎšไฝฟ็”จ่€…่ˆ‡็พค็ต„็ดฐ็ทปๆŽˆๆฌŠ

    1. ๅฐ็‰นๅฎšไฝฟ็”จ่€…้–‹ๆ”พ่ฎ€ๅ–ๆฌŠ้™

    ๅ‡่จญ:

    • /srv/projectA ๆ˜ฏๅฐˆๆกˆ็›ฎ้Œ„。
    • audit ๅธณ่™Ÿ้œ€่ฆๅช่ฎ€ๆฌŠ้™ๆชข่ฆ–ๆช”ๆกˆ。
    # ๅ…ˆ็ขบไฟๅŸบๆœฌๆฌŠ้™ไธๅฐ others ้–‹ๆ”พ
    sudo chmod -R 770 /srv/projectA
    
    # ๅฐไฝฟ็”จ่€… audit ้–‹ๆ”พ「่ฎ€ๅ–่ˆ‡ๅŸท่กŒ」(X ่กจ็คบ็›ฎ้Œ„ๅฏ้€ฒๅ…ฅ)
    sudo setfacl -R -m u:audit:rx /srv/projectA
    
    # ๆŸฅ็œ‹ ACL
    getfacl /srv/projectA

    ่ผธๅ‡บ็ฏ„ไพ‹:

    # file: srv/projectA
    # owner: root
    # group: projectA
    user::rwx
    user:audit:rx
    group::rwx
    mask::rwx
    other::---

    ้€™ไปฃ่กจ้™คไบ†็พค็ต„ projectA ็š„ๆˆๅ“กไปฅๅค–,audit ไนŸ้กๅค–่ขซๆŽˆๆฌŠๅฏ่ฎ€ๅ–ๅ…งๅฎน, ่€Œๅ…ถไป–ไบบ(others)ไพ็„ถๆฒ’ๆœ‰ไปปไฝ•ๆฌŠ้™。

    2. ๅฐๆ•ดๅ€‹็›ฎ้Œ„่จญๅฎš「้ ่จญ ACL」

    ๅฆ‚ๆžœๅช่จญๅฎšๅ–ฎไธ€ๆช”ๆกˆ็š„ ACL,ๆ–ฐๅปบ็ซ‹็š„ๆช”ๆกˆไธๆœƒ่‡ชๅ‹•ๅฅ—็”จ。 ๅ› ๆญคๅœจ็›ฎ้Œ„ไธŠๅธธๆœƒๅ†่จญๅฎšไธ€็ต„ default ACL

    sudo setfacl -R -m u:audit:rx /srv/projectA
    sudo setfacl -R -m d:u:audit:rx /srv/projectA

    d: ไปฃ่กจ default ACL,ๆœƒๅฅ—็”จๅˆฐๆœชไพ†ๅœจๆญค็›ฎ้Œ„ๅบ•ไธ‹ๆ–ฐๅปบ็ซ‹็š„ๆช”ๆกˆๆˆ–็›ฎ้Œ„。

    3. ๅŒๆ™‚็ตฆๅคšๅ€‹็พค็ต„ๆฌŠ้™

    ๅฆไธ€ๅ€‹ๅธธ่ฆ‹ๆกˆไพ‹:้–‹็™ผๅœ˜้šŠ dev ่ˆ‡็‡Ÿ้‹ๅœ˜้šŠ ops ้ƒฝ้œ€่ฆๅฏซๅ…ฅๆฌŠ้™。

    sudo mkdir -p /srv/shared
    sudo chown root:dev /srv/shared
    sudo chmod 2770 /srv/shared      # ๅŸบ็คŽๆฌŠ้™็ตฆ dev
    
    # ้กๅค–็ตฆ ops ็พค็ต„่ฎ€ๅฏซๆฌŠ้™
    sudo setfacl -m g:ops:rwx /srv/shared
    sudo setfacl -m d:g:ops:rwx /srv/shared

    ้€™ๆจฃๅช่ฆไฝฟ็”จ่€…ๆ˜ฏ dev ๆˆ– ops ็š„ๆˆๅ“ก,ๅฐฑๅฏไปฅๅœจ /srv/shared ่ฃก่‡ช็”ฑๅ”ไฝœ, ๅคงๅน…ๆธ›ๅฐ‘「็‚บไบ†ๆฌŠ้™」่€Œ่ขซ่ฟซ่ค‡่ฃฝไธ€ๅ †่ณ‡ๆ–™ๅคพ็š„ๆƒ…ๆณ。


    ๅ…ซ、ๅฎŒๆ•ด็ฏ„ไพ‹:ๅปบ็ซ‹ไธ€ๅ€‹ๅฎ‰ๅ…จ็š„ๅฐˆๆกˆๅ”ไฝœ็’ฐๅขƒ

    ็ถœๅˆๅ‰้ขๅ…งๅฎน,ๆˆ‘ๅ€‘่จญ่จˆไธ€ๅ€‹ๅฏฆๆˆฐๆƒ…ๅขƒ:

    • ๅฐˆๆกˆๅ็จฑ:projectA
    • ้–‹็™ผ่€…:alice、bob
    • ็จฝๆ ธ่€…:audit(ๅช่ฎ€)
    • ๅฐˆๆกˆ่ณ‡ๆ–™ๅคพ:/srv/projectA

    ๆญฅ้ฉŸ 1:ๅปบ็ซ‹็พค็ต„่ˆ‡ไฝฟ็”จ่€…(่‹ฅๅฐšๆœชๅปบ็ซ‹)

    sudo groupadd projectA
    
    sudo useradd -m alice
    sudo useradd -m bob
    sudo useradd -m audit
    
    sudo passwd alice
    sudo passwd bob
    sudo passwd audit

    ๆญฅ้ฉŸ 2:ๆŠŠ้–‹็™ผ่€…ๅŠ ๅ…ฅ projectA ็พค็ต„

    sudo usermod -aG projectA alice
    sudo usermod -aG projectA bob

    ๆญฅ้ฉŸ 3:ๅปบ็ซ‹ๅฐˆๆกˆ็›ฎ้Œ„,่จญๅฎšๆ“ๆœ‰่€…่ˆ‡็พค็ต„

    sudo mkdir -p /srv/projectA
    sudo chown root:projectA /srv/projectA
    sudo chmod 2770 /srv/projectA      # setgid + 770

    ๅฆ‚ๆญคไธ€ไพ†,ๅฐˆๆกˆ่ฃก็š„ๆช”ๆกˆ้ ่จญ็”ฑ root ๆ“ๆœ‰,็พค็ต„็‚บ projectA,ๅชๆœ‰ๅฐˆๆกˆ็พค็ต„ๆˆๅ“ก็œ‹ๅพ—ๅˆฐ, ไธฆ้ฟๅ…่ชคๆŠŠๆฌŠ้™้–‹ๆ”พ็ตฆ others。

    ๆญฅ้ฉŸ 4:ไฝฟ็”จ ACL ็ตฆ audit ๅช่ฎ€ๆฌŠ้™

    sudo setfacl -R -m u:audit:rx /srv/projectA
    sudo setfacl -R -m d:u:audit:rx /srv/projectA

    ็พๅœจ,ๆˆ‘ๅ€‘ๅฎŒๆˆไธ€ๅ€‹็ฌฆๅˆๅฏฆๅ‹™้œ€ๆฑ‚็š„ๆฌŠ้™่จญ่จˆ:

    • alice / bob:ๅฏๅœจ /srv/projectA ๅ…ง่ฎ€ๅฏซ่ˆ‡ๅปบ็ซ‹ๆช”ๆกˆ。
    • audit:ๅฏ้ๆญท่ˆ‡้–ฑ่ฎ€ๆ‰€ๆœ‰ๅ…งๅฎน,ไฝ†ไธ่ƒฝไฟฎๆ”น。
    • ๅ…ถไป–ๅธณ่™Ÿ:ๆฒ’ๆœ‰ไปปไฝ•ๆฌŠ้™。

    ไน、ๅธธ็”จๆชขๆŸฅ่ˆ‡้™ค้ŒฏๆŠ€ๅทง

    ้‡ๅˆฐ「็‚บไป€้บผๆˆ‘ไธ่ƒฝ่ฎ€ / ๅฏซ้€™ๅ€‹ๆช”ๆกˆ?」้€™้กžๅ•้กŒๆ™‚,ๅฏไปฅไพๅบๆชขๆŸฅ:

    1. ็ขบ่ช่บซๅˆ†id ็œ‹็œ‹่‡ชๅทฑๆœ‰ๅ“ชไบ›็พค็ต„。
    2. ๆŸฅ็œ‹ๆช”ๆกˆๆฌŠ้™ls -l ็œ‹ๅ‚ณ็ตฑ rwx。
    3. ๆŸฅ็œ‹ ACLgetfacl <ๆช”ๆกˆๆˆ–็›ฎ้Œ„>
    4. ๆจกๆ“ฌไปฅๆŸๅ€‹ไฝฟ็”จ่€…ๅŸท่กŒ(้œ€่ฆ sudo):
      sudo -u alice ls /srv/projectA

    ๅฆ‚ๆžœๆ˜ฏ็›ฎ้Œ„ๅฑค็ดš็š„ๆฌŠ้™ๅ•้กŒ,่จ˜ๅพ—่ฆไธ€่ทฏๅพ€ไธŠๆชขๆŸฅ,ไพ‹ๅฆ‚ /srv ๆœฌ่บซๆ˜ฏๅฆๅฐ่ฉฒไฝฟ็”จ่€…ๆœ‰「ๅŸท่กŒ(x)」ๆฌŠ้™,ๅฆๅ‰‡ๅณไฝฟๅบ•ไธ‹็›ฎ้Œ„้–‹ๅพ—ๅ†ๅคงไนŸ้€ฒไธๅŽป。


    ๅ、ๅฎ‰ๅ…จ่ˆ‡็ถญ้‹ๅปบ่ญฐ:ๆŠŠๆฌŠ้™่จญ่จˆๆˆไธ€ๅฅ—ๆจ™ๆบ–

    ๆœ€ๅพŒๆ•ด็†ๅนพๅ€‹ๅฏฆๅ‹™ไธŠ้žๅธธ้‡่ฆ็š„ๅŽŸๅ‰‡,ๅปบ่ญฐๅœจ่‡ชๅทฑๆˆ–ๅœ˜้šŠ็š„ไผบๆœๅ™จ SOP ไธญๅ›บๅฎšไธ‹ไพ†:

    • ๅŽŸๅ‰‡ 1:้ฟๅ…ไปฅ root ็›ดๆŽฅ็™ปๅ…ฅ
      ไฝฟ็”จ sudo ๅง”ๆดพ็ฎก็†ๆฌŠ้™,ไธฆ่จ˜้Œ„ๅœจ sudo log ่ฃก,ๆฏ”่ผƒๅฎนๆ˜“็จฝๆ ธ。
    • ๅŽŸๅ‰‡ 2:ไธ€ๅ€‹ๆœๅ‹™ไธ€ๅ€‹ๅธณ่™Ÿ
      ไพ‹ๅฆ‚ web、db、backup ๅˆ†ๅˆฅ็”จ www-data、postgres、backupuser ็ญ‰, ็™ผ็”Ÿๅ•้กŒๆ™‚ๆฏ”่ผƒๅฅฝๅˆ‡ๅ‰ฒๆฌŠ้™่ˆ‡้ขจ้šช。
    • ๅŽŸๅ‰‡ 3:ๅฐˆๆกˆๅฐŽๅ‘็š„็พค็ต„่จญ่จˆ
      ๆฏๅ€‹ๅฐˆๆกˆๅปบ็ซ‹ไธ€ๅ€‹็พค็ต„(projectA、projectB…),ไฝฟ็”จ่€…้€้Ž็พค็ต„็ฒๅพ—ๆฌŠ้™,่€Œไธๆ˜ฏ็›ดๆŽฅ็ตฆๅ€‹ๅˆฅๅธณ่™Ÿ。
    • ๅŽŸๅ‰‡ 4:ๆ•ๆ„Ÿ่ณ‡ๆ–™ไธ€ๅพ‹้—œ้–‰ others ๆฌŠ้™
      ่จญๅฎš็‚บ 750、770、700 ้กžๅž‹็š„ๆฌŠ้™,ไธฆๆญ้… ACL ็ตฆ้œ€่ฆ็š„ไบบ็ฒพๆบ–ๆŽˆๆฌŠ。
    • ๅŽŸๅ‰‡ 5:ๅฎšๆœŸๆชขๆŸฅไพ‹ๅค– ACL
      ACL ๅพˆๅผทๅคง,ไฝ†ไนŸๅฎนๆ˜“่ขซ้บๅฟ˜。ๅปบ่ญฐๅฎšๆœŸๆŽƒๆ้—œ้ต็›ฎ้Œ„,ๆ•ด็†ๅ‡บ「่ชฐๅคšไบ†ๅ“ชไบ›็‰นๅˆฅๆฌŠ้™」。

    ็•ถไฝ ๆŠŠ「ๅธณ่™Ÿๅปบ็ซ‹、็พค็ต„ๅˆ†้…、็›ฎ้Œ„็ตๆง‹、ๅˆๅง‹ๆฌŠ้™、ACL ่ฆๅ‰‡」้€™ๅนพไปถไบ‹ๆ•ด็†ๆˆไธ€ๅฅ— ๆจ™ๆบ–ๆต็จ‹(SOP) ไน‹ๅพŒ,ๆ–ฐๅฐˆๆกˆ、ๆ–ฐๅŒไบ‹ๅŠ ๅ…ฅ้ƒฝๅฏไปฅๅฟซ้€Ÿ่ค‡่ฃฝๅŒๆจฃ็š„ๅฎ‰ๅ…จๆฐดๆบ–, ไนŸ่ฎ“ๆœชไพ†็š„็ถญ้‹、็จฝๆ ธ่ˆ‡ๅ•้กŒๆŽ’ๆŸฅๆ›ดๅŠ ๆธ…ๆฅš。


    ✅ ๅฆ‚ๆžœไฝ ๅทฒ็ถ“็†Ÿๆ‚‰ๆœฌๆ–‡็š„ useradd、็พค็ต„่ˆ‡ ACL ่ง€ๅฟต,ไธ‹ไธ€ๆญฅๅฏไปฅๆญ้… SSH ๅฎ‰ๅ…จๅผทๅŒ–、ๅ‚™ไปฝ่ˆ‡ๆ—ฅ่ชŒ็›ฃๆŽง ไธ€่ตท่จญ่จˆๅ‡บๅฎŒๆ•ด็š„ Linux ไผบๆœๅ™จๅฎ‰ๅ…จๅŸบๆบ–(Baseline), ่ฎ“ๆฏไธ€ๅฐๆ–ฐไธŠ็ทš็š„ไธปๆฉŸ้ƒฝ็ฌฆๅˆๅŒๆจฃ็š„ๅฎ‰ๅ…จ่ˆ‡ๆฌŠ้™ๆ”ฟ็ญ–。

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš