1  su 命令

产生原因:  因用户之间,有时候要相互切换,为了方便,就产生了su命令。

a.  root  用户切换到普通用户:

su  username  这样子就可以切换,但切换后,目录还在原来之前的目录

如:

root@nfyx:~# pwd
/root
root@nfyx:~# su nfyx
nfyx@nfyx:/root$ pwd
/root
nfyx@nfyx:/root$

若想要连着家目录一起改变:

su -  username   这样子,就会切换到自己的家目录

root@nfyx:~# pwd
/root
root@nfyx:~# su - nfyx
nfyx@nfyx:~$ pwd
/home/nfyx
nfyx@nfyx:~$


b.    普通用户切换到root用户:

就直接输入su 命令(同样若不加- ,那么目录也不会被切换),但,会要求你输入密码

如:

nfyx@nfyx:~$ id
uid=1000(nfyx) gid=1000(nfyx) 组=1000(nfyx),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
nfyx@nfyx:~$ su
密码:
root@nfyx:/home/nfyx#

root@nfyx:/home/nfyx# pwd
/home/nfyx
root@nfyx:/home/nfyx#

若加-

nfyx@nfyx:~$ su -
密码:
root@nfyx:~# pwd
/root
root@nfyx:~#

简单总结: su 普通用户到root用户需要输入密码,反之则不会要求输入密码,加-和不加-, 则表示家目录是否切换。

提示:普通用户之间的相互切换,也需要输入对应用户的密码。


c. 其次,它还可以,以指定用户创建文件或目录

       su -   -c  "touch  filename "   username 

   (su   - (家目录)   -c  (创建)    "创建文件或目录的命令"   username(表示以哪个用户来创建))

   su -   -c 'mkdir dir name'  username


root@nfyx:~# pwd
/root

root@nfyx:~# su - -c 'mkdir aaa' nfyx
root@nfyx:~# pwd

/root
root@nfyx:~# su - -c 'touch bbb.txt' nfyx
root@nfyx:~# ls -l /home/nfyx/
总用量 204
drwxrwxr-x  2 nfyx nfyx   4096 11月  2 09:48 aaa
-rw-rw-r--  1 nfyx nfyx      0 11月  2 09:48 bbb.txt
-rwxr-xr-x  1 nfyx nfyx 151024 10月 25 13:20 cp
-rw-r--r--  1 nfyx nfyx   8980 9月  25 17:34 examples.desktop
drwxrwxrwx  1 root root   4096 10月 30 09:58 sddata

附加:

1 当一个用户不存在家目录时,可以为其创建家目录,并改其权限

root@nfyx:/home# mkdir username
root@nfyx:/home# chown username:username username

2 还需要加入默认的配置文件:

默认配置文件的原始目录在:

root@nfyx:/home# ll /etc/skel/
总用量 28
drwxr-xr-x.  2 root root  4096 8月  29 18:14 .
drwxr-xr-x. 99 root root 12288 11月  1 10:35 ..
-rw-r--r--   1 root root    18 8月   3 2016 .bash_logout
-rw-r--r--   1 root root   193 8月   3 2016 .bash_profile
-rw-r--r--   1 root root   231 8月   3 2016 .bashr
c
3  把默认配制文件给复件过去,并改其所有者和所属组

root@nfyx:/home# cp /etc/skel/.bash*  /home/username/
root@nfyx:/home# chown -R username:username /home/username/

这样子切换之后,用户间的切换就可以正常显示了。


sudo

visudo  修改相关的配制命令

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
nfyx      ALL=(ALL)     NOPASSWD:/bin/ls,  /bin/vm ,  /bin/useradd

相关的参考资料较上,等之后,了解更多了,再补上