2018年8月2日第五节课笔记
2.23/2.24/2.25 find命令
2.26 文件名后缀
一、find命令
搜索工具 which :用于查找可执行文件的绝对路径;
[[email protected]151 ~]# which lsalias ls='ls --color=auto'
/usr/bin/ls
whereis:通过预先生成的一个文件列表库查找与给出的文件名相关的文件;
格式: whereis [选项] 文件名
-b:只查找二进制文件
-m:只查找帮助文件
-s:只查找源代码文件
[[email protected]-151 ~]# whereis -b ls
ls: /usr/bin/ls
[[email protected]-151 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
locate:和whereis类似,也是通过查找预先生成的文件列表库来查找文件在哪里,后面直接跟文件名;需要安装mlocate软件包:
[[email protected]151 ~]# yum install -y mlocate
[[email protected]151 ~]# updatedb
[[email protected]151 ~]# locate yum.log
/var/log/yum.log
安装好后,第一次运行locate会报错,需要运行updatedb命令立即生成或者更新这个库文件;默认情况下这个库每周更新一次;locate不适合精准查找。
find命令
格式:find [路径] [参数]
-type 文件类型:f(文件)d(目录)l(软链接)s(sock)d(块设备)c(串口设备键盘鼠标等)
-name 文件名
-size 文件大小(10k;10M等)
-mmin +- 分钟数
-inum 跟inode,通过inode来查找一个文件的硬链接
-o 或者
-exec <执行指令>:假设find指令的回传值为True,就执行该指令。
-atime +n/-n 表示访问或执行时间大于或小于n天的文件。
-ctime +n/-n 表示更改inode属性(如更改所有者,权限或者链接)的时间大于或小于n天的文件。
-mtime +n/-n 表示创建或者修改文件时间大于或小于n天的文件,该参数用得最多
-1 小于1天;1天以内
+1 大于1天;1天以前
常用
不能等于1
例子:
-
查找1天内创建或修改的后缀名为.conf的文件
[[email protected]-151 ~]# find /etc/ -type f -mtime -1 -name "*.conf"
/etc/resolv.conf
-
查找root目录下1天内创建或修改的文件
[[email protected]-151 ~]# find /root/ -type f -mtime -1/root/.bash_history
/root/321.txt
-
查找root目录下10分钟内创建的文件
[[email protected]-151 ~]# find /root/ -type f -mmin -10
/root/11.txt
-
查找root目录下10分钟创建或修改的文件,并且显示出具体修改时间;
[[email protected]-151 ~]# find /root/ -type f -mmin -10 -exec ls -l {} \;
-rw-r--r-- 1 root root 0 3月 30 22:03 /root/11.txt
tips:{}表示前面列出来的文件,\脱意符号,;换行符
-
查找目录/root/下1天内修改的文件,并且备份一份。
[[email protected] ~]# find /root/ -type f -mtime -1 -exec cp {} {}.bak \;
[[email protected] ~]# ls -al /root/
总用量 84
dr-xr-x---. 4 root root 288 2月 27 22:13 .
dr-xr-xr-x. 17 root root 265 2月 19 15:07 ..
-rw-r--r-- 1 root root 0 2月 27 22:03 11.txt-rw-r--r-- 1 root root 0 2月 27 22:13 11.txt.bak
lrwxrwxrwx 1 root root 9 2月 27 01:12 12 -> /tmp/111/
drwxr-xr-x 2 root root 6 2月 27 22:03 123
-rw-------. 2 root root 0 2月 17 03:40 1.log-rw-r--r-- 1 root root 16816 2月 27 01:31 321.txt-rw-r--r-- 1 root root 16816 2月 27 22:13 321.txt.bak-rw-------. 1 root root 1422 2月 17 03:51 anaconda-ks.cfg-rw-------. 1 root root 6339 2月 27 01:40 .bash_history-rw------- 1 root root 6339 2月 27 22:13 .bash_history.bak-rw-r--r--. 1 root root 18 3月 29 2018 .bash_logout-rw-r--r--. 1 root root 176 3月 29 2018 .bash_profile-rw-r--r--. 1 root root 176 3月 29 2018 .bashrc-rw-r--r--. 1 root root 100 3月 29 2018 .cshrc-rw------- 1 root root 41 2月 25 00:48 .lesshst
drwx------. 2 root root 80 2月 19 17:04 .ssh
-rw-r--r--. 1 root root 129 3月 29 2018 .tcshrc
-
查看root目录下小于6k的文件,并且列出它具体的大小
[[email protected] ~]# find /root/ -type f -size -6k -exec ls -lh {} \;
-rw-r--r--. 1 root root 18 3月 30 2018 /root/.bash_logout-rw-r--r--. 1 root root 176 3月 30 2018 /root/.bash_profile-rw-r--r--. 1 root root 176 3月 30 2018 /root/.bashrc-rw-r--r--. 1 root root 100 3月 30 2018 /root/.cshrc-rw-r--r--. 1 root root 129 3月 30 2018 /root/.tcshrc-rw-------. 1 root root 1.4K 2月 17 03:51 /root/anaconda-ks.cfg-rw-r--r--. 1 root root 806 2月 18 19:41 /root/.ssh/authorized_keys-rw-r--r-- 1 root root 176 2月 19 16:24 /root/.ssh/known_hosts-rw------- 1 root root 1.7K 2月 19 17:04 /root/.ssh/id_rsa-rw-r--r-- 1 root root 396 2月 19 17:04 /root/.ssh/id_rsa.pub-rw------- 1 root root 41 2月 25 00:48 /root/.lesshst-rw-------. 2 root root 0 2月 17 03:40 /root/1.log-rw-r--r-- 1 root root 0 2月 27 22:03 /root/11.txt-rw-r--r-- 1 root root 0 2月 27 22:13 /root/11.txt.bak
-
通过inode来查找一个文件的硬链接;
[[email protected]-151 ~]# ls -i 1.log8388681 1.log
[[email protected]-151 ~]# find -inum 8388681
./1.log
[[email protected]-151 ~]# find / -inum 8388681
/root/1.log
/tmp/yum.log
先ls -l 查看 文件位有2 说明2个相同INODE号,然后ls -i 文件 查看号最后find / -inum 8388681 找出来
二、 文件名后缀
stat命令可以列出文件的atime,mtime,ctime;
[[email protected] ~]# stat 11.txt
文件:"11.txt"
大小:0 块:0 IO 块:4096 普通空文件
设备:803h/2051d Inode:16799023 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2018-03-30 22:13:47.084544630 +0800 //atime
最近更改:2018-03-30 22:03:41.825691647 +0800 //mtime
最近改动:2018-03-30 22:03:41.825691647 +0800 //ctime
创建时间:-
注:linux文件后缀名 在linux系统中,文件的后缀名没有具体的意义,加或者不加都无所谓。
Access: 2015-03-26 17:41:11.318175271 +0800 最近访问
Modify: 2015-03-26 17:40:05.876175331 +0800 更改文件内容时间
Change: 2015-03-26 17:40:05.876175331 +0800 更改iode时间
atime,最近访问 即文件的最近的一次访问时间,+n意思为查找n天以前的文件,-n为查找n天以内的文件
mtime,即文件数据最新的修改时间,指的就是文件内容的最新修改时间,注意和-ctime区分;
ctime; 文件状态最新改变的时间。文件有一些个基本的属性,权限,用户,组,大小,修改时间等,只要是这些信息变化了,那么ctime都会发生变化
find /etc/ -type f -o -mtime +1 -o -name "*.conf"
-1 小于1天;1天以内
+1 大于1天;1天以前
查找 /etc 指定文件类型 或者 文件修改时间 大于1天 或者名字是.*conf 结尾
find /root/ -type f -mmin -60 小知识
一小时内修改的文件
find /tmp/ -type f -mmin -60 -exec ls -l {} \;
-rw-r--r--. 1 root root 6 7月 31 15:34 /tmp/1.txt
-rw-r--r--. 1 root root 13 7月 31 15:38 /tmp/2.txt
-rw-r--r--. 1 root root 16 7月 31 15:38 /tmp/3.txt
查找tmp目录下 文件 60分钟内的文件,而且要显示出来 {} /tmp/1.txt /tmp/2.txt /tmp/3.txt 都包括里\托意 的意思
find /tmp/ -type f -mmin -150 -exec mv {} {}.bak \;
找150分内修改的文件并且改名. 后缀
find /root/ -type f -size -10k -exec ls -lh {} \; M兆
找root下 文件 小于 10K 并且 显示出来
find / -name "*.log" -type f +mtime 365 -exec rm -rf { } \;
找.log文件 365天以前的文件并且删除
四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为:
find path -option [ -print ] [ -exec -ok command ] { } /;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目
录。
print:
find命令将匹配的文件输出到标准输出。
exec:
find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式
为'command' { } \;,注意{ }和\;之间的空格。
ok:
和exec
的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命
令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
将查找到的文件输出到标准输出
#exec
command {} \; —–将查到的文件执行command操作,{} 和 \;之间有
空格
option 选项:
name
filename #查找名为filename的文件
perm
#按执行权限来查找
user
username #按文件属主来查找
group
groupname #按组来查找
mtime
n
+n #按文件更改时间来查找文件,n
指n天以内,+n指n天以前
atime
n
+n #按文件访问时间来查GIN: 0px">
ctime
n
+n #按文件创建时间来查找文件,n
指n天以内,+n指n天以前
nogroup
#查无有效属组的文件,即文件的属组在/etc/groups中不存在
nouser
#查无有效属主的文件,即文件的属主在/etc/passwd中不存
newer
f1 !f2 找文件,n
指n天以内,+n指n天以前
ctime
n
+n #按文件创建时间来查找文件,n
指n天以内,+n指n天以前
nogroup
#查无有效属组的文件,即文件的属组在/etc/groups中不存在
nouser
#查无有效属主的文件,即文件的属主在/etc/passwd中不存
newer
f1 !f2 #查更改时间比f1新但比f2旧的文件
type
b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
size
n[c] #查长度为n块[或n字节]的文件
depth
#使查找在进入子目录前先行查找完本目录
fstype
#查更改时间比f1新但比f2旧的文件
type
b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
size
n[c] #查长度为n块[或n字节]的文件
depth
#使查找在进入子目录前先行查找完本目录
fstype
#查位于某一类型文件系统中的文件,这些文件系统类型通常可
在/etc/fstab中找到
mount
#查文件时不跨越文件系统mount点
follow
#如果遇到符号链接文件,就跟踪链接所指的文件
cpio
%; #查位于某一类型文件系统中的文件,这些文件系统类型通常可
在/etc/fstab中找到
mount
#查文件时不跨越文件系统mount点
follow
#如果遇到符号链接文件,就跟踪链接所指的文件
cpio
#对匹配的文件使用cpio命令,将他们备份到磁带设备中
prune
#忽略某个目录
(1)Find工具-name参数案列:
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;
find /data/ -name "test*" #查找/data/目录以test开头的文件;
(2)Find工具-type参数案列:
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ ! -type d #查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
(3)Find工具-size参数案列:
find /data/ -size +1M #查文件大小大于1Mb的文件;
find /data/ -size 10M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件;
(4)Find工具-perm参数案列:
find /data/ -perm 755 #查找/data/目录权限为755的文件或者目录;
find /data/ -perm -007 #与-perm 777相同,表示所有权限;
find /data/ -perm +644 #文件权限在644以上;
(5)Find工具-mtime参数案列:
atime,access time 文件被读取或者执行的时间;
ctime,change time 文件状态改变时间;
mtime,modify time 文件内容被修改的时间;
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;
find /data/ -mtime 30 -name "*.txt"#查找第30天的log文件;
find /data/ -mmin +30-name "*.log" #查找30分钟以前修改的log文件;
find /data/ -
-30 -name "*.txt" #查找30分钟以内被访问的log文件;
find /data/ -cmin 30 -name "*.txt"#查找第30分钟改变的log文件。
(6)Find工具参数综合案列:
#查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录;
find /data/ -name "*.log" –type f -size +10k -exec cp {} /tmp/ /;
#查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件;
find /data/ -name "*.log" –type f -size +10k -m perm 644 -exec rm –rf {} /;
#查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;
find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ /;
后续继续补充
二、 文件名后缀
*.php 这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;
*.so 这类是库文件;
*.doc *.obt 这是OpenOffice 能打开的文件;
.bz2 bzip2的压缩文件
.gz gzip的压缩文件
.tar tar打包文件(是包文件不是压缩文件)
.tbztar打包并用bzip压缩文件
.tgztar打包并用gzip压缩的文件
.au audio文件
.gif gif图象文件
.html/.htmHTML文件
.jpgJPEG图象文件
.pdf电子文档(PDF格式的)
.pngPNG图象文件
.pspostscinpt文件(打印格式文件)
.txt纯文本文件
.wavaudio文件
.xpm图象文件
.conf配置文件
.lockLOCK文件(用来判断一个文件或设备是否被使用)
.rpmREDHATPackage.Manager文件(套件包或软件包)
.c C源程序代码文件
.cppC++源程序代码文件
.h C或C++程序的头文件
.o程序目标文件
.plperl脚本文件
.so类库文件
三周第一次课
2.27linux和windows互传文件
3.1 用户配置文件和密码配置文件
3.2 用户组管理
3.3 用户管理
一、linux和windows互传文件
安装lrzsz包
命令 # yum install -y lrzsz
[[email protected]-151 ~]# yum install -y lrzsz
已加载插件:fastestmirror
......
正在安装 : lrzsz-0.12.20-36.el7.x86_64 1/1
验证中 : lrzsz-0.12.20-36.el7.x86_64 1/1
已安装:
lrzsz.x86_64 0:0.12.20-36.el7
完毕!
Linux传文件给Windows
# sz 文件名
Windows传文件给Linux
# rz
注:传送的文件所在的位置为Linux的当前目录
二、 用户配置文件和密码配置文件
用户配置文件 /etc/passwd
[[email protected]151 ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologinwuzhou:x:1000:1000::/home/wuzhou:/bin/bash
-
这里是列表文本/etc/passwd由“:”分割成7个字段
-
第一段:用户名,root是超级用户
-
第二段:密码
-
第三段:用户的UID,root的uid是0,1-999是系统用户的uid或者预留的,普通用户从1000开始;
-
第四段:用户组gid;这个字段对应着/etc/group中的一条记录;
-
第五段:注释说明,没有实际意义;
-
第六段:用户的家目录;
-
第七段:用户的shell;/bin/bash:用户可以登录系统,/sbin/nologin 不可以登录系统。 注意:root和普通用户默认的是 /bin/bash;如果想让一个用户不能登陆系统 可以在 vi/etc/passwd 修改。将/bin/bash 修改成/sbin/nologin
密码配置文件:/etc/shadow
[[email protected] ~]# cat /etc/shadowroot:$6$zl63r8d5$knNxU6YQDPktVmvQoB82o59nukoj8Kv8.88SfCMPEdLcoaFqwL9VsO0U8Bzh5dfEwP3CRXDU9hbQDhHL44bll/:17458:0:99999:7:::bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::adm:*:17110:0:99999:7:::lp:*:17110:0:99999:7:::sync:*:17110:0:99999:7:::shutdown:*:17110:0:99999:7:::halt:*:17110:0:99999:7:::mail:*:17110:0:99999:7:::operator:*:17110:0:99999:7:::games:*:17110:0:99999:7:::ftp:*:17110:0:99999:7:::nobody:*:17110:0:99999:7:::systemd-bus-proxy:!!:17455::::::systemd-network:!!:17455::::::dbus:!!:17455::::::polkitd:!!:17455::::::tss:!!:17455::::::postfix:!!:17455::::::sshd:!!:17455::::::chrony:!!:17455::::::lem:x:1000:1000::/home/lem:/bin/bash
-
/etc/shadow 存放密码的文件用“:”别冒号分割成9段
-
用户名
-
是密码 这里是*表示账号被锁定 !!表示账号密码为空 密码为空时不能登陆系统的
-
是从1970年1月1日到上次修改密码的时间
-
是多少天后可以修改密码, 如果设置1表示上次修改时间过1天后才能修改密码
-
是多少天后密码会过期 99999就相当于永远不会过期
-
是密码到期前报警期限,
-
是密码过期后多少天如果不修改密码,这个账号就会废掉
-
是账号的生命周期, 从创建账号开始到过期时间
-
是保留项
三、用户组管理
用户组文件 /etc/group
groupadd增加用户组
-
增加用户组命令格式:groupadd [-g gid] groupname
例子:
[[email protected]-151 ~]# groupadd grp1
[[email protected]-151 ~]# tail -2 /etc/group
slocate:x:21:
grp1:x:1001:
-
-g选项:设置gid;gid默认从1000开始 自定义组ID创建组
[[email protected] ~]# groupadd -g 1003 grp2
[[email protected] ~]# tail -3 /etc/groupslocate:x:21:grp1:x:1001:grp2:x:1003:
删除组命令:groupdel
[[email protected]151 ~]# groupdel grp1
[[email protected]151 ~]# tail -3 /etc/grouplem:x:1000:
slocate:x:21: //刚才创建的用户grp1已经被删除
grp2:x:1003:
-
group有一种情况不能删除组:一个组里有很多用户,只要里面有一个用户,这个组就不能删除。
[[email protected]151 ~]# tail -3 /etc/passwdchrony:x:997:995::/var/lib/chrony:/sbin/nologinlem:x:1000:1000::/home/wuzhou:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bash
[[email protected]151 ~]# groupdel user1
groupdel:不能移除用户“user1”的主组 //user1组里有个用户user1用户,所以删除不了; 如果想要删除用户组,必须先删除组里的所以用户,再删除用户组。
for((i=0;i<=10;i++)) do groupdel $i;done 批量删除
四、 用户管理
useradd 增加用户
-
-u 定义UID;普通用户uid从1000开始
-
-g 定义Gid
-
-d 定义家目录
-
-s 定义shell ; /bin/bash登陆,/sbin/nologin不允许登陆
-
-M 不建家目录
-
Useradd不加任何选项,直接跟用户名,这个会创建一个跟用户名同名的组(所创建的用户的uid会延续之前的uid向后顺延,gid会与uid同步,如果与uid同步的gid已被占用,则会往下顺延,例如创建的用户的uid为1007,但gid1007已被占用,则)。
[[email protected]151 ~]# useradd user2
[[email protected]151 ~]# tail -1 /etc/passwduser2:x:1002:1002::/home/user2:/bin/bash
[[email protected]-151 ~]# tail -1 /etc/group
user2:x:1002:
[[email protected]151 ~]# useradd -u 1004 -g 1005 -M -s /sbin/nolongin user3
useradd:“1005”组不存在
[[email protected]151 ~]# useradd -u 1004 -g 1003 -M -s /sbin/nolongin user3
[[email protected]151 ~]# tail -2 /etc/passwduser2:x:1002:1002::/home/user2:/bin/bashuser3:x:1004:1003::/home/user3:/sbin/nolongin
-
注意:-g后面跟一个不存在的gid会报错;加上-M后,不会创建家目录,但是这里会显示出来家目录,但是在home下面是没有这个家目录文件的
[[email protected]-151 ~]# cat /home/user3
cat: /home/user3: 没有那个文件或目录
[[email protected]-151 ~]# ls /home
user1 user2 wuzhou
userdel 删除用户,但不会删除家目录
-
userdel -r 删除用户连带家目录一起删除。 例子:
[[email protected] ~]# userdel user2
[[email protected] ~]# ls /home
user1 user2 lem //user2的家目录还存在
[[email protected] ~]# userdel -r user1
[[email protected] ~]# ls /home
user2 lem //user1家目录已经删除
usermod命令 用户密码管理 mkpasswd命令
三周第二次课
3.4 usermod命令
3.5 用户密码管理
3.6 mkpasswd命令
一、 usermod命令
usermod 修用户的属性
-
-u 修改用户UID
-
-g 修改用户Gid
-
-d 修改用户家目录
-
-s 修改用户shell
-
-G 增加用户扩展组;一个用户可以属于多个组,但是gid只有一个,把用户gid的叫做组,其他组叫做扩展组。
-
-L 锁定一个用户登录
-
-U 解锁用户登录
例子:
[[email protected] ~]# usermod -u 1008 -g grp2 -d /home/lem -s /sbin/nologin user6
[[email protected] ~]# ls /home
user2 user5 user6 lem
[[email protected] ~]# ls /home/lem/
[[email protected] ~]# tail -1 /etc/passwduser6:x:1008:1003::/home/lem:/sbin/nologin
usermod -G 扩展组;-G后面可以跟多个组
[[email protected] ~]# usermod -G user6 user6[[email protected] ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1008(user6)
[[email protected] ~]# usermod -G user5 user6[[email protected] ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1006(user5)
[[email protected] ~]# usermod -G user5,user6 user6[[email protected] ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1006(user5),1008(user6)
usermod -g 后面只能跟一个组名
[[email protected] ~]# usermod -g user5,user6 user6
usermod:“user5,user6”组不存在
usermod -L 锁定用户
[[email protected] ~]# passwd user6
更改用户 user6 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::
user3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:!!:17470:0:99999:7:::
user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::
//锁定user6
[[email protected] ~]# usermod -L user6
[[email protected] ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::
user3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:!!:17470:0:99999:7:::
user6:!$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::
注意:-L user6,查看密码文件的时候,user6密码前面多了一个感叹号,表示用户user6被锁定了;
usermod -U 解锁用户
[[email protected] ~]# usermod -U user6
[[email protected] ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::
user3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:!!:17470:0:99999:7:::
user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7::: //感叹号消失
注意:删除一个组,如果组里面有用户,是不能被删除的,但是这个组属于扩展组是可以删除的。
二、 用户密码管理
命令passwd:设置用户密码;后面不加用户名,默认修改当前用户的密码
[[email protected] ~]# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# passwd user5
更改用户 user5 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
注意:只有root用户才能修改其他用户的密码,普通用户只能修改自己的密码;
-
passwd有个选项也能锁定用户登录
-
passwd –l 锁定用户
-
passwd –u 解锁用户
[[email protected] ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::
user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::
[[email protected] ~]# head -4 /etc/shadowroot:$6$P0JCL/5p$GnTS9gjHEdrLAUam9rbUNScO9N8USlzbZylZrHt3CGSyv/yCOw2cxcc0B6ojFNB1yYYJD30cSJD4ZIKPVkiCX.:17470:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
注意:*表示用户密码是锁定的,不能用,不能登录系统;!!表示密码是空的也不能登录;
passwd -l 密码锁定
[[email protected] ~]# passwd -l user5
锁定用户 user5 的密码 。
passwd: 操作成功
[[email protected] ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:!!$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::
user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::
user5的密码锁定后,密码前面多了2个叹号;
passwd -u 密码解锁
[[email protected] ~]# passwd -u user5
解锁用户 user5 的密码。
passwd: 操作成功
[[email protected] ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::
user4:!!:17469:0:99999:7:::
user5:$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::
user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:
passwd --stdin
passwd --stdin XXX(用户名) 更改密码(密码为明文)
echo "xxxxxxx" |passwd --stdin XXX(用户名)
echo "12345678"|passwd --stdin aming
输出“xxxxxxx”为XXX的明文密码
echo "xxxxxxx" |passwd –stdin username
[[email protected] ~]# passwd --stdin user6
更改用户 user6 的密码 。
123123
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# echo "123456" |passwd --stdin user6
更改用户 user6 的密码 。
passwd:所有的身份验证令牌已经成功更新。
这个多用于脚本修改密码
[[email protected] ~]# echo -e "123456\nqweqwe"123456
qweqwe
echo -e可以使用换行符\n,这样相当于人工打了一次回车,也可以可以修改密码的。
[[email protected] ~]# echo -e "wz11223344%1\nwz11223344%1"|passwd user6
更改用户 user6 的密码 。
新的 密码:重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
echo -e "123456\n123456" |passwd aming
echo -e "wenwen4023\nwenwen4023" | passwd aming
echo "12345678"|passwd --stdin aming
usermod -L passwd -l 都是锁定 但是没区别 一个锁定用户,一个锁定密码吗 一个锁定两个叹号 一个一个叹号
三、mkpasswd命令
mkpasswd用户生成密码;需要安装一个expect包
[[email protected] ~]# yum install -y expect
mkpasswd默认会生成一个9位数密码
[[email protected] ~]# mkpasswd91?uRIyuo
mkpasswd -l 12 指定密码长度为12
-
-s 1 指定特殊字符个数1
-
-d 4 指定有4个数字
-
-c 3 指定有3个小写
-
-C 5 指定有5个大写
[[email protected] ~]# mkpasswd -l 12 -d 4 -s 0
xigSTsf0965d
su命令 sudo命令 限制root远程登录
一、su命令
-
切换用户 命令su的格式:su – username;普通用户的su命令不加username时,就是切换到root用户
[[email protected] ~]$ su -
密码:
上一次登录:三 4月 4 22:38:52 CST 2018pts/0 上
[[email protected] ~]$ su - user7
密码:
[[email protected] ~]$ pwd
/home/user7
-
su切换用户,加不加“-”都可以,但还是有区别的;不加“-”切换用户后,环境变量还是上一个用户的;
[[email protected] ~]# su lem
[[email protected] root]$ pwd
/root
[[email protected] root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] root]$ exit
-
-号加上后会初始化当前用户的各种环境变量
[[email protected] ~]# su - lem
上一次登录:三 4月 4 22:42:05 CST 2018pts/0 上
[[email protected] ~]$ pwd
/home/lem
[[email protected] ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/lem/.local/bin:/home/lem/bin
su - -c “命令” username
-
指定某个用户去执行某个命令;
[[email protected] ~]# su - -c "touch /tmp/lem.111" lem
[[email protected] ~]# ls -l /tmp/lem.111
-rw-rw-r-- 1 lem lem 0 4月 4 22:50 /tmp/lem.111
[email protected] ~]# su - lem
上一次登录:三 4月 4 22:50:40 CST 2018pts/0 上
[[email protected] ~]$ su - -c "touch /tmp/user7.111" user7
密码:
[[email protected] ~]$ ls -l /tmp/user7.111
-rw-rw-r-- 1 user7 user7 0 4月 4 22:52 /tmp/user7.111
\\切换到用户user5时,提示错误,发现是家目录不对
[[email protected] ~]# su - user5su: 警告:无法更改到 /home/lem 目录: 权限不够
[[email protected] ~]$ tail -5 /etc/passwd
user3:x:1004:1003::/home/user3:/sbin/nolonginuser4:x:1005:1003::/home/user4:/sbin/nolonginuser5:x:1007:1003::/home/wuzhou:/sbin/nologin
\\然后我们修改用户的家目录
[[email protected] ~]# usermod -d /home/user5 user5
\\再次切换用户,有提示这个帐户目前不可用,原因是家目录里面是空的
[[email protected] ~]# su - user5
上一次登录:三 4月 4 22:40:06 CST 2018pts/0 上
This account is currently not available.
[[email protected] ~]# ls /home/user5
-
Tips:/etc/skel/ 这个目录时家目录文件的模板,如果家目录没有这些文件,直接拷贝过去。
[[email protected] ~]# cp /etc/skel/.bash* /home/user5/
二、sudo命令
-
sudo可以使一个普通用户临时去执行root的一个命令或者脚本,通常情况下都是给普通用户授权root用户的身份;不使用su的原因是,su切换的root用户下,需要root的密码,告知密码很不安全;默认情况下只有root用户才能使用sudo命令,普通用户要想使用sudo命令,必须要root预先设定;
-
使用visudo命令编辑配置文件/etc/sudoers,如果没有这个命令,需要用yum install -y sudo 找到下面内容
## Allow root to run any commands anywhere //允许root用户去运行所有的命令,在任何地方root ALL=(ALL) ALL命令
user7 ALL=(ALL) NOPASSWD: /usr/bin/ls,/usr/bin/cat //我们可以在下面添加一些用户
ALL=(ALL) 左边ALL 表示所有的登陆方式,远程,ip/ip段 (ALL)表示以所有的用户登陆;NOPASSWD: 不需要输入密码
visudo
第一 用户 第二 主机名 IP (指用户) 第三 所有的命令/usr/bin/ls ALL所有
不知道用户命令是那个路径 可以 which 来查看
[[email protected] ~]# su - user7
上一次登录:三 4月 4 23:36:44 CST 2018pts/0 上
[[email protected] ~]$ sudo ls /root/11.txt 12 1.log 321.txt.bak 工号.txt
11.txt.bak 123 321.txt anaconda-ks.cfg
例子:只允许普通用户账户登录,而普通用户登录后,不需要输入密码就能使用su切换到root账户下
在visudo后面添加下面命令:
User_Alias USER_SU = lem,user7 //做用户别名
Cmnd_Alias SU = /usr/bin/su //做命令别名
USER_SU ALL=(ALL) NOPASSWD: SU
[[email protected] ~]$ sudo su - user7
上一次登录:三 4月 4 23:51:53 CST 2018pts/0 上
[[email protected] ~]$ sudo su -
上一次登录:三 4月 4 23:55:41 CST 2018pts/0 上
[[email protected] ~]# whoami
root
三、 限制root远程登录
/etc/ssh/sshd_config为sshd服务配置文件,默认允许root账户通过ssh远程登录linux。如果想要不允许root用户远程登录linux,具体操作方法:修改配置文件/etc/ssh/sshd_config,在文件中找到#PermitRootLogin yes 修改成PermitRootLogin no,保存后,重启sshd服务:
[[email protected] ~]# vi /etc/ssh/sshd_config[[email protected] ~]# systemctl restart sshd.service
重新打开一个窗口,提示错误了,root不能远程登录
这个时候我们可以登录普通用户,然后使用sudo命令切换到root用户下
[[email protected] ~]$ sudo su - root
上一次登录:四 4月 5 00:10:38 CST 2018从 192.168.0.151pts/2 上
扩展
sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html
sudo配置文件样例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers
sudo不错的教程 http://www.jianshu.com/p/51338e41abb7
sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html