Linux操作系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.7 与用户身份和位置相关的其他命令

在UNIX/Linux系统中还有一些命令可以确定或改变用户的位置与身份,这些命令是who、whoami、tty、id、su和wall等。

4.7.1 显示已登录用户的信息(who)

1.功能与用法

who命令用于显示系统中已登录用户的信息。其用法为:

                who arg1 arg2
                who [options] [FILE]

当以第一种格式使用who命令时,相当于who am i,总是显示命令使用者的信息。在文件/var/log/wtmp和/var/run/utmp中记录系统运行过程中用户登录和工作信息,who命令可以使用它。若不指定FILE文件,则who命令使用这两个文件。

2.参数说明

who命令的常用参数如表4-4所示。

表4-4 who命令的常用参数

3.示例

                #who                 #显示所有正在系统中工作的信息
                #who am i             #显示操作者自己的信息
                #who-r               #显示系统当前的运行级别

4.7.2 显示与用户和组相关的身份信息(id)

1.功能与用法

id命令用于显示用户的uid、gid及相关信息。其用法为:

                id [options] [username]

2.参数说明

id命令的常用参数如表4-5所示。

表4-5 id命令的常用参数

3.示例

                #id-G-n          #以组名方式显示自己的gid信息
                #id ftp             #显示指定用户(ftp)的id信息

4.7.3 显示使用者的用户名(whoami)

whoami命令用于显示与当前有效id相关的用户名,也就是显示使用者自己的用户名,功能相当于id -un。

4.7.4 确定用户所使用的终端设备(tty)

tty命令用于显示用户自己使用的终端设备,以确定自己的位置。

4.7.5 不退出系统而将自己切换成其他用户(su)

1.功能与用法

su(supper user)命令的功能是在使用者不退出系统的情况下以其他用户的身份启动一个shell,以新用户的身份工作。在运行新shell的过程中,用户自己的有效uid和有效gid变为新用户的uid和gid。su命令的用法为:

                su  [options][-][newuser[args]]

2.参数说明

su命令的常用参数如表4-6所示。

表4-6 su命令的常用参数

若不指定用户名,则默认为root。当以新用户身份工作完毕后,可以通过签退的办法返回到原来的用户。除非由root向其他用户切换,否则都要进行密码验证。

以su newuser方式切换用户,将使用原先的环境,这就形成了新用户使用老环境的问题,有时可能不配套。而以su - newuser切换的方式,将使用新用户newuser的新环境,尤如退出后重新登录一样。

如果要在批处理程序内以另一个新用户newuser的身份直接执行某程序command,可使用下列形式:

                su-newuser  -c"command args"

或su - newuser --command="command args"

在操作系统启动期间,常以这种方法启动某服务程序。

3.示例

                #su newuser                      #切换到用户newuser后使用原环境工作
                #su-newuser                     #切换到用户newuser后使用新用户环境工作
                #su-newuser-c"command args"     #以newuser身份执行"command args"
                # #以postgres身份登录,使用/bin/sh执行命令/usr/bin/initdb
                # su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=/var/lib/pgsql > /dev/null 2>&1"

4.7.6 向系统中已登录的所有用户发信息(wall)

wall(write to all)命令的功能是向注册到系统中工作的所有用户发送广播信息,所发信息将被显示在每个用户的终端屏幕上。wall命令的用法为:

                wall [ message ]

wall命令可以将其命令行参数的内容作为信息发送。当不带参数运行时,wall命令将使用标准输入,用户在输入完毕时应按^D结束。系统允许发送的信息最多为20 行。当用户使用已经准备好的文件内容作为信息发送时,可以使用输入重定向。

wall命令的工作可能会受终端接收信息状态的影响(参见mesg命令),接收信息被禁止的用户终端将不能收到广播信息。但是不论如何,当超级用户使用wall命令时,每个终端都将收到广播信息,同名用户也可以收到同名用户发送的信息。

wall命令的广播信息可能会扰乱接收者的工作屏幕,甚至当接收的终端正处在透明打印时,收到的广播信息将会被发送到终端打印机,从而造成真正的干扰。其他类型的广播或向指定终端的重定向输出信息也会造成类似干扰,使用时请小心。