剑指数据仓库-Shell命令三
作者:互联网
- 2.1、用户和用户组
- 2.2、个人环境变量(.bashrc和.bash_profile的选择)和全局环境变量(/etc/profile)和别名的使用
- 2.3、su和su -的区别
- 2.4、/etc/passwd文件的重点剖析
- 2.5、权限(chmod、chown)&& 案例演示
- 2.6、文件、文件夹查看大小
- 2.7、find搜索命令
一、上次课程回顾
-
博文连接:https://blog.csdn.net/SparkOnYarn/article/details/104793896
-
未来部署大数据的组件一定要which一下,验证下是否生效,谨慎下没有问题;别名其实是为了简化操作;删除命令在工作中用的频率比较高,算是高危命令;history查看历史记录,也可以执行历史命令;
二、Linux基础命令二
2.1、用户和用户组
- 创建用户
1、关于用户、用户组的几种使用方式:增加、删除、修改
[root@hadoop001 sbin]# ll /usr/sbin/user*
-rwxr-x--- 1 root root 118192 Nov 6 2016 /usr/sbin/useradd
-rwxr-x--- 1 root root 80360 Nov 6 2016 /usr/sbin/userdel
-rwxr-x--- 1 root root 113840 Nov 6 2016 /usr/sbin/usermod
-rwsr-xr-x 1 root root 11296 Apr 13 2017 /usr/sbin/usernetctl
[root@hadoop001 sbin]# ll /usr/sbin/group*
-rwxr-x--- 1 root root 65480 Nov 6 2016 /usr/sbin/groupadd
-rwxr-x--- 1 root root 57016 Nov 6 2016 /usr/sbin/groupdel
-rwxr-x--- 1 root root 57064 Nov 6 2016 /usr/sbin/groupmems
-rwxr-x--- 1 root root 76424 Nov 6 2016 /usr/sbin/groupmod
2、我们创建一个用户为ruoze,默认创建这个名称的用户组ruoze,且设置这个用户的主组还是ruoze
[root@hadoop001 sbin]# useradd ruoze
[root@hadoop001 sbin]# id ruoze
uid=1001(ruoze) gid=1001(ruoze) groups=1001(ruoze)
//举例:老板的小姨子既属于财务部,又属于人力资源部;但是主要部门是财务部==》类比于财务部就是主组
- 用户和用户组的存储目录:
1、用户存储文件目录:
cat /etc/passwd
2、用户组存储文件目录:
cat /etc/group
3、创建的用户默认会在home目录下创建自己的目录:
[root@hadoop001 home]# ll
total 8
drwx------ 7 hadoop hadoop 4096 Mar 11 16:18 hadoop
drwx------ 2 ruoze ruoze 4096 Mar 12 10:47 ruoze
权限 所属用户 所属用户组 文件夹大小不准 创建时间(ll -rt进行时间排序)
- 测试删除用户:
1、因为ruoze这个组中只有一个ruoze用户,所以在删除ruoze用户的时候会同时删除ruoze这个用户组,组中有其他成员的时候,ruoze这个组不会被删除
[root@hadoop001 home]# id ruoze
uid=1001(ruoze) gid=1001(ruoze) groups=1001(ruoze)
[root@hadoop001 home]# userdel ruoze
[root@hadoop001 home]# id ruoze
id: ruoze: no such user
[root@hadoop001 home]# cat /etc/passwd | grep ruoze
[root@hadoop001 home]# cat /etc/group | grep ruoze
[root@hadoop001 home]# ll
total 8
drwx------ 7 hadoop hadoop 4096 Mar 11 16:18 hadoop
drwx------ 2 1001 1001 4096 Mar 12 10:47 ruoze
- 删除完ruoze用户后继续尝试添加用户,样式丢失后如何恢复
1、这段话的意思是home目录下的.bash文件已经存在,用户和用户组目录都已经存在了ruoze用户,
[root@hadoop001 home]# useradd ruoze
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@hadoop001 home]# cat /etc/passwd|grep ruoze
ruoze:x:1001:1001::/home/ruoze:/bin/bash
[root@hadoop001 home]# cat /etc/group | grep ruoze
ruoze:x:1001:
2、使用root用户切换到ruoze用户,删除.bash隐藏文件
[root@hadoop001 ~]# su - ruoze
[ruoze@hadoop001 ~]$ ll -a
total 20
drwx------ 2 ruoze ruoze 4096 Mar 12 10:47 .
drwxr-xr-x. 4 root root 4096 Mar 12 10:47 ..
-rw-r--r-- 1 ruoze ruoze 18 Dec 7 2016 .bash_logout
-rw-r--r-- 1 ruoze ruoze 193 Dec 7 2016 .bash_profile
-rw-r--r-- 1 ruoze ruoze 231 Dec 7 2016 .bashrc
[ruoze@hadoop001 ~]$ rm -rf .bash*
[ruoze@hadoop001 ~]$ ll -a
total 8
drwx------ 2 ruoze ruoze 4096 Mar 12 11:17 .
drwxr-xr-x. 4 root root 4096 Mar 12 10:47 ..
3、删除完.bash隐藏文件后新开session,再切换到ruoze用户,发现样式丢失==>说白了就是丢失.bash文件
[root@hadoop001 ~]# su - ruoze
Last login: Thu Mar 12 11:17:05 CST 2020 on pts/1
-bash-4.2$
-bash-4.2$
4、样式丢失的话怎么办呢?
//拷贝这个目录下的文件到ruoze用户目录
[root@hadoop001 skel]# cp /etc/skel/.* /home/ruoze/
[root@hadoop001 skel]# chown -R ruoze:ruoze /home/ruoze/.bash*
//最简单的就是直接拷贝其它用户下的.bash文件到ruoze目录下,并且修改用户和用户组
- 增加用户组
1、增加bigdata用户组
groupadd bigdata
2、添加ruoze用户到bigdata用户组
[root@hadoop001 skel]# id ruoze
uid=1001(ruoze) gid=1001(ruoze) groups=1001(ruoze)
[root@hadoop001 skel]# usermod -a -G bigdata ruoze
[root@hadoop001 skel]# id ruoze
uid=1001(ruoze) gid=1001(ruoze) groups=1001(ruoze),1002(bigdata)
3、usermod --help查看命令帮助
Usage: usermod [options] LOGIN
-g, --gid GROUP force use GROUP as new primary group
强制使用组作为新组
-G, --groups GROUPS new list of supplementary GROUPS
新增补充组的名单
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
将用户追加到补充组中,将-G选项中提到,但没有删除来自其它组的他
- 需求:修改bigdata为ruoze用户的主组,同时ruoze用户也要在ruoze这个组中:
1、没有修改前,ruoze用户的组和主组是ruoze,还在bigdata组中
[ro[root@hadoop001 skel]# id ruoze
uid=1001(ruoze) gid=1001(ruoze) groups=1001(ruoze),1002(bigdata)
2、强制修改ruoze用户的组和主组
[root@hadoop001 skel]# usermod -g bigdata ruoze
[root@hadoop001 skel]# id ruoze
uid=1001(ruoze) gid=1002(bigdata) groups=1002(bigdata)
3、ruoze用户的主组是bigdata,把ruoze这个组另外加进去
[root@hadoop001 skel]# usermod -a -G ruoze ruoze
[root@hadoop001 skel]# id ruoze
uid=1001(ruoze) gid=1002(bigdata) groups=1002(bigdata),1001(ruoze)
2.2、为普通用户设置密码、给普通用户sudo权限
1、为用户设置密码,使用root用户来设置:
[root@hadoop001 skel]# passwd ruoze
Changing password for user ruoze.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@hadoop001 skel]# su - ruoze
Last login: Thu Mar 12 11:26:07 CST 2020 on pts/1
2、为普通用户设置密码主要是为了在远程连接的时候使用:
- file --> quick connetc -->输入主机名
3、passwd后面不跟名称就是为当前用户修改密码
- Changing password for ruoze.
(current) UNIX password:
给普通用户root的最大权限并且无密码
1、使用root用户,vi /etc/sudoers,编辑这个文件,找到如下行数在91行后添加如下信息:hadoop是我的用户,NOPASSWD:ALL意思是无需密码
90 ## Allow root to run any commands anywhere(允许root用户在任何地方执行命令)
91 root ALL=(ALL) ALL
92 hadoop ALL=(ALL) NOPASSWD:ALL
2.3、su 和 su - 的区别
1、su 和su - 的区别
1、使用su的时候切换到ruoze用户还是在原用户的目录
[root@hadoop001 ~]# su ruoze
[ruoze@hadoop001 root]$ pwd
/root
[ruoze@hadoop001 root]$ exit;
exit
2、su - 的时候代表着切换的时候也在ruoze用户的家目录,且执行ruoze用户的环境变量文件
[root@hadoop001 ~]# su - ruoze
Last login: Thu Mar 12 11:56:52 CST 2020 on pts/2
[ruoze@hadoop001 ~]$ pwd
/home/ruoze
2、如何验证su - ruoze,会执行ruoze用户的环境变量,而su ruoze不会生效
此处验证到的一点是.bash_profile文件,su ruoze不会执行
.bashrc 对于su ruoze和su - ruoze都会执行
- 得出的结论,我们以后切换用户要使用su - 用户,环境变量要配置在.bashrc这个配置文件中。
2.4、/etc/passwd的重点剖析
1、查看修改/etc/passwd文件内容:
1、查看文件的最后两行
ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin
ruoze:x:1001:1002::/home/ruoze:/bin/bash
2、修改/bin/bash为/bin/false和/sbin/nologin
修改为这两种以后都是不能登录的
2、生产环境讲解:
在CDH中有很多的组件:
hdfs组件有hdfs用户
hbase组件有hbase用户,
yarn组件有yarn用户;
存在的情况:切换用户切换不过去,只要对应的在/etc/passwd文件中修改最后一行内容为/bin/bash,这样才是没有问题的。
2.5、权限(chmod、chown)&& 案例演示
chmod -R 777 文件或者文件夹
chown -R 用户:用户组 文件或者文件夹
跟权限挂钩的错误:Permission denied
1、举例:
[root@hadoop001 hadoop]# ll
total 20
drwxrwxr-x 2 hadoop hadoop 4096 Mar 5 15:58 app
rwx 第一组权限之和为7,代表的是文件和文件夹的用户root,它对这个文件有读写执行的权限
rwx 第二组权限之和为7,代表文件或文件夹的用户组root,读写执行
r-x 第三组权限之和为5,代表其他组的所属用户对这个文件或文件夹的权限,具有读和执行的权限
chmod
d:directory目录
r:read读,代表的数字4
w:write写,代表的数字是2
x:执行,代表的数字是1
7 = 4 + 2 + 1,代表r + w + x
777代表着任意的用户和用户组都有读写执行权限
案例:
在linux上有一个/tmp目录,/tmp目录的权限就是777,我们在/tmp目录下创建一个rz.log文件;
1、查看/tmp目录,查看创建的rz.log文件权限
drwxrwxrwt. 12 root root 4096 Mar 12 17:08 tmp
2、查看rz.log的文件权限:
-rw-r--r-- 1 root root 24 Mar 12 17:05 rz.log
3、我们测试使用root用户是没有问题的,但是使用hadoop用户进入编辑,编辑rz.log的时候提示如下: warning: changing a readonly file,使用wq!强制保存的时候提示如下:can't open file for writing.
4、提示如3中的不能写入文件的时候,我们直接输入ctrl+z来中断写入,此时相当于产生了一个缓存文件,我们ll -a查看后进行删除,rm -f .rz.log.swap
-rw-r--r-- 1 root root 24 Mar 12 17:05 rz.log
-rw------- 1 hadoop hadoop 12288 Mar 12 17:10 .rz.log.swp
5、我们修改vi.log的权限:chmod -R 746 rz.log
此时再使用Hadoop用户进行编辑:保存退出就没有问题了,
因为id hadoop查看到hadoop用户不是root用户,也不是root用户所在的组,而是属于其它用户用户组,所以赋予746权限:
[root@hadoop001 tmp]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
注意生产上执行ctrl+z,相当于是直接中断掉文件,会产生swap文件,此时直接ll -a,然后再删除文件即可。
- 测试我们把hadoop用户加入到root这个用户组:
1、原先hadoop所属的用户和用户组:
[root@hadoop001 tmp]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
2、把hadoop这个用户加到root这个用户组中:
[root@hadoop001 tmp]# usermod -a -G root hadoop
[root@hadoop001 tmp]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop),0(root)
3、/tmp/rz.log的这个文件还是644权限,此时测试编辑能不能用
仍然提示不能保存
4、修改rz.log的权限为chmod -R 664 rz.log进行测试:
需要新开一个session或者重新连接当前窗口,vi rz.log能够顺利写入并且保存退出。
2.6、文件、文件夹查看大小
1、查看文件大小:
[root@hadoop001 software]# ll php-7.2.28.tar.gz
-rw-r--r-- 1 root root 19935034 Mar 5 13:54 php-7.2.28.tar.gz
[root@hadoop001 software]# du -sh php-7.2.28.tar.gz
20M php-7.2.28.tar.gz
2、查看文件夹大小:
[root@hadoop001 hadoop]# du -sh software/
866M software
2.7、搜索find命令
history 历史记录
ps -ef 查看进程
top 系统情况
1、我们手上拿到了一台新机器,比如某个大数据组件hadoop,我们需要自行去寻找部署在哪个路径下?
- 使用最大的root权限,find / -name “hadoop”
1、从根目录开始搜索到名字为hadoop的文件:
[root@hadoop001 ~]# find / -name "hadoop"
/home/hadoop
/var/db/sudo/hadoop
/var/spool/mail/hadoop
2、可以指定在/home下查找:
[root@hadoop001 ~]# find /home -name "*hadoop*"
/home/hadoop
3、可以对需要查找的内容进行模糊匹配:前后都加上*号:
[root@hadoop001 ~]# find / -name "*hadoop*"
/home/hadoop
/var/db/sudo/hadoop
/var/spool/mail/hadoop
三、本次课程作业
作业:
1、整理用户、用户组
2、sudo命令
3、用户为什么会无法登陆(/etc/passwd文件有关)
4、权限(rwx)、chown和chmod命令
注意:linux上使用-R的命令只有chown和chmod命令
标签:Shell,hadoop001,数据仓库,hadoop,用户,命令,ruoze,root,1001 来源: https://blog.csdn.net/SparkOnYarn/article/details/104800105