0%

Linux的sudo命令

Linux sudo命令

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

如果希望可以执行这个命令,需要管理员在文件 /etc/sudoers 中增加权限即可。

官方的定义为:

execute a command as another user

语法

1
$ sudo [ option ] command

参数说明

  • -l--list:显示出自己(执行 sudo 的使用者)的权限
  • -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
  • -b 将要执行的指令放在后台执行
  • -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
  • -u username/uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(uid 为该 username 的使用者号码)
  • -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
  • -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root
  • command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

没有sudo权限的用户

如果没有sudo权限,在执行命令的时候还有下面👇的输出:

1
2
3
$ sudo ls
[sudo] password for username:
username is not in the sudoers file. This incident will be reported.

指定用户执行命令

这个的应用场景为,其他用户在登录,而你具有sudo权限,测试可以通过制定用户名来操作。

1
$ sudo -u username ls -l

列出目前sudo的权限

如果不清楚,可以执行那些命令,可以通过参数-l来查看,主要看在sudoer里面的修改。

1
2
3
4
5
6
7
8
9
10
11
$ sudo -l
Password:
Matching Defaults entries for user on localhost:
!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY
HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User user may run the following commands on localhost:
(ALL) ALL

以root权限执行上一条命令

使用sudo快速统计家目录的使用情况

1
2
3
4
5
6
7
$ sudo sh -c "cd /home ; du -s * | sort -rn "
15013524344 user1
1170974156 user2
139238772 user3
1382673532 user4
41071068 user5
3523056 user6

炫技 - 快速执行上一条命令

第一种方法:在终端输入两个感叹号,然后回车就可以快速地执行上一条命令了。

1
$ !!
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道