ฉันจะสร้างผู้ใช้ที่ไม่ใช่การเข้าสู่ระบบได้อย่างไร?


134

ฉันต้องการสร้างผู้ใช้และกลุ่มที่เรียกว่าsubversionระบบ RHEL 5 ฉันดูที่หน้า man สำหรับuseraddและฉันเดาว่าคำสั่งจะเป็นเพียง ...

useradd subversion

อย่างไรก็ตามไม่แน่ใจว่าจะหลีกเลี่ยงการสร้างผบ. นอกจากนี้ฉันไม่ต้องการให้เป็นผู้ใช้ที่สามารถเข้าสู่ระบบได้

วัตถุประสงค์หลักคือเพื่อให้เจ้าของพื้นที่เก็บข้อมูล SVN


คุณเคยดู man page ของ useradd แล้วและไม่พบ -M (อย่าสร้างไดเรกทอรี HOME)?
inemanja

คำตอบ:


76

คุณสามารถใช้-Mสวิตช์ (ตรวจสอบให้แน่ใจว่าเป็นทุน) เพื่อให้แน่ใจว่าจะไม่มีการสร้างโฮมไดเรกทอรี:

useradd -M subversion

จากนั้นล็อคบัญชีเพื่อป้องกันการเข้าสู่ระบบ:

usermod -L subversion

59
นี่ไม่ใช่คำตอบที่ดีโดยเฉพาะผู้ใช้ที่สร้างโดยวิธีนี้ยังมีเชลล์อยู่ และคุณไม่ได้เตือน OP ว่านี่เป็นกรณี ย้อนหลังที่จะเป็นusermod -s /bin/false subversionหรือ--shell /bin/falseไปuseradd
ลี Hambley

7
@beak บัญชีถูกล็อคโดยมีเชลล์เป็นจุดที่สงสัย
John T

15
@beak เฉพาะผู้ใช้รูทเท่านั้นที่จะสามารถเข้าถึงบัญชีที่ถูกล็อคได้ แต่ทำไมต้องกังวลหากบุคคลนั้นได้รับสิทธิ์การเข้าถึงรูทแล้ว และการตั้งค่าเชลล์ไม่ได้ทำอะไรมากมายเมื่อผู้ใช้สามารถเรียกใช้su -s /bin/bash usernameและหลีกเลี่ยงได้
John T

11
ขอบคุณที่สละเวลาในการอภิปรายคุณแน่นอนว่าถูกต้อง แต่มันทำให้ฉันเห็นผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ด้วยกระสุนที่กำหนดไว้มันทำให้ฉันขี้เกียจและในกรณีที่มีคนไม่คุ้นเคยกับระบบ แฮ็กเกอร์เป็นสายพันธุ์ที่แตกต่างกันหากพวกเขามีกระสุนอยู่บนเครื่องแล้วฉันคิดว่ามันเป็นเกมที่จบแล้ว
Lee Hambley

11
ความคิดเห็นเหล่านี้ครอบคลุมสิ่งที่ฉันหวังว่าจะได้เรียนรู้อย่างแน่นอนขอบคุณ @Beaks && John T
Rixius

220

useradd -r subversion

ต่อman useradd:

-r, --system create a system account

แฟล็ก -r จะสร้างผู้ใช้ระบบ - หนึ่งซึ่งไม่มีรหัสผ่าน, dir บ้านและไม่สามารถเข้าสู่ระบบ


1
คำสั่งนี้จะสร้างกลุ่มสำหรับผู้ใช้ที่เรียกว่าเหมือนกัน ดังนั้นผู้ใช้ "การโค่นล้ม" จะอยู่ในกลุ่ม "การโค่นล้ม" ยอดเยี่ยมสำหรับเมื่อคุณต้องการที่จะทำในภายหลัง "sudo chown -R การโค่นล้ม: การโค่นล้ม / เส้นทาง / ไปยัง / โฟลเดอร์"
s3v1

49
ด้วย -r เพียงอย่างเดียวเรายังสามารถเข้าสู่ระบบได้ เราต้องการ -s / bin / false เพื่อปิดการใช้งานเชลล์ผู้ใช้
c4il

8
@ c4il แต่เพียงผู้เดียวเท่านั้นที่สามารถเข้าสู่ระบบได้คือรูทใช่ไหม ฉันหมายความว่าพวกเขาไม่มีรหัสผ่านดังนั้นฉันคาดว่าจะมีเพียงรูทเท่านั้นที่สามารถเข้าสู่ระบบได้
Camilo Martin

แต่เราสามารถกำหนดรหัสผ่าน anyways passwd subversionผมพยายาม
Shayan

@rynop ฉันจะตรวจสอบว่าผู้ใช้บนเครื่องของฉันเป็นผู้ใช้ระบบได้อย่างไร? มีวิธีใดบ้าง ฉันคิดว่าพวกเขาไม่ได้อยู่ในกลุ่ม sudo'ers สำหรับผู้เริ่ม
Shayan

22

โซลูชันอื่นเพื่อสร้างผู้ใช้ระบบโดยใช้adduser :

adduser --system --no-create-home --group yourusername

คุณสามารถลบ--groupหากคุณไม่ต้องการชื่อกลุ่มของคุณและ--no-create-homeถ้าคุณต้องการที่อยู่อาศัยสำหรับผู้ใช้รายนี้

ตามที่กล่าวถึงโดย py4on ในความคิดเห็นในบางระบบอาจต้องใช้--disabled-loginตัวเลือกเพื่อปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้รายนี้ มันดูเหมือนว่าจะเป็นพฤติกรรมเริ่มต้นภายใต้ Debian แม้ว่า

