ความแตกต่างระหว่าง sudo su - postgres และ sudo -u postgres คืออะไร


35

การพิสูจน์ตัวตนผู้ใช้ PostgreSQL บนซ็อกเก็ต unix โดยค่าเริ่มต้นโดยผู้ใช้ unix จะต้องเหมือนกับผู้ใช้ PostgreSQL ดังนั้นคนมักจะใช้suหรือsudoกลายเป็นpostgressuperuser

ฉันมักจะเห็นคนใช้โครงสร้างเช่น:

sudo su - postgres

ค่อนข้างมากกว่า

sudo -u postgres -i

และฉันสงสัยว่าทำไม ฉันได้เห็น:

sudo su - postgres -c psql

แทน

sudo -u postgres psql

โดยไม่ต้องนำรุ่นจะทำให้ความรู้สึกบางอย่างถ้าคุณอยู่บนแพลตฟอร์มเก่าโดยไม่ต้อง แต่ทำไมคุณจะใช้ยูนิกซ์หรือลีนุกซ์ที่น้อยกว่ายุคก่อนประวัติศาสตร์?sudosusudosudo su


คำตอบ:


39

ลืม sudo su

ไม่มีประโยชน์ที่จะใช้ไม่เป็นมันเป็นนิสัยสมัยจากเมื่อมีคนถูกนำมาใช้กับการใช้sudo su suผู้คนเริ่มตรึงsudoไว้ข้างหน้าเมื่อ Linux distros หยุดตั้งรหัสผ่านรูทและทำsudoวิธีเดียวในการเข้าถึงบัญชีรูท sudo suแทนที่จะเปลี่ยนนิสัยของพวกเขาพวกเขาเพียงแค่ใช้ (ฉันเป็นหนึ่งในนั้นจนกระทั่งเมื่อเร็ว ๆ นี้เมื่อใช้กล่องที่มีการกำหนดค่าsudoersบังคับให้ฉันเปลี่ยนนิสัยของฉัน)

ใช้ sudo -u

สำหรับเปลือกเข้าสู่ระบบที่เป็นที่นิยมsudo -u postgres -i sudo su - postgresไม่ต้องการให้ผู้ใช้มีสิทธิ์เข้าถึงรู/etc/sudoersทพวกเขาต้องการเพียงสิทธิ์ในการเป็นผู้ใช้postgresเท่านั้น นอกจากนี้ยังช่วยให้คุณบังคับใช้การควบคุมการเข้าถึงได้ดีขึ้น

สำหรับการดำเนินการคำสั่ง

sudo -u postgres psql -c "SELECT 1"

ดีกว่าทางเลือก:

sudo su - postgres -c "psql -c \"SELECT 1\""

ในที่ที่คุณไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศคู่และตัวบ่งชี้เชลล์อื่น ๆ รวมถึงข้อดีด้านความปลอดภัยอื่น ๆ ที่ไม่จำเป็นต้องรูท คุณอาจเผลอเขียน:

sudo su - postgres -c psql -c "SELECT 1"

บางครั้งซึ่งทำงานไม่ถูกต้อง

ในที่สุดก็เป็นวิธีที่ง่ายต่อตัวแปรสภาพแวดล้อมชุดผ่านทางsudoเช่น

sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster

suกว่าผ่านทาง (ที่นี่การPATHตั้งค่าจำเป็นต้องมีเพื่อให้initdbสามารถค้นหาpostgresปฏิบัติการที่ถูกต้อง)

ดังนั้น. ลืมsuคำสั่งที่มีอยู่ คุณไม่ต้องการมันอีกต่อไป เพื่อแยกนิสัยให้ใช้นามแฝงกับสิ่งที่จะพิมพ์ข้อผิดพลาด (สคริปต์การตั้งค่าแพคเกจเริ่มต้นและสคริปต์บางตัวยังคงใช้งานอยู่suดังนั้นคุณจึงไม่สามารถลบได้)

ดูสิ่งนี้ด้วย:

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