ใช้ root เพื่อ mkdir ในโฮมไดเร็กตอรี่ของผู้ใช้รายอื่น


27

มีเวลาเล็กน้อยในการพยายามสร้างโฟลเดอร์ภายใต้/home/devuser1/pubic_htmlโฟลเดอร์ของผู้ใช้รายอื่น ฉันพยายามหลีกเลี่ยงการใช้sudoและมองหาทางเลือกอื่น สิทธิ์ในโฟลเดอร์ดังกล่าวอ่านเป็น:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

อีกวิธีหนึ่งสมมุติว่าฉันใช้ส่วนsudoนำหน้าสิ่งที่เป็นนัยจะเป็นอย่างไร ฉันอ่านแล้วว่ามันเป็นวิธีปฏิบัติที่ไม่ดีที่จะใช้sudoสร้างโฟลเดอร์ หลังจากสร้างโฟลเดอร์ใหม่ฉันยังคงเปลี่ยนความเป็นเจ้าของเป็นผู้ใช้ที่สงสัย ตัวอย่าง:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost

คำตอบ:


31

ด้วยinstallคุณสามารถสร้างไดเรกทอรีที่มีเจ้าของกลุ่มและโหมดเฉพาะ:

install -d -o <user> -g <group> -m <mode> <path>

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] ทำงานได้ดี

public_htmlจากสิ่งที่ฉันสามารถดูสิทธิ์และความเป็นเจ้าของจะเหมือนกันถ้าผมจะเข้าสู่ระบบในฐานะผู้ใช้เดียวกันและสร้างโฟลเดอร์ที่อยู่ภายใต้

คุณยังสามารถโทร su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
เมื่อคุณเรียกsudo -u USERNAME mkdir DIRNAMEคุณจะดำเนินการคำสั่งที่ผู้ใช้mkdir USERNAMEสิ่งนี้ไม่เท่ากับการเข้าสู่ระบบUSERNAMEเนื่องจากการเข้าสู่ระบบยังหมายถึงการตั้งค่าตัวแปรสภาพแวดล้อมและอื่น ๆ แต่เป็นส่วนที่สำคัญคือการดำเนินการกระบวนการในฐานะผู้ใช้เฉพาะ
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

1
นอกจากนี้ผู้ใช้นั้นอาจไม่ได้รับอนุญาต
mahemoff

1

รับสิทธิ์เหล่านั้นเฉพาะเจ้าของไดเรกทอรีหรือผู้ใช้ขั้นสูงสามารถสร้างไดเรกทอรีย่อย

วิธีเดียวที่คุณสามารถหลีกเลี่ยงการใช้สิทธิ์พิเศษในการสร้างโฟลเดอร์คือการเปลี่ยนความเป็นเจ้าของให้กับตัวเอง (ด้วยsudo) สร้างไดเรกทอรีย่อยและคืนความเป็นเจ้าของให้กับเจ้าของในที่สุด แต่ดูเหมือนจะไม่เป็นทางออกที่ดีสำหรับฉัน


แท้จริงแล้วนี่คือสิ่งที่ยาก นี่เป็นคำถามที่โง่ แต่ตัวเลือกของฉันคืออะไร
maGz

สิ่งที่เกี่ยวกับ (เป็น root) sudo -u devuser1 mkdir /home/devuser1/public_html/testเรียกใช้คำสั่งในฐานะผู้ใช้ที่ มันไม่เหมือนกับการสร้างโฟลเดอร์ด้วยsudoใช่มั้ย ls -alเผย:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz

บางทีฉันอาจไร้เดียงสา แต่ฉันไม่เห็นความชั่วร้ายใด ๆ ในการสร้างโฟลเดอร์ด้วยsudoตราบใดที่คุณเปลี่ยนความเป็นเจ้าของหลังจากนั้น
RSFalcon7

จากสิ่งที่lsแสดงให้เห็นในเนื้อหาของผู้ใช้public_htmlจะปรากฏราวกับว่าไม่จำเป็นต้องเปลี่ยนความเป็นเจ้าของ
maGz

ฉันคิดว่าฉันก็ไร้เดียงสาที่คิดเช่นนี้ด้วย: ฉันไม่ได้สร้างโฟลเดอร์suแทน แต่ฉันใช้มันเพื่อตรวจสอบสิทธิ์ตัวเองในฐานะผู้ใช้ที่กำลังจะสร้างโฟลเดอร์ ...
maGz

0

ฉันพยายามทำmkdir -p /srv/postgres/data/mydirแต่เป็นเพราะ

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv มีเจ้าของ root

ไม่ใช่install -d -o <user> -g <group> -m <mode> <path> @ user2313838

ไม่sudo -u postgres mkdir -p /srv/postgres/data/mydirทำงาน@maGz

ดังนั้นฉันจะแบ่งมันออกเป็นสองคำสั่ง:

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