该文章内容包括四部分,分别为
1、用户和用户组
2、sudo命令
3、用户无法登录 passwd文件
4、权限 chmod chown
5、其他命令 su find du 命令
用户和用户组
1.1查看用户命令的目录
[root@JD ~]# 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
1.2查看用户组命令的目录
[root@JD ~]# 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
1.3添加用户
[root@JD ~]# useradd jack
1.4查看用户信息
创建一个普通用户,默认创建这个用户名的用户组jack,且设置这个用户的主组为jack,同时也会在/home下创建家目录
存储用户信息的文件/etc/passwd
存储用户组信息的文件/etc/group
查看一个文件大小用:ll -h
查看文件夹大小:du -sh
[root@JD ~]# id jack
uid=1001(jack) gid=1001(jack) groups=1001(jack)
[root@JD ~]# cd /home
[root@JD home]# ll
total 0
drwx------. 3 centos centos 70 Jun 28 2017 centos
drwx------ 2 jack jack 59 Nov 18 19:43 jack
所属用户 所属用户组
[root@JD etc]# cd passwd
...........
jack:x:1001:1001::/home/jack:/bin/bash
[root@JD etc]# cat group
.........
jack:x:1001:
1.5删除用户
如果jack该组只有jack用户,当这个用户删除时,组会校验就他自己,会自动删除(不会删除家目录即/hom/jack目录);如果组中还有他用户,不会自动删除
[root@JD /]# userdel jack
查看用户
[root@JD /]# id jack
id: jack: no such user
查看保存用户和用户组的文件
[root@JD /]# cat /etc/passwd | grep jack
[root@JD /]# cat /etc/group | grep jack
查看家目录
[root@JD /]# ll /home/
total 0
drwx------. 3 centos centos 70 Jun 28 2017 centos
drwx------ 2 1001 1001 59 Nov 18 19:43 jack
重新创建jack用户
[root@JD /]# useradd jack
#因为家目录不会删除,所以不会重新创建家目录
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
查看用户
[root@JD /]# id jack
uid=1001(jack) gid=1001(jack) groups=1001(jack)
1.6模拟切换用户丢失样式(如果删除家目录.bash*的所有文件,会出现样式丢失情况)
进入家目录
[root@JD /]# cd /home/jack
查看隐藏文件
[root@JD jack]# ll -a
total 12
drwx------ 2 jack jack 59 Nov 18 19:43 .
drwxr-xr-x. 4 root root 30 Nov 18 19:43 ..
-rw-r--r-- 1 jack jack 18 Apr 11 2018 .bash_logout
-rw-r--r-- 1 jack jack 193 Apr 11 2018 .bash_profile
-rw-r--r-- 1 jack jack 231 Apr 11 2018 .bashrc
删除bash的隐藏文件
[root@JD jack]# rm -rf .bash*
[root@JD jack]# ll -a
total 0
drwx------ 2 jack jack 6 Nov 18 20:06 .
drwxr-xr-x. 4 root root 30 Nov 18 19:43 ..
[root@JD jack]#
切换用户,会出现样式丢失
[root@JD jack]# su - jack
Last failed login: Tue Nov 12 10:28:24 CST 2019 from 178.62.194.63 on ssh:notty
There were 2 failed login attempts since the last successful login.
-bash-4.2$ ll
total 0
-bash-4.2$
1.7修正样式
[root@JD jack]# cp /etc/skel/.* /home/jack/
[root@JD jack]# cp /etc/skel/.* /home/jack/
cp: omitting directory ‘/etc/skel/.’
cp: omitting directory ‘/etc/skel/..’
查看家目录下的文件
[root@JD jack]# ll -a
total 16
drwx------ 2 jack jack 79 Nov 18 20:10 .
drwxr-xr-x. 4 root root 30 Nov 18 19:43 ..
-rw------- 1 jack jack 8 Nov 18 20:09 .bash_history
-rw-r--r-- 1 root root 18 Nov 18 20:13 .bash_logout
-rw-r--r-- 1 root root 193 Nov 18 20:13 .bash_profile
-rw-r--r-- 1 root root 231 Nov 18 20:13 .bashrc
修改用户所属的用户和用户组
[root@JD jack]# chown jack:jack .bash*
[root@JD jack]# ll -a
total 16
drwx------ 2 jack jack 79 Nov 18 20:10 .
drwxr-xr-x. 4 root root 30 Nov 18 19:43 ..
-rw------- 1 jack jack 42 Nov 18 20:18 .bash_history
-rw-r--r-- 1 jack jack 18 Nov 18 20:13 .bash_logout
-rw-r--r-- 1 jack jack 193 Nov 18 20:13 .bash_profile
-rw-r--r-- 1 jack jack 231 Nov 18 20:13 .bashrc
[root@JD jack]#
切换目录
[root@JD jack]# su - jack
Last login: Mon Nov 18 20:08:00 CST 2019 on pts/0
样式修正成功
[jack@JD ~]$
1.8添加ruoze用户到另外一个组 bigdata
-a|–append ##把用户追加到某些组中,仅与-G选项一起使用
-c|–comment ##修改/etc/passwd文件第五段comment
-d|–home ##修改用户的家目录通常和-m选项一起使用
-e|–expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f|–inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
-g|–gid ##修改用户的gid,该组一定存在
-G|–groups ##把用户追加到某些组中,仅与-a选项一起使用
-l|–login ##修改用户的登录名称
-L|–lock ##锁定用户的密码
-m|–move-home ##修改用户的家目录通常和-d选项一起使用
-s|–shell ##修改用户的shell
-u|–uid ##修改用户的uid,该uid必须唯一
-U|–unlock ##解锁用户的密码
创建组
[root@JD jack]# groupadd bigdata
查看用户组文件
[root@JD jack]# cat /etc/group | grep bigdata
bigdata:x:1002:
添加jack用户到bigdata组
[root@JD jack]# usermod -a -G bigdata jack
[root@JD jack]# id jack
uid=1001(jack) gid=1001(jack) groups=1001(jack),1002(bigdata)
修改bigdata为jack的主组
方式一:先修改jack用户组为bigdata,然后再追加jack组
[root@JD jack]# usermod --gid bigdata jack
[root@JD jack]# id jack
uid=1001(jack) gid=1002(bigdata) groups=1002(bigdata)
[root@JD jack]# usermod -a -G jack jack
[root@JD jack]# id jack
uid=1001(jack) gid=1002(bigdata) groups=1002(bigdata),1001(jack)
方式二:修改用户,指定一个主组和n个附加组(显示的指定全)
[root@JD jack]# usermod -g jack -G bigdata,jack
[root@JD jack]# id jack
uid=1001(jack) gid=1002(bigdata) groups=1002(bigdata),1001(jack)
设置用户密码
[root@JD jack]# passwd jack
Changing password for user jack.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@JD jack]#
切换用户
su ruoze
su - ruoze:会切换到该用户的家目录,且执行环境变量文件
.bash_profile文件 su ruoze不会执行该文件,su - ruoze 会执行
.bashrc文件 su ruoze会执行该文件,su - ruoze 会执行
普通用户获取root的最大权限
[root@JD jack]# vi /etc/sudoers
root ALL=(ALL) ALL
jack ALL=(root) NOPASSWD:ALL
[root@JD jack]# cd ~
[root@JD ~]#
[root@JD ~]# su jack
[jack@JD root]$ ll
ls: cannot open directory .: Permission denied
sudo: ll: command not found
[jack@JD root]$ sudo ls
1.txt 2.txt 3.txt a b shellScripts
[jack@JD root]$
/etc/passwd文件(存储用户信息)
jack: x:1001:1002::/home/jack:/bin/bash
只有可执行文件是/bin/bash才能成功切换用户
应用场景:切换不了用户,修改/etc/passwd中对应用户的尾部为/bin/bash
/etc/passwd文件
CDH 很多的组件
hdfs组件 hdfs用户
su - hdfs
对应修改为 /bin/bash
hbase组件 hbase用户
su - hbase
yarn组件 yarn用户
[root@JD ~]# cat /etc/passwd
。。。。。。
jack: x:1001:1002::/home/jack:/bin/bash
修改passwd
[root@JD ~]# vi /etc/passwd
。。。。。
jack: x:1001:1002::/home/jack:/bin/false
切换用户没切换成功
[root@JD ~]# su jack
[root@JD ~]#
修改文件
[root@JD ~]# vi /etc/passwd
。。。。
jack:x:1001:1002::/home/jack:/sbin/nologin
没切换成功
[root@JD ~]# su jack
This account is currently not available.
[root@JD ~]#
权限
6.1
错误: Permission denied
chomd -R 777 文件夹/文件路径
chown -R 用户:用户组 文件夹/文件路径
-rw-r–r-- 1 root root 0 Nov 10 23:38 1.txt
drwxr-xr-x 3 root root 14 Nov 10 23:34 b
第一个字母: d文件夹 -文件 l连接
rwx r-x r-x
r:read 4
w:write 2
x:执行 1
-:没有权限 0
rwx:7
wx:3
rx:5
d rwx r-x r-x 3 root root 14 Nov 10 23:34 b
rwx 第一组 7 代表文件或文件夹的用户root,读写执行
r-x 第二组 5 代表文件或文件夹的用户组root,读执行
r-x 第三组 5 代表其他组的所属用户对这个文件或文件夹的权限: 读执行
chmod -R 777 文件夹/文件路径
chown -R 用户:用户组 文件夹/文件路径
777 代表任意的用户用户组 都读写执行 权限
[root@JD ~]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 10 23:38 1.txt
drwxr-xr-x 3 root root 14 Nov 10 23:34 b
6.2案例
创建文件xxx.log
[root@JD tmp]# echo "qqqq" > xxx.log
-rw-r--r-- 1 root root 5 Nov 18 21:08 xxx.log
切换用户为jack用户
[root@JD tmp]# su - jack
Last login: Mon Nov 18 20:54:38 CST 2019 on pts/0
[jack@JD ~]$ cd /tmp
[jack@JD tmp]$ ll
-rw-r--r-- 1 root root 5 Nov 18 21:08 xxx.log
切换为jack用户,编辑失败,因为jack用户只有读权限
[jack@JD tmp]$ vi xxx.log
5: 'readonly' option is set (add ! to override)
ctrl+x/z 会产生swp文件 ll -a 删除即可 .rz.log.swp
[root@JD tmp]# ll -a
-rw------- 1 root root 4096 Nov 18 21:07 .xxx.log.swp
[root@JD tmp]# rm -rf .xxx.log.swp
第二次编辑 修改第三组权限为6(rw) 即其他组有读跟写权限
-bash: chomd: command not found
[root@JD tmp]# chmod 646 xxx.log
[root@JD tmp]# ll
-rw-r--rw- 1 root root 5 Nov 18 21:08 xxx.log
切换用户,进行编辑,成功
[root@JD tmp]# su - jack
Last login: Mon Nov 18 21:11:43 CST 2019 on pts/0
[jack@JD ~]$ pwd
/home/jack
[jack@JD ~]$ cd /tmp/
编辑成功
[jack@JD tmp]$ vi xxx.log
先撤回该文件的其他组的 写权限,修改第二组权限为读跟写,将jack用户添加到root组中,然后用jack用户编辑,成功
[jack@JD tmp]$ exit
logout
[root@JD tmp]# ll
total 4
-rw-r--rw- 1 root root 9 Nov 18 21:23 xxx.log
[root@JD tmp]# chmod 664 xxx.log
[root@JD tmp]# ll
total 4
-rw-rw-r-- 1 root root 9 Nov 18 21:23 xxx.log
[root@JD tmp]# usermod -a -G root jack
[root@JD tmp]# su - jack
Last login: Mon Nov 18 21:22:49 CST 2019 on pts/0
[jack@JD ~]$ cd /tmp/
[jack@JD tmp]$ vi xxx.log
查看文件或文件夹大小
文件:
ll
du -sh xxx.log
文件夹:
du -sh yyy
搜索 find
find / -name xxx
-
代表模糊匹配
history 历史记录
ps -ef 查看进程
top 系统情况
查看某一组件部署在那[root@JD tmp]# find / -name '*hadoop*' /tmp/xxxhadoopxxx [root@JD tmp]# find /tmp -name '*hadoop*' /tmp/xxxhadoopxxx [root@JD tmp]#