ระวังว่า ID ตัวเลขของผู้ใช้จะเป็นของบัญชีระบบ คุณสามารถแก้ไข uid ได้โดยใช้--uidตัวเลือก

สุดท้ายโปรดทราบว่าในบางระบบ (เช่น Fedora) adduserนั้นเป็น symlink useraddซึ่งในกรณีนี้คำตอบนี้ไม่ถูกต้อง


3
เพื่อที่อยู่ "ฉันไม่ต้องการให้เป็นผู้ใช้ที่สามารถเข้าสู่ระบบ" เพิ่มธง--disabled-loginเช่นกัน (ก่อนyourusername)
toxefa

@ py4on: แม้ว่าตัวเลือกนี้จะได้รับการบันทึกไว้ใน manpage แต่ดูเหมือนว่าจะเป็นค่าเริ่มต้นภายใต้ Debian เป็นอย่างน้อย
Skippy le Grand Gourou

15

คำตอบที่ชัดเจนที่สุดสำหรับคำถามดั้งเดิมคือการเรียกใช้คำสั่ง:

adduser subversion --shell=/bin/false

และถ้าคุณไม่ต้องการไดเรกทอรีบ้านเช่นกัน:

adduser subversion --shell=/bin/false --no-create-home

หรือถ้าคุณต้องการให้ผู้ใช้ระบบที่ถูกล็อคยิ่งกว่าเดิม (โดยปกติจะไม่สร้างโฮมไดเร็กตอรี่ - มีรายงานว่ามันจะยังคงสร้างโฮมไดเร็กตอรี่ใน linux mint ตามความคิดเห็นด้านล่าง)

adduser subversion --system --group

คำสั่งทั้งหมดเหล่านี้จะสร้างกลุ่มที่มีชื่อเดียวกับผู้ใช้


ในมิ้นท์คำสั่งสุดท้ายสร้างบ้าน dir:Creating home directory '/home/nodejs' ...
jcollum

11

รูปแบบที่ปลอดภัยที่สุดในการทำเช่นนี้คือใช้โดยadduser:

$ adduser -r -s /bin/nologin subversion

หมายเหตุ:ต้องแน่ใจว่าได้รวม-s /sbin/nologinการปิดการใช้งานเชลล์การเข้าสู่ระบบของบัญชี

ยืนยันการตั้งค่า

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

อย่างไรก็ตามไม่มีไดเรกทอรี:

$ ll /home | grep subversion
$

ยืนยันว่าบัญชีนั้นสามารถใช้งานได้:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

การถอด

หากคุณต้องการลบบัญชีนี้:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

และยืนยัน:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$

1
ผู้ใช้ไม่รู้จักตัวเลือก -r ฉันคิดว่าคุณหมายถึง useradd
felwithe

@felwithe ไม่ทุกคำตอบที่ฉันเขียนฉันมักจะทดสอบก่อนโพสต์ ฉันตรวจสอบแล้วและสวิตช์นั้นแสดงบนระบบ CentOS 6.x
slm

นี่คือPastebin ผล ฉันใช้ Ubuntu 16 LTS ฉันไม่ทราบว่าติดตั้งรุ่นใด แต่ฉันไม่เคยนึกเลยว่ามันจะเปลี่ยนไปตามเวลาหรือระบบเป็นระบบ จากนั้นฉันลองด้วยแฟล็ก --system แทนซึ่งสร้าง homedir ให้กับผู้ใช้ (ฉันไม่ต้องการ) ในที่สุดฉันเพิ่งทำกับ useradd แทน adduser และทำงานได้ตามแผนที่วางไว้ ดังนั้นฉันแค่คิดว่าคุณพิมพ์ผิดว่าเป็นผู้ใช้เมื่อมันควรจะเป็น useradd
felwithe

@felwithe ใช่ฉันไม่ได้สงสัยคุณเพียงแค่แจ้งให้คุณทราบว่าฉันพยายาม 8-) ฉันเป็น mod ในเว็บไซต์ Unix และ Linux และ cmds เหล่านี้มีความแตกต่างกันอย่างฉับพลัน b / w OP กล่าวถึง RHEL ในคำถามด้วยเหตุนี้ฉันจึงตอบอย่างนั้น แต่พวกเขาไม่ได้ติดแท็กให้เป็นหมวกสีแดงซึ่งเป็นส่วนหนึ่งของความสับสนในคำถาม & ตอบ IMO นี้
slm

1

บนเครื่อง CentOS 7

  • หากผู้ใช้ไม่อยู่:
    useradd testuser --shell=/sbin/nologin

  • หากคุณต้องการแก้ไขผู้ใช้ที่มีอยู่:
    usermod testuser --shell=/sbin/nologin


0

เริ่มต้นด้วยการสร้างรหัสผ่านที่เข้ารหัสสำหรับผู้ใช้ที่มีความยาวสูงสุด 8 อักขระโดยทำ:

openssl passwd -crypt new_password_less_than_eight_chars_long

จากนั้นคุณ:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username

0

ใน Debian คุณสามารถสร้างผู้ใช้ระบบ (ไม่มีโฮมไดเร็กตอรี่) และล็อกอินเชลล์:

useradd --system --shell=/usr/sbin/nologin <username>

หากnologinโปรแกรมของคุณอยู่/sbin/nologinโปรดเปลี่ยนให้สอดคล้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.