目录

<!-- GFM-TOC -->

<!-- GFM-TOC -->

文件路径和文件访问*

inux 文件目录结构

  • linux 文件目录
  • / :根目录
  • /boot:引导文件目录
  • /bin :用户基本命令
  • /sbin:管理类基本命令
  • /etc:配置文件目录
  • /home:家目录
  • /dev:设备文件目录
  • /usr:应用程序目录
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

linux 下的文件类型

  • -:普通文件
  • d:目录文件
  • l:链接文件
  • b:快文件
  • c:字符文件
  • p: 管道文件
  • s:套接字文件
-rw-r--r--.  1 root root       642 Dec 10  2016 xattr.conf
crw-r--r--. 1 root root 10, 235 Mar 6 19:35 autofs
drwxr-xr-x. 3 root root 60 Mar 6 19:35 bus
lrwxrwxrwx. 1 root root 3 Mar 6 19:35 cdrom -> sr0

显示当前目录

  • pwd
[root@lib ~]#pwd
/root

进入上级目录

  • cd ..
[root@lib etc]#cd /etc/profile.d/
[root@lib profile.d]#pwd
/etc/profile.d
[root@lib profile.d]#cd ..
[root@lib etc]#pwd
/etc
[root@lib etc]#

返回家目录

  • cd 或者 cd ~
[root@lib profile.d]#pwd
/etc/profile.d
[root@lib profile.d]#cd
[root@lib <sub>]#pwd
/root
[root@lib </sub>]#

返回上一次工作路径

+ cd -

[root@lib profile.d]#pwd 
/etc/profile.d
[root@lib profile.d]#cd /data
[root@lib data]#pwd
/data
[root@lib data]#cd -
/etc/profile.d

相关的环境变量

  • PWD OLDPWD
[root@lib profile.d]#echo $PWD $OLDPWD
/etc/profile.d /data

相对路径

  • 相对路径指的是相对于当前路径
[root@lib network-scripts]#pwd
/etc/sysconfig/network-scripts
[root@lib network-scripts]#ll ../../../boot
total 185612
-rw-r--r--. 1 root root 193903 Oct 19 23:23 config-4.18.0-348.el8.x86_64
drwxr-xr-x. 3 root root 4096 Mar 2 17:48 efi
drwx------. 4 root root 4096 Mar 5 00:08 grub2

绝对路径

  • 绝对路径是指从根开始的路径

相关的两个命令

  • basename : 文件名称
  • dirname :目录名称
[root@lib network-scripts]#basename /etc/sysconfig/network-scripts/ifcfg-ens160 
ifcfg-ens160
[root@lib network-scripts]#dirname /etc/sysconfig/network-scripts/ifcfg-ens160
/etc/sysconfig/network-scripts

列出目录名称

  • ls
  • -a : 列出所有文件,包括隐藏文件
  • -l : 列表形式显示详细信息
  • -S :从大到小排序
  • -t : 按mtime 排序
  • -ld :查看到目录详细属性
  • -R : 递归显示
  • -r : 倒序显示
