开发者学堂课程【Linux企业运维实战 - 入门及常用命令:Linux 用户权限设置和企业级管理实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/550/detail/7610
Linux 用户权限设置和企业级管理实战
内容介绍:
一、group 文件格式
二、文件操作
三、用户和组管理命令
四、用户创建 : useradd
五、创建用户 : useradd
六、用户属性修改
七、练习
一、group 文件格式
◆群组名称:就是群组名称
◆群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
◆GID :就是群组的 ID
◆以当前组为附加组的用户列表(分隔符为逗号)
现在有个组叫 mage 组,想给 mage 组加口令怎么加呢,使用 gpasswd mage 命令就可以给 mage 加口令。
现在将 wang 账号临时加入 mage 组里,在加组之前现创建一个文件叫 wangfile1,查看文件在 wang 账号里,所属组就为 wang,使用 newgrp mage 命令再输入口令,现在查看 id,主组就变为了 mage,wang 组变成了附加组。
如果现在 wang 账号已经在 mage 组里了,再创建 wangfile2,mage 就变成了附加组。如果希望新建的文件主组为 mage,就使用 newgrp mage 让 mage 成为主组。
二、文件操作
◆vipw 和 vigr
◆pwck 和 grpck
Vipw 类似于 nano,是一个文本编辑工具,但是用 nano 改文件,有可能一不小心改错了,但是 vipw 有一个好处是拥有查询改错功能,就是说如果保存时改错了会自动报警,避免错误操作。
Vigr 修改的是 group 文件,相对来讲比较安全。
Pwck 和 grpck 是用来检查语法的,比如 nano 改了一个文件担心格式错误,可以用 pwck做语法检查,出现错误报警。Grpck 检查的是 group 的错误。
三、用户和组管理命令
◆用户管理命令
➢useradd
➢usermod
➢userdel
◆组帐号维护命令
➢groupadd
➢groupmod
➢groupdel
Useradd 意为创建用户
usermod 意为修改用户
userdel 意为删除用户;
Groupadd 意为创建组
groupmod 意为修改组
groupdel 意为删除组。
四、用户创建 : useradd
◆useradd [options] LOGIN
-u UID
-o 配合 -u 选项,不检查 UID 的唯一-性
-g GID :指明用户所属基本组,可为组名,也可以 GID
-c "COMMENT" :用户的注释信息
-d HOME_ DIR :以指定的路径(不存在)为家目录
-S SHELL :指明用户的默认 shell 程序
可用列表在 /etc/shells 文件中
-G GROUP1[,GROUP2...] :为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用 users 组做主组
-r: 创建系统用户CentOS 6: ID<500 , CentOS 7: ID< 1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用于非系统用户
Useradd 是一个外部路径,在 sbin 里面都是管理员文件,不能用普通用户账号执行。最简单的创建用户的方式就是 useradd 后面直接加用户名。
现在查看已经创建的账号已经排到了1003,新建账号应该排到1004,也可以超过他的范围。现在创建一个账号 xixi,使用命令 useradd –u 66666 xixi 就可以进行创建,使用 getent passwd xixi 命令就可以查看只和 xixi 相关的那一行,正常情况下创建的 id 按 id 最大的值顺序递增。
在生产中,有时候 id 号需要人为指定,比如说需要在某个服务器上创建一个给服务用的账号,而一个软件要部署到多个服务器上,这个账号要不止一个 id,比如说创建一个 app,命令 useradd app u 1234 就认为指定了 id 为1234,就可以在多个服务器上指定相同的id了。
如果要创建 id 相同的两个账号,需要加上 o 选项。
判断用户是否可以访问某个权限是根据用户的 id 而非用户名,id 相同就会认为是同一个用户。
-g 后面跟的是主组的 id,在创建账号的时候会自动新建主组,当然也可以指定不用它自动创建的,自己指定一个主组。
-c 是描述,用 chfn wang 命令就可以看到 wang 的描述信息。
使用 -d 可以指定路径为家目录,比如命令 useradd –d /data/app3home app3 就是指定 app3 的路径保存家目录,将来如果创建一个账号 mysql,mysql 对应有一个数据库文件,想把它放进一个目录里,就可以直接设置。
Shell 类型可以用 -s 来指定,比如说创建一个给服务用的账号,现在想创建 nginx 账号给应用程序使用,可以使用 useradd –s /sbin/nologin –r nginx 命令,系统就会自动给他分配在范围内的 id 号。
注意不加 -r 会自动创建家目录,加上 –r 就不会。但是如果加上 –r 又加上 –m 就会认为的必须加上家目录。M 正好相反为强制不创建家目录。
五、创建用户 : useradd
◆默认值设定: /etc/default/useradd 文件中
◆显示或更改默认设置
useradd -D
useradd -D -S SHELL
useradd -D-b BASE_ DIR
useradd -D -g GROUP
useradd –D 可以显示创建文件时默认的配置内容,当然不仅可以查看,还可以修改内容,-s 修改 shell 类型,-b 把家目录改了,-g 可以修改组。
六、用户属性修改
◆usermod [OPTION] login
-u UID:新 UID
-g GID:新主组
-G GROUP1[,GROUP...[.GROUPN]]] :新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用 -a 选项
-S SHELL :新的默认 SHELL
-c 'COMMENT':新的注释信息
-d HOME:新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_ name:新的名字;
-L: lock 指定用户,在 /etc/shadow 密码栏的增加!
-U: unlock 指定用户,将 /etc/shadow 密码栏的!拿掉
-e YYYY-MM-DD:指明用户账号过期日期
-f INACTIVE:设定非活动期限
七、练习
◆1、创建用户 gentoo,附加组为 bin 和 root,默认 shell 为 /bin/csh,注释信息为 "Gentoo Distribution"
◆2、创建下面的用户、组和组成员关系
名字为 webs 的组
用户 nginx 使用 webs 作为附属组
用户 varnish,也使用 webs 作为附属组
用户 mysql,不可交互登录系统,且不是 webs 的成员,nginx,varnish,mysql 密码都是 magedu。
答案:
1、创建用户 gentoo,附加组为 bin 和 root,默认 shell 为 /bin/csh,注释信息为 "Gentoo Distribution":
useradd -c " Gentoo Di stri bution" -G bin,root
-s /bin/csh Gentoo
2、创建下面的用户、组和组成员关系
名字为 webs 的组:
groupadd webs
用户 nginx 使用 webs 作为附属组:
useradd -G webs nginx
用户 varnish,也使用 webs 作为附属组:
useradd -G webs varnish
用户 mysql,不可交互登录系统,且不是 webs 的成员,nginx,varnish,mysql 密码都是 magedu:
useradd -s / sbin/ nologin mysql
echo magedu
丨
passwd --stdin nginx
echo magedu
丨
passwd --stdin varnish
echo magedu
丨
passwd --stdin mysql