查看所有用户/组

cat /etc/passwd
cat /etc/group

添加用户

useradd 选项 用户名

-d:自定义用户的家目录,即指定用户登录默认的家目录
-e:指定帐号的有效期限
-g:指定用户所属的主组
-G:指定用户所属的附加群组
-m:自动建立用户的登入目录,系统默认会创建一个和用户名一样的家目录(默认选项)
-M:不创建用户家目录
-s:指定用户登入后所使用的shell是哪种shell
-u:指定用户ID号,默认系统会自动分配一个ID给用户
-r:指定该用户为系统账户
# 简单的添加用户,会自动创建home目录
useradd sqrtcat
# 自定义 home 目录
useradd -d /home/sqrtcat_home sqrtcat
# 指定用户组 wheel 为 sudoer 用户组
useradd -m -g wheel sqrtcat
# 禁止一切登录的账户
useradd -M -s /bin/false nginx
# 禁止ssh登录但可以ftp/sftp的账户
useradd -M -s /sbin/nologin ftp_user

删除用户

# 删除用户 但保留了home目录等相关信息
userdel sqrtcat

# 此命令执行后对应这些文件里与被删除用户相关信息也一并删除
# /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/home、/var/spool/mail
userdel -r sqrtcat

设置/更新用户密码

# 更改当前用户密码
passwd
# 更改指定用户密码
passwd sqrtcat

更改用户属性

usermod 选项 用户名

# 更改用户所属主组
usermod -g wheel sqrtcat
# 更改用户的附加组(注意会覆盖现有的附加组)
usermod -G wheel sqrtcat
# 为用户追加附加组(会在现有的附加组上继续追加)
usermod -aG wheel sqrtcat

为用户增加sudo权限

root 查看 /etc/sudoers

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

# 这里表明 wheel group 中的用户 可以使用密码获取 root 权限
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL 

# 这里表明 wheel group 中的用户 不使用密码就可以获取 root 权限
## Same thing without a password
# %wheel    ALL=(ALL)    NOPASSWD: ALL

所以想要用户活动 sudo 权限,我们只需将其加入对用的用户组即可

# 将 sqrtcat 加入 wheel sudoer用户组 使其可以使用自己的密码执行 sudo 命令
usermod -aG wheel sqrtcat

sqrtcat 用户

# 切换至 root 不载入root用户的环境变量
sudo su root
# 切换至 root 载入root用户的环境变量
sudo su - root

查看在线用户

# 当前登入了服务器的在线用户
users

用户组相关

usermod -g 主组名 用户名 #更改主组
usermod -G 附加组名 用户名 #更改附加组
usermod -aG 附加组名 用户名 #追加附加组
gpasswd -a 用户名 附加组名 #增加附加组
gpasswd -d 用户名 附加组名 #退出附加组

# 查看当前用户的所属组
groups

# 查看指定用户的所属组
groups sqrtcat

# 增加用户组
groupadd foo

# 删除用户组(有用户以此组作为主组时不可删除,附加组时可以删除)
groupdel foo

# sqrtcat 退出附加组 wheel
gpasswd -d sqrtcat wheel
# 正在将用户“sqrtcat”从“wheel”组中删除

# sqrtcat 加入附加组 wheel
gpasswd -a sqrtcat wheel
# 正在将用户“sqrtcat”加入到“wheel”组中

# 如果想要更改用户的主组,必须使用 usermod -g

删除用户组时,要保证无用户以此组为主组(-g),但可以有做为附加组(-G)的用户

# 会自动创建 foo组 并作为 foo用户 的主组
useradd foo
groups foo
foo: foo

# 无法删除 有用户以 foo 为主组
groupdel foo

# 更改 foo用户 的主组为 bar
groupadd bar
usermod -g bar foo
groups foo
foo: bar

# foo组 作为附加组
usermod -G foo foo
groups foo
foo: bar foo

# 可以成功删除 foo组
groupdel foo

查看用户组下的用户

查看用户组 foo 下有哪些用户

getent group foo

sudo su / su 的区别

  1. 用户如果是 sudoer,那么执行 sudo su - root 时只需要输入自己的密码,就可以切换至 root 用户。当然,切换至 其他用户 时也是输入 自己的密码。。
  2. 用户如果不是 sudoer,则无权限执行 sudo 命令,只能通过 su - root 来尝试切换至 root 用户,且要求输入 root 用户密码。当然,切换至 其他用户 时也要输入 其他用户的密码

切换至某用户并使用指定shell执行命令

切换至 foo 用户,并使用 php 作为执行 shell,-- 后面追加执行的命令,然后退出。

su -s "$(which php)" foo -- -r "echo 'hello foo';"

相当于

su foo
$(which php) -r "echo 'hello foo'"
exit

big_cat
1.7k 声望130 粉丝

规范至上