[root@lib data]#ls -a 
. .. file1 file2 file3 file4 file5
[root@lib data]#ls -l
total 0
-rw-r--r--. 1 root root 0 Mar 8 22:18 file1
-rw-r--r--. 1 root root 0 Mar 8 22:18 file2
-rw-r--r--. 1 root root 0 Mar 8 22:18 file3
-rw-r--r--. 1 root root 0 Mar 8 22:18 file4
-rw-r--r--. 1 root root 0 Mar 8 22:18 file5
[root@lib data]#ll -S
total 76
-rw-r--r--. 1 root root 61726 Mar 8 22:20 file1
-rw-r--r--. 1 root root 89 Mar 8 22:21 file4
-rw-r--r--. 1 root root 43 Mar 8 22:20 file2
-rw-r--r--. 1 root root 43 Mar 8 22:20 file3
-rw-r--r--. 1 root root 0 Mar 8 22:18 file5
[root@lib data]#ll -r
total 76
-rw-r--r--. 1 root root 0 Mar 8 22:18 file5
-rw-r--r--. 1 root root 89 Mar 8 22:21 file4
-rw-r--r--. 1 root root 43 Mar 8 22:20 file3
-rw-r--r--. 1 root root 43 Mar 8 22:20 file2
-rw-r--r--. 1 root root 61726 Mar 8 22:20 file1
[root@lib data]#ll -t
total 76
-rw-r--r--. 1 root root 89 Mar 8 22:21 file4
-rw-r--r--. 1 root root 43 Mar 8 22:20 file3
-rw-r--r--. 1 root root 43 Mar 8 22:20 file2
-rw-r--r--. 1 root root 61726 Mar 8 22:20 file1
-rw-r--r--. 1 root root 0 Mar 8 22:18 file5
[root@lib data]#ls -ld file1
-rw-r--r--. 1 root root 61726 Mar 8 22:20 file1
root@lib data]#type ls
ls is aliased to `ls --color=auto'
[root@lib data]#alias ls
alias ls='ls --color=auto'

文件的三个时间

  • state 查看文件状态
  • access:读时间。以1day为间隔,或者小于modify时触发更新。
  • modify:写时间
  • change:元数据时间
[root@lib data]#stat file1
File: file1
Size: 80 Blocks: 8 IO Block: 4096 regular file
Device: 10302h/66306d Inode: 137 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2022-03-08 22:46:42.067528952 +0800
Modify: 2022-03-08 22:45:05.013529733 +0800
Change: 2022-03-08 22:46:24.224529096 +0800
Birth: 2022-03-08 22:20:10.867541750 +0800

其他

  • file : 判断文件类型
  • Linux和Windows文本文件的行结束标志不同。在Linux中,文本文 件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行。CRLF:回车换行。/r十六进制:0d . /n十六进制:0a . 从windows中拷贝文件到linux中需要转换格式。
[root@lib data]#file win.txt
win.txt: ASCII text, with CRLF line terminators
[root@lib data]#dos2unix win.txt
dos2unix: converting file win.txt to Unix format...
[root@lib data]#file win.txt
win.txt: ASCII text

文件通配符

常见通配符

* :匹配0个或多个字符,但不匹配”.“开头的文件,即隐藏文件
!*:上一个命令的参数
?:匹配任何单个字符
<sub>:当前用户家目录
</sub>-:前一个目录
[0-9]:匹配数字范围.一个字符
[a-z]:匹配字母范围,一个字符
[A-Z]:匹配字母范围,一个字符
[root]:匹配列表中任意一个字符
[^root]:匹配列表以外的任意一个字符
[^a-z]:匹配列表中以外任意一个字符
[:lower:]:任意一个小写字符
[:uper:]:任意一个大写字符
[:digit:]:0-9 任意一个数字
[:alnum:]:英文大小写及字符。0-9,a-z,A-Z。
{..}:一个序列
{A,B}:A 和 B 组成的序列
{1..20..3}:以3为间隔的序列
[root@lib data]#ll file[a-c].txt
-rw-r--r--. 1 root root 7 Mar 9 12:49 filea.txt
-rw-r--r--. 1 root root 0 Mar 9 12:52 fileA.txt
-rw-r--r--. 1 root root 2542 Mar 9 12:50 fileb.txt
-rw-r--r--. 1 root root 0 Mar 9 12:52 fileB.txt
-rw-r--r--. 1 root root 0 Mar 9 12:48 filec.txt
[root@lib data]#ll file{a..c}.txt
-rw-r--r--. 1 root root 7 Mar 9 12:49 filea.txt
-rw-r--r--. 1 root root 2542 Mar 9 12:50 fileb.txt
-rw-r--r--. 1 root root 0 Mar 9 12:48 filec.txt
[root@lib data]#ll file[1-6].txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file1.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file2.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file3.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file4.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file5.txt
[root@lib data]#ll file{1..6}.txt
ls: cannot access 'file6.txt': No such file or directory
-rw-r--r--. 1 root root 0 Mar 9 12:59 file1.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file2.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file3.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file4.txt
-rw-r--r--. 1 root root 0 Mar 9 12:59 file5.txt
[root@lib data]#ls -a /root
. .bash_logout .config Documents initial-setup-ks.cfg Pictures Templates
.. .bash_profile .cshrc Downloads .local .pki Videos
anaconda-ks.cfg .bashrc .dbus .esd_auth .mozilla Public .viminfo
.bash_history .cache Desktop .ICEauthority Music .tcshrc .Xauthority
[root@lib data]#ll i*[[:lower:]]
-rw-r--r--. 1 root root 0 Mar 9 13:49 iddd.txt
-rw-r--r--. 1 root root 0 Mar 9 13:50 iss1.txt
[root@lib data]#ll [0-9]*[^0-9]
-rw-r--r--. 1 root root 0 Mar 9 13:22 1.txt
-rw-r--r--. 1 root root 0 Mar 9 13:34 5.txt
[root@lib data]#ll [^a-Z]*
-rw-r--r--. 1 root root 0 Mar 9 13:34 111111
-rw-r--r--. 1 root root 0 Mar 9 13:23 1ddd5
-rw-r--r--. 1 root root 0 Mar 9 13:22 1.txt
-rw-r--r--. 1 root root 0 Mar 9 13:34 5.txt
[root@lib data]#ll /etc/rc[0-6]*
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc0.d -> rc.d/rc0.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc1.d -> rc.d/rc1.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc2.d -> rc.d/rc2.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc3.d -> rc.d/rc3.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc4.d -> rc.d/rc4.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc5.d -> rc.d/rc5.d
lrwxrwxrwx. 1 root root 10 Jul 28 2021 /etc/rc6.d -> rc.d/rc6.d
[root@lib data]#ll /etc/[mnrp]*.conf
-rw-r--r--. 1 root root 5165 Jun 30 2021 /etc/man_db.conf
-rw-r--r--. 1 root root 1108 Jun 24 2021 /etc/mke2fs.conf
-rw-r--r--. 1 root root 2620 May 11 2019 /etc/mtools.conf
-rw-r--r--. 1 root root 1160 Jul 30 2021 /etc/nfs.conf
-rw-r--r--. 1 root root 3606 Jul 30 2021 /etc/nfsmount.conf
lrwxrwxrwx. 1 root root 29 Mar 2 17:55 /etc/nsswitch.conf -> /etc/authselect/nsswitch.conf
-rw-r--r--. 1 root root 1362 May 14 2019 /etc/pbm2ppa.conf
-rw-r--r--. 1 root root 6300 May 14 2019 /etc/pnm2ppa.conf
-rw-r--r--. 1 root root 433 Apr 27 2020 /etc/radvd.conf
-rw-r--r--. 1 root root 1787 Jun 19 2021 /etc/request-key.conf
-rw-r--r--. 1 root root 80 Mar 6 19:35 /etc/resolv.conf
-rw-r--r--. 1 root root 3186 Aug 11 2021 /etc/rsyslog.conf

文本管理命令

复制文件和目录

  • 使用 cp 命令可以实现文件或目录的复制
  • -i :目标存在,覆盖前提醒
  • -f: froce
  • -r,-R:递归复制目录所有内容
  • -b:目标存在,覆盖前备份。默认形式 filename
  • --backup=numbered:目标存在,覆盖前备份,多个版本,形式filename #~
  • -p:拥有者和时间戳不变
  • -d:不复制原文件,只复制链接
  • -a:等同于-dpr
  • -u:update 只复制源比目标新的文件或目标不存在的文件
[root@lib data]#type cp
cp is aliased to `cp -i'
[root@lib data]#cp <sub>lv/zh.txt /data
[root@lib data]#ll zh.txt
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.txt
[root@lib data]#cp </sub>lv/zh.txt /data
cp: overwrite '/data/zh.txt'?
[root@lib data]#cp -b <sub>lv/zh.txt /data
cp: overwrite '/data/zh.txt'? y
[root@lib data]#ll zh*
-rw-r--r--. 1 root root 25 Mar 9 17:35 zh.txt
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.txt</sub>
[root@lib data]#\cp -f --backup=numbered <sub>lv/zh.txt /data
[root@lib data]#\cp -f --backup=numbered </sub>lv/zh.txt /data
[root@lib data]#\cp -f --backup=numbered <sub>lv/zh.txt /data
[root@lib data]#\cp -f --backup=numbered </sub>lv/zh.txt /data
[root@lib data]#\cp -f --backup=numbered <sub>lv/zh.txt /data
[root@lib data]#ll zh*
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.txt</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:35 zh.txt.<sub>1</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.<sub>2</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.<sub>3</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>4</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>5</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>6</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>7</sub>
[root@lib data]#cp -p <sub>lv/zh.txt /data/zh1.txt
[root@lib data]#ll zh*
-rw-rw-r--. 1 lv lv 25 Mar 9 17:05 zh1.txt
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.txt</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:35 zh.txt.<sub>1</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.<sub>2</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.<sub>3</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>4</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>5</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>6</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.<sub>7</sub>
[root@lib data]#cp -a /root /data/rootdir
[root@lib data]#ll rootdir
total 8
-rw-------. 1 root root 1338 Mar 2 17:56 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Desktop
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Documents
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Downloads
-rw-r--r--. 1 root root 1788 Mar 2 20:26 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Music
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Pictures
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Public
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Templates
drwxr-xr-x. 2 root root 6 Mar 3 16:08 Videos
[root@lib data]#cp -a /etc/ /data/backup`date +%F_%T`
[root@lib data]#ll -d back*
drwxr-xr-x. 142 root root 8192 Mar 8 23:00 backup2022-03-09_17:41:23

移动文件

  • mv命令可以实现文件或目录的移动和改名
  • -i
  • -f
  • -b
  • 参数同cp命令
  • rename 可以批量修改文件名称
[root@lib data]#ll zh*
-rw-rw-r--. 1 lv lv 25 Mar 9 17:05 zh1.txt
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.txt<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:35 zh.txt.</sub>1<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.</sub>2<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.txt.</sub>3<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.</sub>4<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.</sub>5<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.</sub>6<sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.txt.</sub>7<sub>
[root@lib data]#rename 'txt' 'text' zh*
[root@lib data]#ll zh*
-rw-rw-r--. 1 lv lv 25 Mar 9 17:05 zh1.text
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.text
-rw-r--r--. 1 root root 25 Mar 9 17:34 zh.text</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:35 zh.text.<sub>1</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.text.<sub>2</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:37 zh.text.<sub>3</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.text.<sub>4</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.text.<sub>5</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.text.<sub>6</sub>
-rw-r--r--. 1 root root 25 Mar 9 17:38 zh.text.<sub>7</sub>

文件删除和节点表结构

  • 使用rm命令可以删除文件
  • -r:递归
  • -f:force
  • 删除文件有时不能及时的释放磁盘(如文件正在被占用)
  • 此时可以使用">" 及时的释放磁盘空间.依赖于BASH。
  • cat /dev/null > /boot/bigfile.img
[root@lib data]#ll zh1.text
-rw-rw-r--. 1 lv lv 25 Mar 9 17:05 zh1.text
[root@lib data]#>zh1.text
[root@lib data]#ll zh1.text
-rw-rw-r--. 1 lv lv 0 Mar 9 21:34 zh1.text

硬链接,软链接,重定向

硬链接​ :本质上就是给一个文件起一个新的名称,实质上是同一个文件.不支持跨设备,只能对文件。

  • ln
  • ln filename [linkname]

软连接​:一个符号链接指向另一个文件,软链接文件和原文件本质上不是同一个文件。支持跨设备。

[root@lib data]#ll z1*
-rw-rw-r--. 1 lv lv 7 Mar 9 23:01 z11.txt
[root@lib data]#ln z11.txt z111.txt
[root@lib data]#ll z1*
-rw-rw-r--. 2 lv lv 7 Mar 9 23:01 z111.txt
-rw-rw-r--. 2 lv lv 7 Mar 9 23:01 z11.txt
[root@lib data]#ll -i z1*
178 -rw-rw-r--. 2 lv lv 7 Mar 9 23:01 z111.txt
178 -rw-rw-r--. 2 lv lv 7 Mar 9 23:01 z11.txt

管道和重定向

  • linux给程序提供了三种I/O
  • 标准输入 :0。comand < file。
  • 标准输出:1 ; 1> 或者> 。输出到文件,终端,错误输出 。追加到文件>> 。
  • 标准错误输出:2; 2> ,输出到文件,终端,标准输出。追加到文件2>> 。
  • 合并输出:&> 或者>&,输出到文件,终端。 追加到文件 &>>
  • 格式:COMMAND > /path/to/file.out 2>&1 (顺序很重要)

COMMAND >> /path/to/file.out 2>&1

root@lib data]#ll f1 xx 2>&1 1>hh
ls: cannot access 'xx': No such file or directory
[root@lib data]#cat hh
-rw-r--r--. 1 root root 0 Mar 10 00:30 f1
[root@lib data]#ll f1 xx 1>hh 2>&1
[root@lib data]#cat hh
ls: cannot access 'xx': No such file or directory
-rw-r--r--. 1 root root 0 Mar 10 00:30 f1
  • tee 命令重定向到两个方向 ,文件和终端。
  • -a 追加
[root@lib data]#ll | tee tee.txt
total 16
-rw-r--r--. 1 root root 564 Mar 10 01:09 df.txt
-rw-r--r--. 1 root root 0 Mar 10 00:30 f1
-rw-r--r--. 1 root root 92 Mar 10 00:32 hh
-rw-r--r--. 1 root root 8 Mar 10 01:18 linux.txt
-rw-r--r--. 1 root root 0 Mar 10 00:59 tr
-rw-r--r--. 1 root root 12 Mar 10 01:14 win.txt
[root@lib data]#cat tee.txt
total 16
-rw-r--r--. 1 root root 564 Mar 10 01:09 df.txt
-rw-r--r--. 1 root root 0 Mar 10 00:30 f1
-rw-r--r--. 1 root root 92 Mar 10 00:32 hh
-rw-r--r--. 1 root root 8 Mar 10 01:18 linux.txt
-rw-r--r--. 1 root root 0 Mar 10 00:59 tr
-rw-r--r--. 1 root root 12 Mar 10 01:14 win.txt

其他

  • 合并多个程序

{;;}:{ll;cat;} (; ; ):(ll;cat;)

  • tr :转换和删除字符

格式:tr [option] set1 set2

  • -d:删除第一字符集字符
  • -s: 去重
  • -t:将第一字符集字符转化为第二字符集字符
[root@lib data]#df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 970004 0 970004 0% /dev
tmpfs 998404 0 998404 0% /dev/shm
tmpfs 998404 9488 988916 1% /run
tmpfs 998404 0 998404 0% /sys/fs/cgroup
/dev/nvme0n1p1 104806400 5413576 99392824 6% /
/dev/nvme0n1p2 52403200 398444 52004756 1% /data
/dev/nvme0n1p5 999320 193968 736540 21% /boot
tmpfs 199680 12 199668 1% /run/user/42
tmpfs 199680 0 199680 0% /run/user/0
[root@lib data]#df > df.txt
[root@lib data]#tr -s ' ' < df.txt
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 970004 0 970004 0% /dev
tmpfs 998404 0 998404 0% /dev/shm
tmpfs 998404 9488 988916 1% /run
tmpfs 998404 0 998404 0% /sys/fs/cgroup
/dev/nvme0n1p1 104806400 5413576 99392824 6% /
/dev/nvme0n1p2 52403200 398420 52004780 1% /data
/dev/nvme0n1p5 999320 193968 736540 21% /boot
tmpfs 199680 12 199668 1% /run/user/42
tmpfs 199680 0 199680 0% /run/user/0
[root@lib data]#file win.txt
win.txt: ASCII text, with CRLF line terminators
[root@lib data]#tr -d '\r' <win.txt>linux.txt
[root@lib data]#file linux.txt
linux.txt: ASCII text

用户,组和权限

  • 和文件,组相关文件
  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gpasswd
  • passwd 格式

用户名 密码 UID GID 用户全名 目录 SHELL

  • 生成随机密码
[root@lib data]#tr -dc '[:alnum:]' < /dev/urandom | head -c 12
OMbEjACNT9C5[root@lib data]#

用户和组管理命令

  • 用户管理命令
  • useradd

-u UID -g GID -N 不创建私用组做主组,使用users组做主组 -C 用户注释 -d 家目录 -s SHELL -G 附加组,组必须先存在 -r 系统用户 -m 系统用户家目录 -M 不创建家目录,用于非系统用户 -p 指定加密密码

  • useradd 命令默认值设定由/etc/default/useradd 定义
  • 添加新用户相关的文件
  • /etc/default/useradd
  • /etc/skel/*
  • /etc/login.defs
[root@lib data]#useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "apache" apache
[root@lib data]#id apache
uid=48(apache) gid=1001(apache) groups=1001(apache)
[root@lib data]#cat /etc/passwd | tail -n -1
apache:x:48:1001:apache:/var/www:/sbin/nologin
[root@lib data]#getent passwd apache
apache:x:48:1001:apache:/var/www:/sbin/nologin

生成一个sha512的加密密码


[root@lib data]#useradd -p `openssl passwd -6 mage123` mage
[root@lib data]#getent shadow mage
mage:$6$cABtb3Q5MiwV9f9r$CtbRm4wIPV66rGKYyVrd7aSnISaXpCPUQ30Wlj8WtQ3RqbRU8zgFyfe65PGdzZIQHIw7T21.SJjk32RqO/D4C.:19063:0:99999:7:::
  • usermod :主要是/etc/passwd 里内容
  • -l :改用户名称
  • 其他于useradd 相似
  • groupmems [选项] [动作]
  • 选项
  • -g --group 更改为指定组(只有rootc才可以执行)
  • 动作
  • -a --add username 指定用户加入组
  • -d --delete username 从组中删除用户
  • -p -- purge 从组中清除所有用户
  • -l --list 显示组成员列表
  • -h --help 帮助

usermod 和 groupmems 都能修改用户和组的关系,前者从用户的角度,后者从组的角度。(纯属个人理解)

  • userdel
  • -r 删除家目录和邮箱(/var/spool/mail/)
  • passwd
  • --stdin

echo '12345' | passwd --stdin mage

  • chpasswd
  • echo "tom:123" | chpasswd
  • chage 修改用户密码策略,修改/etc/shadow 内容
  • -d 更改密码时间
  • -m mindays
  • -M max-days
  • -w warndays
  • -I inactive 密码过期后宽限时间
  • -E expiredate 用户的有效期
  • -l 显示密码策略
  • newgrp

newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组。

  • 组账号维护命令
  • groupadd
  • groupmod
  • groupdel
  • chown option owner[:group] file 设置文件属主
  • -R 递归 很危险
  • --reference=file 参考file文件的属性修改
[root@lib data]#mkdir -p /data/tom/cat
[root@lib data]#ll tom
total 0
drwxr-xr-x. 2 root root 6 Mar 13 08:50 cat
[root@lib data]#chown -R lv:lv tom
[root@lib data]#ll tom
total 0
drwxr-xr-x. 2 lv lv 6 Mar 13 08:50 cat
  • chgrp option group file 修改属主
  • -R
  • --reference groupfile

文件权限管理

  • 文件权限针对对象
  • owner 属主 u
  • group 属组 g
  • other 其他 o
  • 权限分为三种
  • r
  • w
  • x 文件夹的x权限表示读取元文件 。大写X 表示只给文件夹x 权限。
[lv@lib ~]$id lv
uid=1000(lv) gid=1000(lv) groups=1000(lv)
[lv@lib dir]$ll
total 0
drwxr-xr--. 2 root root 18 Mar 13 14:46 cat
[lv@lib dir]$ll cat
ls: cannot access 'cat/lili': Permission denied
total 0
-????????? ? ? ? ? ? lili
[lv@lib dir]$ls cat
ls: cannot access 'cat/lili': Permission denied
lili
[root@lib var]#groupadd apps;useradd -g apps tomcat;chown -R tomcat:apps /var/tmp
[root@lib var]#id tomcat
uid=1002(tomcat) gid=1003(apps) groups=1003(apps)
[root@lib var]#ll -d /var/tmp
drwxrwxrwt. 5 tomcat apps 265 Mar 13 17:08 /var/tmp
[root@lib var]#chmod 660 /var/tmp
[root@lib var]#ll -d /var/tmp
drw-rw----. 5 tomcat apps 265 Mar 13 17:08 /var/tmp

新建文件和目录的默认权限

  • umask 值
  • 新建文件的默认权限= 666-umask,如果某位是奇数,自动加1,偶数位不变。
  • 新建文件夹的默认权限=777-umask
  • 非特权用户umask=002
  • 特权用户umask=022
  • 新建用户,家目录的权限是700。如果/etc/login.defs 的HOME_MODE没有设置,则使用umask值创建家目录。
[root@lib data]#umask 666;touch test ;ll test
----------. 1 root root 0 Mar 13 16:57 test

文件特殊属性和FACL

  • 特殊权限
  • SUID 作用于二进制文件。运行者将拥有所有者的权限。
  • SGID 作用于二进制文件。运行者将拥有所有组的权限。

作用于文件夹时,其下创建的文件夹和文件的属组与该文件属组相同。就是继承该文件属组。

  • STICKY 作用于目录,其下文件只能由属主删除。
  • 设置文件夹/文件特殊属性
  • chattr (change attributes)
  • +i 不能删除,改名,更改。-i 去除属性。
  • +a 不能删除,改名,只能追加内容。-a去除属性。
  • lsattr 查看文件特殊属性
  • 访问控制列表

访问控制权限实现了灵活的权限管理,除了文件所有者,所属组和其他人可以对更多用户设置权限。

  • ACL 生效顺序

所有者 自定义用户 属组|自定义组 其他人 +setfacl

  • -m 添加acl条目
  • -x 删除acl条目
  • -b 删除所有条目,恢复默认
  • -R 递归操作子目录
  • --set-file=file 从文件中读取访问控制列表条目
  • --set=ACL 覆盖替换当前访问列表,可以用来修改默认权限。ACL中要包括UGO默认权限的设置。
  • 备份ACL

getfacl -R /tmp/dir > acl.txt

  • 消除ACL权限

setfacl -R -b /tmp/dir

  • 还原ACL权限
  • setfacl -R --set-file=acl.txt /tmp/dir
  • setfacl --restore acl.txt
  • 复制file1的acl权限给file2
  • getfacl file1 | setfacl --set-file=- file2
  • 查看ACL权限
  • getfacl -R /tmp/dir
[root@lib cat]#setfacl -m u:lv:rwx lili
[root@lib cat]#getfacl lili
# file: lili
# owner: root
# group: root
user::rw-
user:lv:rwx
group::r--
mask::rwx
other::r--

[root@lib cat]#ll lili
-rw-rwxr--+ 1 root root 0 Mar 13 20:12 lili #属组位置的权限是mask的值,实际属组权限 getfacl 查看为:group::r-- 。
[root@lib cat]#setfacl -m mask::rw lili
[root@lib cat]#getfacl lili
# file: lili
# owner: root
# group: root
user::rw-
user:lv:rwx #effective:rw-
group::r--
mask::rw-
other::r--

[root@lib cat]#ll lili
-rw-rw-r--+ 1 root root 0 Mar 13 20:12 lili
[root@lib cat]#chmod g-w lili
[root@lib cat]#ll lili
-rw-r--r--+ 1 root root 0 Mar 13 20:12 lili
[root@lib cat]#getfacl lili
# file: lili
# owner: root
# group: root
user::rw-
user:lv:rwx #effective:r--
group::r--
mask::r--
other::r--
[root@lib dir]#ll -d cat
drw-r--r--. 2 root root 18 Mar 13 20:12 cat
[root@lib dir]#setfacl --set u::rw,u:lv:rw,g::r,o::r cat
[root@lib dir]#ll cat
total 0
-rw-r--r--. 1 root root 0 Mar 13 20:12 lili
[root@lib dir]#ll -d cat
drw-rw-r--+ 2 root root 18 Mar 13 20:12 cat
[root@lib dir]#getfacl cat
# file: cat
# owner: root
# group: root
user::rw-
user:lv:rw-
group::r--
mask::rw-
other::r--