#《快乐的 Linux 命令行》

每个命令还是要给个例子,我tee命令虽然知道是怎么工作的,但是用的时候还是自然而然的加了一个>,错了= =。

#su

1
su [-[l]] [user]

如果包含-l选项,那么会为指定用户启动一个需要登录的shell,如果不指定用户,那么就假定是超级用户

-l可以缩写为-

1
2
3
deploy@iZwz96txzmeg2f5wu9eqigZ:~$ su -
Password:
root@iZwz96txzmeg2f5wu9eqigZ:~#

也可以只执行单个命令,而不是启动一个新的可交互的 shell:

1
su -c 'command'

单引号保证了不会有任何展开。

1
2
3
4
5
6
7
8
9
$ su -c 'ls -l /root/*'
Password:
-rw------- 1 root root 200604 Sep 17 21:43 /root/nohup.out
-rw-r--r-- 1 root root 22 Sep 18 12:24 /root/py.log
-rw-r--r-- 1 root root 1579 Sep 9 16:14 /root/sync.log

/root/go:
total 4
drwxr-xr-x 3 root root 4096 Sep 9 16:16 src

#sudo

管理员能够配置sudo命令,从而允许一个普通用户以不同的身份(通常是超级用户),通过一种非常可控的方式来执行命令。尤其是,只有一个用户可以执行一个或多个特殊命令时。

sudo命令不要求超级用户的密码,而是使用自己的密码来认证。

susudo 之间的一个重要区别是 sudo 不会重新启动一个 shell,也不会加载另一个用户的 shell 运行环境。这意味者命令不必用单引号引起来。

几年前,大多数的 Linux 发行版都依赖于 su 命令,来达到目的。su 命令不需要 sudo 命令所要求的配置,su 命令拥有一个 root 帐号,是 Unix 中的传统。但这会引起问题。所有用户会企图以 root 用户帐号来操纵系统。事实上,一些用户专门以 root 用户帐号来操作系统,因为这样做,的确消除了所有那些讨厌的“权限被拒绝” 的消息。你这样做就会使得 Linux 系统的安全性能被降低到和 Windows 系统相同 的级别。不是一个好主意。
当引进 Ubuntu 的时候,它的创作者们采取了不同的策略。默认情况下,Ubuntu 不允许用户登录到 root 帐号(因为不能为 root 帐号设置密码),而是使用 sudo 命 令授予普通用户超级用户权限。通过 sudo 命令,最初的用户可以拥有超级用户权 限,也可以授予随后的用户帐号相似的权力。

#chown

chown命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。

1
chown [owner][:[group]] file...

bob: 把文件所有者从当前属主更改为用户 bob。
bob:users: 把文件所有者改为用户 bob,文件用户组改为用户组 users。
:admins: 把文件用户组改为组 admins,文件所有者不变。
bob:: 文件所有者改为用户 bob,文件用户组改为用户 bob 登录 系统时所属的用户组。

在大多数的配置中,sudo 命令会相信你几分钟,直到计时结束。

#chgrp

在旧版 Unix 系统中,chown 命令只能更改文件所有权,而不是用户组所有权。为了达到目的, 使用一个独立的命令,chgrp 来完成。除了限制多一点之外,chgrp 命令与 chown 命令使用起 来很相似。

#passwd

设置或更改用户密码:

1
passwd [user]