用户和组管理
用户组管理
用户组管理
1. 用户组文件 /etc/group
[root@localhost ~]# tail -n3 /etc/group //查看/etc/group下最后三行的数据
testgroup❌1001:
user2❌1002:
grp1❌1003:
说明: 输出的结果与 /etc/passwd 的前三行相同。请参照前一张的博文 /etc/passwd 的前三行。
2. 用户备份说明
- 输入完命令,别回车,用 Tab 补全,会显示以下效果
[root@localhost ~]# ls /etc/shadow //密码配置文件
shadow shadow-
[root@localhost ~]# ls /etc/passwd //用户配置文件
passwd passwd-
[root@localhost ~]# ls /etc/group //用户组文件
group group-
[root@localhost ~]# ls /etc/gshadow //用户组密码配置文件
gshadow gshadow-
说明: 这里的 group-,passwd-, 代表该文件的备份文件,如果删除了用户或该文件,用其恢复。
3. 新增和删除用户组
-
命令语法
groupadd [-g GID] groupname -
命令描述
新增用户组 -
命令选项
-g 自定义 gid。如果不加 -g 选项,则按照系统默认的 gid 创建组。跟 uid 一样,gid 也是从 1000 开始的。
#### 命令示例
- 创建用户组
[root@localhost ~]# groupadd grpp1 //创建用户组
[root@localhost ~]# tail -n1 /etc/group //查看用户组文件(group)的最后一行。(默认情况下每创建用户组,会在group文件的最后一行添加一行数据)。
grpp1❌1004: //参照/etc/passwd的前三行解释
- 在创建用户组的同时,自定义 gid(gid 必须在 1000 以上,1000 以内的是系统用户组)
[root@localhost ~]# groupadd -g 6666 grpp2
[root@localhost ~]# tail -n1 /etc/group
grpp2❌6666:
- 删除用户组(groupdel)
[root@localhost ~]# groupdel grpp2
[root@localhost ~]# tail -n3 /etc/group
user2❌1002:
grp1❌1003:
grpp1❌1004:
从代码中可以看出,grpp2 已经被删除了。
注意: 当我们删除用户组的时候,前提是用户组里没有用户。
用户管理
1. 增加用户
-
命令语法
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] -
命令描述
添加用户 -
命令选项
-u 表示自定义 UID。
-g 表示使新增用户属于已经存在的某个组,后面可以跟组 id,也可以跟组名。
-d 表示自定义用户的家目录
-M 表示不建议家目录。
-s 表示自定义 shell。
#### 命令示例
- 创建用户
[root@localhost ~]# tail -n2 /etc/passwd
user2❌1001:1002::/home/user2:/bin/bash
dd1❌1002:1004::/home/dd1:/bin/bash
- 创建用户的同时自定义 uid, 自定义用户组(grp1)
[root@localhost ~]# tail -n 3 /etc/group
user2❌1002:
grp1❌1003:
dd1❌1004:
[root@localhost ~]# useradd -u 1005 -g grp1 user4 //-u 1005 指定uid为1005,-g grp1 指定us er4用户属于grp1用户组,user4 用户
[root@localhost ~]# tail -n3 /etc/passwd
user2❌1001:1002::/home/user2:/bin/bash
dd1❌1002:1004::/home/dd1:/bin/bash
user4❌1005:1003::/home/user4:/bin/bash //用户user4和grp1用户组的gid相同。
- 添加用户的同时,指定 uid(-u), 指定用户组 (-g),指定家目录(-d),指定 shell(-s)。
[root@localhost ~]# ls /home
dd1 user1 user2 user4
[root@localhost ~]# useradd -u 1010 -g grp1 -d /home/dd1 -s /sbin/nologin user5 //创建user5 的uid为1010,用户组为grp1,家目录为/home/dd1,shell为sbin/nlogin
[root@localhost ~]# tail -n3 /etc/passwd
dd1❌1002:1004::/home/dd1:/bin/bash
user4❌1005:1003::/home/user4:/bin/bash
user5❌1010:1003::/home/dd1:/sbin/nologin // /sbin/nologin 这个shell意思是不让这用户登录。
- 创建用户的同时,不建立用户的家目录
[root@localhost ~]# useradd -M user11
[root@localhost ~]# tail -n3 /etc/passwd
user4❌1005:1003::/home/user4:/bin/bash
user5❌1010:1003::/home/dd1:/sbin/nologin
user11❌1011:1011::/home/user11:/bin/bash //可以看出家目录为/home/user11,这个家目录只是没有创建
[root@localhost ~]# ls /home/
dd1 user1 user2 user4 //可以看出没有user11
- 当我们创建一个用户组并指定 gid 为 1010 的时候,那么当我们创建用户的时候用户的用户的 uid 会自增。
[root@localhost ~]# groupadd -g 1010 grp10
[root@localhost ~]# useradd -g grp10 user12
[root@localhost ~]# useradd user13
[root@localhost ~]# tail -n5 /etc/passwd
user4❌1005:1003::/home/user4:/bin/bash
user5❌1010:1003::/home/dd1:/sbin/nologin
user11❌1011:1011::/home/user11:/bin/bash
user12❌1012:1010::/home/user12:/bin/bash
user13❌1013:1013::/home/user13:/bin/bash
2. 删除用户
- 删除用户。当我们删除用户的时候,默认不会删除用户的家目录
[root@localhost ~]# userdel user13
[root@localhost ~]# tail -n5 /etc/passwd
dd1❌1002:1004::/home/dd1:/bin/bash
user4❌1005:1003::/home/user4:/bin/bash
user5❌1010:1003::/home/dd1:/sbin/nologin
user11❌1011:1011::/home/user11:/bin/bash
user12❌1012:1010::/home/user12:/bin/bash
[root@localhost ~]# ls /home
dd1 user1 user12 user13 user14 user2 user4
代码说明: 可以看出当我们删除 user13 的时候,/etc/passwd 的 user13 的数据被删除了, 但是它的家目录 user13 默认没有删除,需要自己删除 user13 的家目录。
- 删除用户的同时删除用户的家目录
[root@localhost ~]# userdel -r user12 //使用-r选项
[root@localhost ~]# tail -n5 /etc/passwd
user2❌1001:1002::/home/user2:/bin/bash
dd1❌1002:1004::/home/dd1:/bin/bash
user4❌1005:1003::/home/user4:/bin/bash
user5❌1010:1003::/home/dd1:/sbin/nologin
user11❌1011:1011::/home/user11:/bin/bash
[root@localhost ~]# ls /home
dd1 user1 user14 user2 user4
usermod 命令,mkpasswd 命令及密码管理
一,usermod 命令
-
命令语法
usermod [选项] [username] -
命令描述
usermod 命令用于修改用户的基本信息。
usermod 命令不允许你改变正在线上的使用者帐号名称。
当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序。 -
命令选项:
-u:更改用户 uid
-g:更改所属组(跟组名)
-d:更改用户家目录
-s:更改用户 shell
-G: 让一个用户同时属于多个组
注: 一个用户可以属于多个组,但是 gid 只有一个,除了 gid 之外的组叫做扩展组
二,用户密码管理
-
设置密码规则:
-
长度大于 10 个字符;
- 密码中包含大小写字母、数字、以及特殊符号 *,&,% 等;
- 不规则性 (不要出现 happy,love,linux,77585200,1232111 等单词或者数字);
- 密码中不要带有自己的名字、公司名、电话、生日等等;
-
命令语法
passwd [选项] [username] -
命令描述
为用户设定密码 -
命令选项
-l:锁定某用户密码
-u:解锁某用户密码
-d:删除密码,仅有系统管理者才有此权限 -
说明:
- 为用户设置密码时,使用该命令若后面什么都不加用户名字,则是为自己设定密码。
- 如果你登录的是 root 账户,后面可以跟普通用户的名字,意思是修改指定账户的密码。
- 需要注意的是: 只有 root 用户才可以更改其他用户密码,普通用户只能更改自己的密码。
三,mkpasswd 命令
- 说明: mkpasswd 是 make password 的简写,用于生成密码,使用前需要安装一个包“expect”,
#yum install -y expect
-
命令语法
mkpasswd [选项] -
命令描述
用于生成密码 -
命令选项
-l:指定密码长度
-s:special 的简写,指定特殊字符个数
-d:指定数字的个数
注: mkpasswd 命令配合 echo、passwd 命令以及管道符“|”使用更加方便。 -
命令示例:
eg: 一条命令修改用户密码(两种方法)
#echo -e "yourpasswd \n yourpasswd" | passwd user //echo -e可以使用换行符\n,这样相当于回车了一次
#echo "yourpasswd" | passwd --stdin user //passwd --stdin直接设定密码
id 命令查看用户 ID 和组 ID,su 切换当前用户身份详解
一,命令 id
-
命令语法
id [-gGnru][–help][–version][用户名称] -
命令描述
id 命令可以显示真实有效的用户 ID(UID) 和组 ID(GID)。UID 是对一个用户的单一身份标识。组 ID(GID)则对应多个 UID。
当我们想知道某个用户的 UID 和 GID 时 id 命令是非常有用的。一些程序可能需要 UID/GID 来运行。 -
命令选项
-g 或–group 显示用户所属群组的 ID。
-G 或–groups 显示用户所属附加群组的 ID。
-n 或–name 显示用户,所属群组或附加群组的名称。
-r 或–real 显示实际 ID。
-u 或–user 显示用户 ID。
二,命令 su
-
命令语法
su [-] username // 当我们使用 su 命令的时候最好加上 - ,这样才会彻底切换到该用户的家目录下(使用 pwd 查看当前目录)。 -
命令描述
用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 -
命令选项
-c 在不登录该用户的情况下,以该用户的身份去执行一条指令。
-s 指定要执行的 shell; -
命令示例
**-c 选项 ,在不登录 root 用户的状态下,在 user1 用户的 /tmp/ 下创建 dl.2222 **
[root@localhost ~]# su - -c "touch /tmp/dl.2222" user1 //在不登录root用户的状态下,在user1用户的/tmp/下创建dl.2222
[root@localhost ~]# su - user1 //登陆到user1
上一次登录:三 11月 1 15:27:01 CST 2017pts/0 上
[user1@localhost ~]$ ls -lt /tmp | head
总用量 8
-rw-rw-r--. 1 user1 user1 0 11月 1 15:27 dl.2222 //创建dl.2222成功
drwx------. 3 root root 17 11月 1 15:04 systemd-private-38e9f4c69cbc4912b43834c7fee705fd-vmtoolsd.service-eAIxdE
drwx------. 3 root root 17 10月 31 08:23 systemd-private-b72f816050104c8285beeb40a7064731-vmtoolsd.service-Zzhdk1
-rw-r--r--. 1 user1 user1 25 10月 26 20:42 dll
drwxr-xr-x. 3 root root 30 10月 24 11:03 666
drw-r--rw-. 2 root root 19 10月 23 21:27 DL
-rwx------. 1 root root 836 10月 23 06:19 ks-script-aokVOX
-rw-------. 1 root root 0 10月 23 06:11 yum.log
sudo 命令用其他身份来执行命令,限制 root 远程登录详解
一,命令 sudo
-
命令语法
sudo(选项)(参数) -
命令描述
sudo 命令用来以其他身份来执行命令,预设的身份为 root。
用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码。 -
命令选项
-b:在后台执行指令;
-H:将 HOME 环境变量设为新身份的 HOME 环境变量;
-k:结束密码的有效期限,也就是下次再执行 sudo 时便需要输入密码;
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的 shell;
-u< 用户 >:以指定的用户作为新的身份。若不加上此参数,则预设以 root 作为新的身份;
-v:延长密码有效期限 5 分钟; -
命令示例
配置 sudo 必须通过编辑 /etc/sudoers 文件,而且只有超级用户才可以修改它,还必须使用 visudo 编辑。之所以使用 visudo 有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用 visudo 来检查一下语法。
设置 sudo 方法
- 在命令行输入
#visudo //visudo默认的是在vi里打开sudo配置文件。
- 进入配置文件大概在 90 列左右可以看到下面的命令 (小技巧: 在 vi 编辑器里使用 set nu // 查看行数)
90 ## Allow root to run any commands anywhere // 翻译: 允许root用户在任何地方运行所有的命令
91 root ALL=(ALL) ALL
92 user1 ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat //自己编写的
命令说明:
-
92 列自己编写的,这条命令的作用是: 让 user 用户拥有 sudo 特权。
-
命令从左到右,第一段 user1 为一个用户,指定让哪个用户有 sudo 特权;
-
第二段 ALL=(ALL) 比较难理解,左边的 ALL 指的是所有的主机,右边的 ALL 指的是获取哪个用户的身份,
-
第二段几乎都不用配置;
-
第三段设定可以使用 sudo 的命令有哪些,这里我选择的是 ls,mv,cat 命令,注意这里编辑的时候要写绝对路径。也可以写 ALL 表示可以使用全部命令。也可以在第三段的最前面加上 #NOPASSWD: ,这样在使用 sudo 的时候就不用输入密码了。
-
编辑完成之后,#wq 保存退出。
-
当你在 visudo 中编辑错误的时候 wq 后会提醒你例如:
visudo: >>>/etc/sudoers: syntax error 在行 92 附近 <<
此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择 Q,那么 sudo 将不会再运行,直到错误被纠正。
上面步骤正常的情况下,切换到 user1 的用户下,使用 sudo 命令# sudo /usr/bin/ls /root
此条命令的意思是 在 user1 的用户下用 sudo 权限 ls 查看 /root 目录,当然可以使用 cat,mv 命令。