文章目录
本文参考和借鉴:
Linux 用户管理
1. Linux用户管理要点
- 创建用户-使用:
useradd
- 删除用户-使用:
userdel
- 修改用户信息-使用:
usermod
- 设置用户认证信息-使用:
passwd
- 创建用户组-使用:
groupadd
- 删除用户组-使用:
groupdel
- 修改用户组信息-使用:
groupmod
- 切换用户组-使用:
newgrp
- 切换用户-使用:
su
- 当前用户想执行没有权限执行的命令时,使用其他用户身份去执行 - 使用
sudo
2. Linux 系统用户账号管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用
2.1 useradd
useradd 命令用于 Linux 中创建的新的系统用户。useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。
参考:http://man.linuxde.net/useradd
useradd 选项 用户名
参数说明:
- 选项
-
- c :comment 指定一段注释性描述
- -d :目录,指定用户主目录,如果此目录不存在,则使用-m选项,可以创建主目录
- -g :用户组 指定用户所属的用户组
- -G:用户组,用户组指定用户所属的附加组
- -s :shell文件,指定用户的登录shell
- -u :用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-
- 用户名
- 指定新账号的登录号
useradd -d /home/sam -m sam
此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。
2.2 userdel
userdel 命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。
userdel 选项 用户名
userdel sam # 删除用户sam,但不删除其家目录及文件
userdel -r sam # 删除用户sam ,其 home 目录及文件一并删除;
2.3 usermod
usermod 命令用于修改用户的基本信息(如用户名,主目录,用户组,登录shell等)。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在 server 上更动相关的 NIS 设定
参考:http://man.linuxde.net/usermod
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名
usermod -s /bin/ksh/ -d home/z -g developer sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
2.4 passwd :用户口令管理
passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
参考:http://man.linuxde.net/passwd
# 如果是普通用户执行 passwd 只能修改自己的密码。
# 如果新建用户后,要为新用户创建密码,则用 passwd 用户名,注意要以 root 用户的权限来创建。
$ passwd sam # 更改或创建sam用户的密码;
Changing password for usersam.
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 再输入一次;
passwd: all authentication tokens updated successfully. # 成功;
# 普通用户如果想更改自己的密码,直接运行 passwd 即可,比如当前操作的用户是 conda。
# 比如我们让某个用户不能修改密码,可以用`-l`选项来锁定,只有root用户才能修改:
$ passwd -l conda # 锁定用户conda 不能更改密码;
Locking password for user linuxde.
passwd: Success # 锁定成功;
$ su conda # 通过su切换到conda用户;
$ passwd # linuxde来更改密码;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password: # 输入linuxde的当前密码;
passwd: Authentication token manipulation error # 失败,不能更改密码;
$ passwd -d conda # 清除conda用户密码;
Removing password for user linuxde.
passwd: Success # 清除成功;
$ passwd -S conda # 查询conda用户密码状态;
Empty password. # 空密码,也就是没有密码;
3. 用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
3.1 groupadd
groupadd 命令用于创建一个新的用户组,新用户组的信息将被添加到系统文件中。
参考:http://man.linuxde.net/groupadd
groupadd 选项 用户组
可以使用的选项有:
- -g :GID指定新用户组的组标识号(GID)
- -o: 一般与-g 选项同时使用,标识新用户组的GID可以与系统已有用户组的GID相同。
# 建立一个新组,并设置组 ID 加入系统
groupadd -g 341 jsdigname
执行cat /etc/group
就可以看到添加的用户组和GID
3.2 groupdel
groupdel 命令用于删除指定的用户组,本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
参考:http://man.linuxde.net/groupdel
gourpdel 选项 用户组
groupadel jsdigname # 删除这个用户组
3.3 groupmod
groupmod 命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用 groupmod 指令来完成这项工作。
参考:http://man.linuxde.net/groupmo
groupmod 选项 用户组
常用的选项有:
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
groupmod -g 102 gorup # 此命令将组group的组标识号修改为102
groupmod -g 10000 -n group3 gourp2 #此命令将组group2的标识号改为10000,组名修改为group3
3.4 newgrp
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成
4 sudo
sudo 命令用来以其他身份来执行命令,预设的身份为 root。在 /etc/sudoers 中设置了可执行 sudo 指令的用户。若其未经授权的用户企图使用 sudo,则会发出警告的邮件给管理员。用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码。
参考:http://man.linuxde.net/sudo
指定用户执行命令
$ sudo -u userb ls -l
# 列出目前的权限
$ sudo -l
# 显示sudo设置
$ sudo -L
2.9.1 给普通用户授权sudo
假设要给普通用户conda
配置 sudo
权限:
/etc/sudoers
文件存放了sudo
的相关用户,但是默认是没有写权限的,所以需要设为可写:chmod u+w /etc/sudoers
- 在该文件中添加
mary ALL=(ALL) ALL
,保存并退出,让conda
具有sudo
的所有权限 - 再将
/etc/sudoers
的权限恢复到默认状态:chmod u-w /etc/sudoers
2.9.2 免密码授权 sudo
与给普通用户授权 sudo 类似,区别仅在于第 2 步:mary ALL=(ALL) NOPASSWD: ALL
5 su
su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
参考:http://man.linuxde.net/su
# 变更帐号为 root 并在执行 ls 指令后退出变回原使用者:
$ su -c ls root
# 变更帐号为 root 并传入`-f`选项给新执行的 shell:
$ su root -f
# 变更帐号为 conda并改变工作目录至 test 的家目录:
$ su - conda
本文参考和借鉴: