您的位置:首页 > 运维架构 > Linux

Linux文件管理和用户管理

2017-10-27 17:10 120 查看
Linux命令格式:
命令 [选项] [参数]
命令:实现某种功能的程序。如ls、date
选项:命令中实现某种功能的字母(短选项)或单词(长选项)代号。如ls --help 、 ls -a
参数:命令操作的对象,通常是文件名、磁盘设备名、用户名、服务名等。如ls -lh /etc

命令分类:文件管理、用户管理、权限管理、磁盘管理、系统服务、网络服务……

--------------------
文件管理
目标:对系统中的文件进行增、删、该、查。

查询:
1、查看当前工作路径:pwd2、查文件列表:ls格式:ls [-arRlh] [路径]
注:当不指定路径是则显示当前目录路径下的文件列表。
选项:
--help 显示帮助
-a 即all,显示所有文件,包括以.开头的隐藏文件。ls -a /root
-l 以long长格式显示文件属性(包括类型、权限、链接数、属主、属组、大小、时间、文件名)。ls -l /root
-h 与-l 一起,以易于阅读的格式输出文件大小(如 1K 234M 2G)。ls -lh /root
-r 逆序排列(降序)。对比ls / 和 ls -r / 结果的区别。
-R 递归显示子目录。ls -R /etc/sysconfig

Linux的文件类型:
- 普通文件,文本文件、mp3音乐、avi视频、jpg图片等。如ls -l /etc/host*
d 目录,即文件夹。例:ls -l /
l 软链接文件,即快捷方式。例:ls -l /
b 块block设备文件,即硬盘、分区、u盘。例:ls -l /dev/sd*
c 字符设备文件,通常指命令终端设备。例:ls -l /dev/tty*
s 套接字文件,通常是网络服务生成的,文件中保存的IP和port端口号。例:ls -l /run/rpcbind.sock
p 管道文件(pipo),用来做命名管道。例:ls-l /run/systemd/inhibit

查文件类型的方法:
方法一:ls -ld 文件名或目录名。例:ls -ld /etc/hosts /etc
方法二:file 文件名或目录名。例:file /etc/hosts /etc /dev/sda /dev/tty

3、查看纯文本文件内容:cat、tac、nl、head、tail、more、less、grep

cat:读全文
例:cat /etc/passwd
cat -n /etc/passwd 显示行号
cat -A /etc/hosts 等于-vET,其中-E是在每行结束处显示"$"

tac:逆序读全文
例: tac /etc/hosts

nl:读全文并显示行号。忽略空白行(即空白行无行号)。nl /etc/yum.conf

head:读开头
例: head /etc/passwd 读前10行
head -5 /etc/passwd 读前5行

tail:读结尾
例: tail /etc/passwd 读最后10行
tail -6 /etc/passwd 读最后6行

问题:读/etc/passwd文件的第6行内容?读/etc/passwd文件的倒数第7行内容?读/etc/passwd的前12行内容并显示行号?
解答:head -6 /etc/passwd | tail -1
tail -7 /etc/passwd |head -1
head -12 /etc/passwd | cat -n
说明:|是管道符号,作用是将前一个命令的结果传给后一个命令继续处理。一条命令中可以多个管道符。

more:读更多,向下翻页显示
例:more /etc/passwd
空格下翻一页,回车下翻一行,q键退出。

less:读更少,上下翻页显示
例:less /etc/passwd
可用方向键,空格或PageDown下翻一页,PageUp上翻一页,回车下翻一行,q键退出。

grep:读关键字所在的内容。也称为匹配关键字。
用法:grep [选项] 关键字 文件名
例如:grep root /etc/passwd 显示/etc/passwd文件中的root关键字的内容
grep ^root /etc/passwd 显示以root开头的。^(上尖、拖字符、乘方)表示锚定开头
grep bash$ /etc/passwd 显示以bash结尾的。$表示锚定结尾
选项:
--help 显示帮助
--color 以彩色显示关键字,centos7默认开启了此功能
-n 显示行号
-E 启用扩展正则表达式字符。如|表示或者。grep -En 'root|adm|lp' /etc/passwd
-w 精确匹配关键字。对比grep localhost /etc/hosts和grep -w localhost /etc/hosts
-v 反向匹配,即不包含关键字的内容。grep -v 127 /etc/hosts
-B 显示关键字及其before前n行内容。grep -B 2 adm /etc/passwd
-A 显示关键字及其after后n行内容。grep -A 2 adm /etc/passwd

touch:创建空文件,或更新文件的时间。
例:touch a b c 创建3个文件
ls 显示文件列表

stat:显示文件的状态信息(详细属性),属性包括文件路径、大小、块、文件类型、Inode索引号、硬链接个数、权限、uid、gid、环境(SElinux属性)、时间。
例:stat /etc/hosts
文件的3个时间:
atime:访问时间(Access)。是指用touch、cat、head等命令访问过这个文件。touch /etc/hosts后再看文件的3个时间。
mtime:更改时间(modify)。是指用vim、gedit等命令修改过文件内容。
ctime:改动时间(change)。是指用chown、chmod改过文件的属性、权限。chmod -v +x /etc/hosts后再看文件的ctime时间。

rm:删除(remove)文件或目录(即文件夹)。
例:ls
rm -fv a b c 强制(-f)删除当前目录中的a、b、c文件,并显示过程(-v)
rm -rfv /tmp/* 清空/tmp目录中的所有文件。-r是递归(目录中及其子目录)

----------------------------------------
目录管理(文件夹):
pwd、ls、cd、mkdir、rmdir
pwd:显示工作路径
cd:切换目录(change directory),即打开文件夹
例:cd 或 cd ~ 切换到当前用户的家目录
pwd 显示工作路径
cd /etc/sysconfig/network-scripts 切换到指定的目录
ls 显示文件列表
cd .. 切换上一级目录。..表示上一级目录。.表示当前目录自己
cd ../.. 返回上一级的上一级目录
cd / 切换到根目录
说明:鼠标双击打开一个文件夹,其实后台执行了cd、ls、pwd这些命令。

mkdir:新建目录
例:cd
mkdir -v ak bk ck 在当前目录中新建3个目录,并显示过程
ls 显示文件列表
mkdir -v 1/2/3/4 会提示无法创建,因为没有1/2/3目录,所以无法创建4目录
mkdir -pv 1/2/3/4 正常在当前目录中新建多级目录1/2/3/4。-p是创建父级目录。

rmdir:删除空目录。
rmdir -pv 1/2/3/4 逐步删除1/2/3/4这几个空目录
rmdir -v ak bk ck 删除当前目录下指定的空目录
-----------------
文件和目录管理公用:
rm删除、cp复制、mv移动
rm -rfv /tmp/* 清空/tmp目录下的所有文件

cp:复制
用法:cp [-rapv] 来源 目标
例:cp -v /etc/host* /tmp/ 将/etc/host*文件复制到/tmp/目录下
cp -v /opt /tmp/ 提示略过目录"/opt",说明复制失败,要用-r递归复制
cp -rv /opt /tmp/option 将/opt目录复制到/tmp目录下改名为option。-r是递归复制文件夹。

mv:移动(move)
用法:mv [-v] 来源 目标
例:cd 切换到用户的家目录
mkdir -v dir1 创建dir1目录
mv -v dir1 dir2 将dir1改名为dir2
mv -v dir2 /tmp/ 将dir2移动到/tmp目录下
-----------------------------
通配符:在文件管理中用来模糊匹配字符。常见符号如下。
?:匹配任意单个字符。例1:ls /dev/tty? 例2:ls /dev/tty2?
*:匹配任意0个或多个字符。例1:ls /dev/tty* 例2:ls /etc/host*
[]: 匹配[]中的任意单个字符。例:ls /dev/tty[135]2
例:ls /dev/tty2[0-37-9]
{}:展开。格式是{首数..尾数..步长}。例1:echo a{0..9} b{0..9..2}
例2:mkdir -v a{0..5}
例3:rmdir -v a{0..5}

--------------
重定向输出:作用是将原本显示在屏幕上的信息写入到指定的文件中。分为>覆盖写入,>>追加写入。
例:date > a.txt 将date命令的结果覆盖写入到a.txt中
cat a.txt 读a.txt文件
lsblk >> a.txt 将lsblk命令的结果追加写入到a.txt中

cat a.txt

------------------------
用户管理目标:
1、用户账号的作用2、用户增、删、改、查3、用户账号的相关数据文件4、用户组的创建、用户的分组

用户账号的作用:
1、标识用户的身份,让每个用户有私有的文件夹(家目录),未授权时,每个人只能访问自己的文件。2、每个用户远程管理服务器时,所做的操作,root管理员可查到。

查询:
查用户id号:id 或 id 用户名
注:id查到的信息包括uid用户号、gid组号、Gid附属组,root用户的3个ID号都为0。

用户账号的相关数据文件:

一、passwd记录用户的账号信息。用useradd增、userdel删除、usermod改会影响到此文件内容。
用户的账号信息文件:head -3 /etc/passwd 内容如下
root:x:0:0:root:/root:/bin/bash
格式说明:
1.用户名:2.密码:x表示此用户需要用密码登录。如果想免密码登录,用vim修改此文件,将x删掉即可。3.用户uid号4.用户的gid组号5.用户的备注信息6.用户的家目录7.用户登录的shell环境
二、shadow文件记录用户密码信息。用usermod、passwd会影响此文件内容。
head -3 /etc/shadow 内容如下
root:$6$Se16soYt$MK.mk:17464:0:99999:7:::
bin:*:17110:0:99999:7:::
格式说明:
1.用户名2.加密的密码3.最后密码修改的时间4.允许修改密码最小间隔时间5.允许修改密码最大间隔时间6.密码过期警告时间7.密码的宽限时间8.密码的失效时间(年-月-日)9.保留,暂时没有具体功能
三、用户账号的增、删、改,以及密码设置。增(add):useradd
删(del):userdel
改(modify):usermod
密码设置:passwd
临时切换用户:su - 用户名 (用exit退出此用户)
---------------------------
增(add):useradd
查帮助手册:man useradd
格式:useradd [选项] 用户名
例:useradd -D 显示或更改默认的useradd 配置。这些设置保存在/etc/default/useradd文件中
useradd ak 创建ak用户。是按照系统默认设置来创建。
useradd -d /opt/sky -u 110 -s /sbin/nologin -c 'admin' sky
useradd -g 2 -G 0,1,2 -s /bin/bash bk
tail -5 /etc/passwd 查看/etc/passwd文件的最后5行

选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段(即备注)
-d, --home-dir HOME_DIR 新账户的主目录(即家目录)
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f,--inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID,必须指定已存在的组号或组名
-G, --groups GROUPS 新账户的附加组列表
-h,--help 显示此帮助信息并推出
-k,--skel SKEL_DIR 使用此目录作为骨架目录
-K,--key KEY=VALUE 不使用/etc/login.defs 中的默认值
-l,--no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m,--create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N,--no-user-group 不创建同名的组
-o,--non-unique 允许使用重复的 UID 创建用户
-p,--password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R,--root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户ID
-U,--user-group 创建与用户同名的组
-Z,--selinux-user SEUSER 为 SELinux 用户映射使用指定SEUSER

删(del):userdel
格式:userdel [-r] 用户名
例:userdel -r ak 删除ak用户账号及(-r)其家目录和邮件,用户的邮件位于/var/spool/mail目录中
userdel sky 删除sky用户账号
userdel bk
ls /home /opt 显示指定目录的文件列表。看是否有sky、bk目录

改(modify):usermod
功能:修改用户账号的相关信息,包括用户名、备注描述信息、家目录、uid、gid、附属组、shell等信息。
格式:usermod [选项] 用户名
例:useradd ak 创建ak账号
passwd ak 给ak用户设置登录密码
id ak 查id号
grep ak /etc/passwd 显示/etc/passwd文件中关于ak的内容
usermod ak -c 'admin' -u 120 -g 2 -G 0,2,5 -s /sbin/nologin
usermod ak -md /opt/ak 给ak用户的家搬到/opt/ak目录
usermod -L ak 锁定ak账号
usermod -U ak 解锁ak账号
passwd -S ak 查ak账号的密码状态
usermod ak -l aker 修改ak用户名为aker
userdel -r aker 删除aker用户及其家目录和邮件

选项:
-c,--comment 注释 GECOS 字段的新值
-d,--home HOME_DIR 用户的新主目录
-e,--expiredate EXPIRE_DATE 设定帐户过期的日期为EXPIRE_DATE
-f,--inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g,--gid GROUP 强制使用 GROUP 为新主组
-G,--groups GROUPS 新的附加组列表GROUPS
-a,--append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h,--help 显示此帮助信息并推出
-l,--login LOGIN 新的登录名称
-L,--lock 锁定用户帐号
-m,--move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o,--non-unique 允许使用重复的(非唯一的) UID
-p,--password PASSWORD 将加密过的密码(PASSWORD) 设为新密码
-R,--root CHROOT_DIR chroot 到的目录
-s,--shell SHELL 该用户帐号的新登录shell
-u,--uid UID 用户帐号的新 UID
-U,--unlock 解锁用户帐号
-Z,--selinux-user SEUSER 用户账户的新 SELinux 用户映射

密码设置:passwd
用法:passwd [选项] 用户名
例:useradd ak
passwd ak
echo '112' | passwd --stdin ak 以脚本方式给ak用户设置密码为112
passwd -l ak 锁定ak账号
passwd -u ak 解锁ak账号
passwd -x 199 ak 用户ak的密码最长有效时限为199天
passwd -S ak 显示ak用户的密码状态
grep ak /etc/shadow 查看/etc/shadow文件中关于ak关键字的内容
passwd -n 3 ak 用户ak的密码最短有效时限为3天(密码修改的最短间隔时间)
passwd -w 6 ak 用户ak的密码过期警告时间为6天
passwd -i 4 ak 用户ak的密码过期4天后将被禁用,-1表示永远不会被禁用

选项:
-k,--keep-tokens 保持身份验证令牌不过期
-d,--delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l,--lock 锁定指名帐户的密码(仅限 root 用户)
-u,--unlock 解锁指名账户的密码(仅限 root 用户)
-e,--expire 终止指名帐户的密码(仅限 root 用户)
-f,--force 强制执行操作
-x,--maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n,--minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w,--warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i,--inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S,--status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
----------------------
组管理目标:
1、组的作用2、组的相关数据文件3、组增、删、改、查4、组的创建,组中添加、删除成员
1、组的作用组:类似于QQ群的功能。可以在组中添加、删除成员。有利于对权限进行管理。
2、组的相关数据文件组账号信息文件:head -3 /etc/group 内容如下
root:x:0:lp
格式: 组名:组密码:组gid号:组成员
例:用gpasswd -a lp root 在root组中添加lp用户。
用gpasswd -d lp root 在root组中删除lp用户。

组的密码文件:head -3 /etc/gshadow 内容如下
root:168:adm,bin,lp:adm
格式:组名:群密码:群主:组成员
例:gpasswd root 给root组设置密码
gpasswd -A adm,bin,lp root 给root设置3个管理员
gpasswd -M adm root 给root组重新设置成员名单adm,会替换原名单
head -3 /etc/gshadow 查看/etc/gshadow文件的前3行内容

3、组增、删、改、查组的增:groupadd [选项] 组名
例:groupadd grp1 创建grp1组
groupadd -g 210 grp2 创建grp2组,并指定gid为210
groupadd -r grp3 创建系统组账号grp3。系统组通常用于管理系统服务。
tail -5 /etc/group

组的删:groupdel [选项] 组名
例:groupdel grp1
groupdel grp2

组的改:groupmod [选项] 组名
例:groupmod -g 208 grp3 将grp3组的gid改成208
groupmod -n g3 grp3 将grp3组的名称改成g3
groupdel g3 删除g3组

组的查:
显示指定用户的组信息:groups 用户名
显示系统中的所有组账号信息:cat /etc/group

组密码设置:gpasswd 可以实现给组设置密码、添加和删除成员、设置组管理员
---------------------
用户和组的策略配置文件:cat /etc/login.defs
MAIL_DIR /var/spool/mail 用户邮件的主目录
PASS_MAX_DAYS 99999 密码的最大修改间隔时间
PASS_MIN_DAYS 0 密码的最小修改间隔时间
PASS_MIN_LEN 5 密码的最小长度
PASS_WARN_AGE 7 密码过期的警告时间
UID_MIN 1000 普通用户uid的最小值
UID_MAX 60000 普通用户uid的最大值
SYS_UID_MIN 201 系统用户uid的最小值(用useradd -r 创建的是系统用户)
SYS_UID_MAX 999 系统用户uid的最大值
注:Linux用户账号分为管理员(root)、普通用户(1000~60000)、系统用户(201~999)。而uid从1~200为保留号。
GID_MIN 1000 普通组的gid最小值
GID_MAX 60000 普通组的gid最大值
SYS_GID_MIN 201 系统组的gid最小值
SYS_GID_MAX 999 系统组的gid最大值
CREATE_HOME yes 启用创建用户家目录
UMASK 077 普通用户的权限掩码,实际umask值为022。
USERGROUPS_ENAB yes 允许删除用户的同时删除用户的组,前提是组中没有成员存在
ENCRYPT_METHOD SHA512 指定密码加密算法为SHA512算法。用man login.defs来查

创建新用户的默认设置:cat /etc/default/useradd
# useradd defaults file
GROUP=100 只有当用useradd -N lucy 创建用户时未创建同名的组时,这个新用户才会在100组中HOME=/home 用户家目录的基目录(小区)
INACTIVE=-1 密码永远不失效(不禁用)
EXPIRE= 密码的过期时间,默认为空
SHELL=/bin/bash 用户登录的shell
SKEL=/etc/skel 用户的环境模板文件目录。ls -a /etc/skel
CREATE_MAIL_SPOOL=yes 允许给用户创建邮箱
----------------------
综合练习:
1. 创建用户tk: useradd tk2. 查tk的编号:id tk3. 将tk用户的家目录搬到/opt/tker目录: usermod tk -md /opt/tker4. 修改tk用户的shell为/bin/sh: usermod tk -s /bin/sh5. 修改tk用户的备注信息为teacher:usermod tk -c 'teacher'6. 修改tk用户的用户名为tker:usermod tk -l tker7. 将tker的登录密码设置为tker: echo 'tker' | passwd --stdin tker8. 查看tker用户的账号信息文件内容: grep tker /etc/passwd9. 查看tker用户的密码信息文件内容: grep tker /etc/shadow10. 设置tker用户的密码最短有效时间为2天: passwd -n 2 tker 查:passwd -S tker11. 设置tker用户的密码最大有效时间为365天: passwd -x 365 tker 12. 设置tker用户的密码过期后4天将被禁用: passwd -i 4 tker 13. 查看tker用户的密码状态信息: passwd -S tker14. 删除tker用户及其家目录和邮件: userdel -r tker15. 创建3个部门的组teach、sales、design。查看这3个组信息文件内容。16. 给teach组创建2用户账号tom、jack,给sales组创建2个用户账号lucy、lily,给design组创建2个用户账号tim、jim。查看这3个组信息文件内容。17. 给teach组设置管理员为tom,给sales组设置管理员为lucy,给design组设置管理员为jim。查看这3个组的管理员信息文件内容。18. 删除3个部门的组teach、sales、design。19. 删除以上创建的所有用户账号及其家目录和邮箱。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 基础