हाँ। यहाँ है --help
:
$ su --help
Usage: su [options] [LOGIN]
Options:
-c, --command COMMAND pass COMMAND to the invoked shell
-h, --help display this help message and exit
-, -l, --login make the shell a login shell
-m, -p,
--preserve-environment do not reset environment variables, and
keep the same shell
-s, --shell SHELL use SHELL instead of the default in passwd
और कुछ परीक्षण (मैं खाते के sudo
लिए पासवर्ड नहीं जानता के रूप में इस्तेमाल किया nobody
)
$ sudo su -c whoami nobody
[sudo] password for oli:
nobody
जब आपका आदेश तर्क देता है तो आपको इसे उद्धृत करने की आवश्यकता होती है। यदि आप नहीं करते हैं, तो अजीब चीजें घटित होंगी। मैं यहाँ हूँ - रूट - पूर्ण कमांड को उद्धृत किए बिना / होम / ओली (ओली के रूप में) में एक निर्देशिका बनाने की कोशिश कर रहा हूँ :
# su -c mkdir /home/oli/java oli
No passwd entry for user '/home/oli/java'
इसे केवल ध्वज mkdir
के मान के रूप में पढ़ा जाता है -c
और यह /home/oli/java
उपयोगकर्ता नाम के रूप में उपयोग करने का प्रयास कर रहा है । यदि हम इसे उद्धृत करते हैं, तो यह काम करता है:
# su -c "mkdir /home/oli/java" oli
# stat /home/oli/java
File: ‘/home/oli/java’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 811h/2065d Inode: 5817025 Links: 2
Access: (0775/drwxrwxr-x) Uid: ( 1000/ oli) Gid: ( 1000/ oli)
Access: 2016-02-16 10:49:15.467375905 +0000
Modify: 2016-02-16 10:49:15.467375905 +0000
Change: 2016-02-16 10:49:15.467375905 +0000
Birth: -
sudo cat /etc/passwd | grep user-abc
। यदि आप ऐसा कुछ देखते हैं:user-abc:x:994:994::/home/user-abc:/bin/false
तो यह काम नहीं करेगा। ऐसा इसलिए है क्योंकि अंतिम भाग "/bin/false
" का अर्थ है कि उस उपयोगकर्ता के लिए कोई शेल नहीं है।