当前位置:   article > 正文

Linux文件管理、标准I/O重定向和管道以及Linux用户、组和权限知识总结_io重定向、管道、用户与组管理

io重定向、管道、用户与组管理

一、文件管理

1.1、Linux下的文件类型

● -  普通文件

● d 目录文件directory

● b 块设备blocks

● c字符设备character

● |符号链接文件link

●p管道文件pipe

●s套接字文件socket

范例:

  1. 1 [root@centos7 ~]#ls -l /run/
  2. 2 total 60
  3. 3 drwxr-xr-x. 2 root root 100 Mar 29 09:32 abrt
  4. 4 -rw-------. 1 root root 11 Mar 29 09:32 alsactl.pid
  5. 5 -rw-r--r--. 1 root root 5 Mar 29 09:32 atd.pid
  6. 6 -rw-r--r--. 1 root root 4 Mar 29 09:32 auditd.pid
  7. 7 prw-------. 1 root root 0 Mar 29 09:32 autofs.fifo-misc
  8. 8 prw-------. 1 root root 0 Mar 29 09:32 autofs.fifo-net
  9. 9 drwxr-xr-x. 2 avahi avahi 80 Mar 29 09:32 avahi-daemon
  10. 10 drwxr-xr-x. 2 root root 40 Mar 29 09:32 console
  11. 11 -rw-r--r--. 1 root root 5 Mar 29 09:32 crond.pid
  12. 12 ----------. 1 root root 0 Mar 29 09:32 cron.reboot
  13. 13 drwx------. 2 root root 40 Mar 29 09:32 cryptsetup
  14. 14 drwxr-xr-x. 3 root lp 80 Mar 29 09:32 cups
  15. 15 drwxr-xr-x. 2 root root 60 Mar 29 09:32 dbus
  16. 16 -rw-r--r--. 1 root root 5 Mar 29 19:18 dhclient-ens33.pid
  17. 17 prw-------. 1 root root 0 Mar 29 09:32 dmeventd-client
  18. 18 prw-------. 1 root root 0 Mar 29 09:32 dmeventd-server
  19. 19 -rw-------. 1 root root 0 Mar 29 09:32 ebtables.lock
  20. 20 drwxr-xr-x. 2 root root 40 Mar 29 09:32 faillock
  21. 21 drwxr-x---. 2 root root 40 Mar 29 14:20 firewalld
  22. 22 -rw-------. 1 root root 4 Mar 29 09:32 gssproxy.pid
  23. 23 srw-rw-rw-. 1 root root 0 Mar 29 09:32 gssproxy.sock
  24. 24 drwxr-xr-x. 4 root root 100 Mar 29 09:32 initramfs
  25. 25 -rw-r--r--. 1 root root 4 Mar 29 09:32 ksmtune.pid
  26. 26 drwxr-xr-x. 7 root root 240 Mar 29 09:32 libvirt
  27. 27 -rw-r--r--. 1 root root 4 Mar 29 09:32 libvirtd.pid
  28. 28 drwxr-xr-x. 8 root root 220 Mar 29 10:12 lock
  29. 29 drwxr-xr-x. 3 root root 60 Mar 29 09:32 log
  30. 30 drwxrwxr-x. 3 root libstoragemgmt 60 Mar 29 09:32 lsm
  31. 31 drwx------. 2 root root 80 Mar 29 09:32 lvm
  32. 32 -rw-r--r--. 1 root root 4 Mar 29 09:32 lvmetad.pid
  33. 33 srwxr-xr-x. 1 root root 0 Mar 29 09:32 mcelog-client
  34. 34 -rw-r--r--. 1 root root 3 Mar 29 09:32 mcelog.pid
  35. 35 drwx--x---. 2 root root 40 Mar 29 09:32 mdadm
  36. 36 drwxr-xr-x. 2 root root 40 Mar 29 09:32 mount
  37. 37 drwxrwxr-x. 2 root root 40 Mar 29 09:32 netreport
  38. 38 drwxr-xr-x. 4 root root 140 Mar 29 14:20 NetworkManager
  39. 39 drwxr-xr-x. 2 root root 40 Mar 29 09:32 plymouth
  40. 40 drwxr-xr-x. 2 root root 40 Mar 29 09:32 ppp
  41. 41 drwxr-xr-x. 2 radvd radvd 40 Mar 29 09:32 radvd
  42. 42 drwx------. 2 rpc rpc 40 Mar 29 09:32 rpcbind
  43. 43 -r--r--r--. 1 root root 0 Mar 29 09:32 rpcbind.lock
  44. 44 srw-rw-rw-. 1 root root 0 Mar 29 09:32 rpcbind.sock
  45. 45 -rw-r--r--. 1 rpcuser rpcuser 5 Mar 29 09:32 rpc.statd.pid
  46. 46 drwxr-xr-x. 2 root root 40 Mar 29 09:32 samba
  47. 47 drwxrwxr-x. 2 root screen 40 Mar 29 09:32 screen
  48. 48 drwxr-xr-x. 2 root root 40 Mar 29 09:32 sepermit
  49. 49 drwxr-xr-x. 2 root root 40 Mar 29 09:32 setrans
  50. 50 drwx--x--x. 2 setroubleshoot setroubleshoot 40 Mar 29 09:32 setroubleshoot
  51. 51 -rw-------. 1 root root 5 Mar 29 09:32 sm-notify.pid
  52. 52 drwxr-xr-x. 2 root root 40 Mar 29 09:32 spice-vdagentd
  53. 53 -rw-r--r--. 1 root root 5 Mar 29 09:32 sshd.pid
  54. 54 drwx--x--x. 3 root root 60 Mar 29 09:32 sudo
  55. 55 drwxr-xr-x. 2 root root 60 Mar 29 09:32 sysconfig
  56. 56 -rw-------. 1 root root 4 Mar 29 09:32 syslogd.pid
  57. 57 drwxr-xr-x. 18 root root 440 Mar 29 09:32 systemd
  58. 58 drwxr-xr-x. 2 root root 60 Mar 29 09:32 tmpfiles.d
  59. 59 drwxr-xr-x. 2 root root 60 Mar 29 09:32 tuned
  60. 60 drwxr-xr-x. 7 root root 160 Mar 29 09:35 udev
  61. 61 drwxr-xr-x. 3 root root 60 Mar 29 09:34 user
  62. 62 -rw-rw-r--. 1 root utmp 1920 Mar 29 16:31 utmp
  63. 63 drwxr-xr-x. 2 root root 60 Mar 29 09:32 vmware
  64. 64 -rw-------. 1 root root 0 Mar 29 09:32 xtables.lock

 

1.2、文件操作命令

1.2.1显示当前工作目录

Linux pwd命令用于显示工作目录。

执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

● -p显示真实物理路径

● -l 显示链接路径

范例:

  1. 1 [root@centos7 ~]#pwd
  2. 2 /root
  3. 3 [root@centos7 ~]#cd /data
  4. 4 [root@centos7 data]#pwd
  5. 5 /data
  6. 6 [root@centos7 data]#

 

1.2.2、切换目录

Linux cd命令用于切换当前工作目录至 dirName(目录参数)。

其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

另外,”~” 也表示为 home 目录 的意思,”.” 则是表示目前所在的目录,”..” 则表示目前目录位置的上一层目录。

●切换至父目录:cd ..

●切换至当前用户主目录:cd

●切换至以前的工作目录:cd -

范例:

  1. 1 [root@centos7 data]#cd /etc/sysconfig/
  2. 2 [root@centos7 sysconfig]#cd ..
  3. 3 [root@centos7 etc]#cd
  4. 4 [root@centos7 ~]#cd -
  5. 5 /etc
  6. 6 [root@centos7 etc]#

1.2.3、列出目录内容

ls命令可以列出当前目录的内容或指定目录

● -a 包含隐藏文件

● -l 显示额外的信息

● -R 目录递归

● -ld 目录和符号链接信息

● -1 文件分行显示

● -S 按从大到小排序

● -t 按mtime排序

● -u 配合-t选项,显示并按atime从新到j旧排序

● -U 按目录存放顺序显示

● - X 按文件后缀排序

 范例:

  1. [root@centos7 ~]#ls -R /boot
  2. /boot:
  3. config-3.10.0-1062.el7.x86_64
  4. efi
  5. grub
  6. grub2
  7. initramfs-0-rescue-2fab55e6ef42422b8cfc57ccd7db581f.img
  8. initramfs-3.10.0-1062.el7.x86_64.img
  9. initramfs-3.10.0-1062.el7.x86_64kdump.img
  10. symvers-3.10.0-1062.el7.x86_64.gz
  11. System.map-3.10.0-1062.el7.x86_64
  12. vmlinuz-0-rescue-2fab55e6ef42422b8cfc57ccd7db581f
  13. vmlinuz-3.10.0-1062.el7.x86_64
  14. /boot/efi:
  15. EFI
  16. /boot/efi/EFI:
  17. BOOT centos
  18. /boot/efi/EFI/BOOT:
  19. BOOTX64.EFI fallback.efi fbx64.efi
  20. /boot/efi/EFI/centos:
  21. BOOT.CSV fw fwupx64.efi MokManager.efi shimx64-centos.efi
  22. BOOTX64.CSV fwupia32.efi mmx64.efi shim.efi shimx64.efi
  23. /boot/efi/EFI/centos/fw:
  24. /boot/grub:
  25. splash.xpm.gz
  26. /boot/grub2:
  27. device.map fonts grub.cfg grubenv i386-pc locale
  28. /boot/grub2/fonts:
  29. unicode.pf2
  30. /boot/grub2/i386-pc:
  31. acpi.mod gdb.mod pata.mod
  32. adler32.mod geli.mod pbkdf2.mod
  33. affs.mod gettext.mod pbkdf2_test.mod
  34. afs.mod gfxmenu.mod pcidump.mod
  35. ahci.mod gfxterm_background.mod pci.mod
  36. all_video.mod gfxterm_menu.mod plan9.mod
  37. aout.mod gfxterm.mod play.mod
  38. archelp.mod gptsync.mod png.mod
  39. ata.mod gzio.mod priority_queue.mod
  40. at_keyboard.mod halt.mod probe.mod
  41. backtrace.mod hashsum.mod procfs.mod
  42. bfs.mod hdparm.mod progress.mod
  43. biosdisk.mod hello.mod pxechain.mod
  44. bitmap.mod help.mod pxe.mod
  45. bitmap_scale.mod hexdump.mod raid5rec.mod
  46. blocklist.mod hfs.mod raid6rec.mod
  47. blscfg.mod hfspluscomp.mod read.mod
  48. boot.img hfsplus.mod reboot.mod
  49. boot.mod http.mod regexp.mod
  50. bsd.mod iorw.mod reiserfs.mod
  51. btrfs.mod iso9660.mod relocator.mod
  52. bufio.mod jfs.mod romfs.mod
  53. cat.mod jpeg.mod scsi.mod
  54. cbfs.mod keylayouts.mod search_fs_file.mod
  55. cbls.mod keystatus.mod search_fs_uuid.mod
  56. cbmemc.mod ldm.mod search_label.mod
  57. cbtable.mod legacycfg.mod search.mod
  58. cbtime.mod legacy_password_test.mod sendkey.mod
  59. chain.mod linux16.mod serial.mod
  60. cmdline_cat_test.mod linux.mod setjmp.mod
  61. cmosdump.mod loadenv.mod setjmp_test.mod
  62. cmostest.mod loopback.mod setpci.mod
  63. cmp.mod lsacpi.mod sfs.mod
  64. command.lst lsapm.mod signature_test.mod
  65. configfile.mod lsmmap.mod sleep.mod
  66. core.img ls.mod sleep_test.mod
  67. cpio_be.mod lspci.mod spkmodem.mod
  68. cpio.mod luks.mod squash4.mod
  69. cpuid.mod lvm.mod syslinuxcfg.mod
  70. crc64.mod lzopio.mod tar.mod
  71. cryptodisk.mod macbless.mod terminal.lst
  72. crypto.lst macho.mod terminal.mod
  73. crypto.mod mda_text.mod terminfo.mod
  74. cs5536.mod mdraid09_be.mod test_blockarg.mod
  75. datehook.mod mdraid09.mod testload.mod
  76. date.mod mdraid1x.mod test.mod
  77. datetime.mod memdisk.mod testspeed.mod
  78. diskfilter.mod memrw.mod tftp.mod
  79. disk.mod minicmd.mod tga.mod
  80. div_test.mod minix2_be.mod time.mod
  81. dm_nv.mod minix2.mod trig.mod
  82. drivemap.mod minix3_be.mod tr.mod
  83. echo.mod minix3.mod truecrypt.mod
  84. efiemu.mod minix_be.mod true.mod
  85. ehci.mod minix.mod udf.mod
  86. elf.mod mmap.mod ufs1_be.mod
  87. eval.mod moddep.lst ufs1.mod
  88. exfat.mod modinfo.sh ufs2.mod
  89. exfctest.mod morse.mod uhci.mod
  90. ext2.mod mpi.mod usb_keyboard.mod
  91. extcmd.mod msdospart.mod usb.mod
  92. fat.mod multiboot2.mod usbms.mod
  93. file.mod multiboot.mod usbserial_common.mod
  94. font.mod nativedisk.mod usbserial_ftdi.mod
  95. freedos.mod net.mod usbserial_pl2303.mod
  96. fshelp.mod newc.mod usbserial_usbdebug.mod
  97. fs.lst nilfs2.mod usbtest.mod
  98. functional_test.mod normal.mod vbe.mod
  99. gcry_arcfour.mod ntfscomp.mod verify.mod
  100. gcry_blowfish.mod ntfs.mod vga.mod
  101. gcry_camellia.mod ntldr.mod vga_text.mod
  102. gcry_cast5.mod odc.mod video_bochs.mod
  103. gcry_crc.mod offsetio.mod video_cirrus.mod
  104. gcry_des.mod ohci.mod video_colors.mod
  105. gcry_dsa.mod part_acorn.mod video_fb.mod
  106. gcry_idea.mod part_amiga.mod videoinfo.mod
  107. gcry_md4.mod part_apple.mod video.lst
  108. gcry_md5.mod part_bsd.mod video.mod
  109. gcry_rfc2268.mod part_dfly.mod videotest_checksum.mod
  110. gcry_rijndael.mod part_dvh.mod videotest.mod
  111. gcry_rmd160.mod part_gpt.mod xfs.mod
  112. gcry_rsa.mod partmap.lst xnu.mod
  113. gcry_seed.mod part_msdos.mod xnu_uuid.mod
  114. gcry_serpent.mod part_plan.mod xnu_uuid_test.mod
  115. gcry_sha1.mod part_sun.mod xzio.mod
  116. gcry_sha256.mod part_sunpc.mod zfscrypt.mod
  117. gcry_sha512.mod parttool.lst zfsinfo.mod
  118. gcry_tiger.mod parttool.mod zfs.mod
  119. gcry_twofish.mod password.mod
  120. gcry_whirlpool.mod password_pbkdf2.mod
  121. /boot/grub2/locale:
  122. ast.mo de@hebrew.mo en@greek.mo eo.mo gl.mo ja.mo pl.mo sv.mo zh_CN.mo
  123. ca.mo de.mo en@hebrew.mo es.mo hu.mo lt.mo pt_BR.mo tr.mo zh_TW.mo
  124. da.mo en@arabic.mo en@piglatin.mo fi.mo id.mo nl.mo ru.mo uk.mo
  125. de_CH.mo en@cyrillic.mo en@quot.mo fr.mo it.mo pa.mo sl.mo vi.mo

1.2.4、查看文件状态

每个文件有三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变

范例:

  1. [root@centos7 ~]#stat /etc/passwd
  2. File: ‘/etc/passwd’
  3. Size: 2256 Blocks: 8 IO Block: 4096 regular file
  4. Device: 802h/2050d Inode: 134330564 Links: 1
  5. Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
  6. Context: system_u:object_r:passwd_file_t:s0
  7. Access: 2020-03-29 15:50:01.109177374 +0800
  8. Modify: 2020-03-17 10:50:55.021029137 +0800
  9. Change: 2020-03-17 10:50:55.022029138 +0800
  10. Birth: -
  11. [root@centos7 ~]#

 

1.2.5、Linux和windows文本格式转换

范例:

  1. 1 [root@centos8 data]#dnf -y install dos2unix 安装转换工具
  2. 2 [root@centos8 data]#dos2unix win.txt 将Linux的文本格式转换为Windows的文本格式
  3. 3 dos2unix: converting file win.txt to Unix format...  
  4. 4 [root@centos8 data]#file win.txt
  5. 5 win.txt: ASCII text
  6. 6
  7. 7 [root@centos8 data]#unix2dos win.txt 将Windows的文本格式转换为Linux的文本格式
  8. 8 unix2dos: converting file win.txt to DOS format...
  9. 9 [root@centos8 data]#file win.txt
  10. 10 win.txt: ASCII text, with CRLF line terminators

 

1.2.6、文件通配符

*         匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
?        匹配任何单个字符
~        当前用户家目录
~        mage 用户mage家目录
~+和.  当前工作目录
~-       前一个工作目录
[0-9]    匹配数字范围
[a-z]    字母
[A-Z]   字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

范例:

  1. 1 [root@centos7 data]#touch file{a..z}.txt
  2. 2 [root@centos7 data]#ls
  3. 3 filea.txt filee.txt filei.txt filem.txt fileq.txt fileu.txt filey.txt
  4. 4 fileb.txt filef.txt filej.txt filen.txt filer.txt filev.txt filez.txt
  5. 5 filec.txt fileg.txt filek.txt fileo.txt files.txt filew.txt
  6. 6 filed.txt fileh.txt filel.txt filep.txt filet.txt filex.txt
  7. 7 [root@centos7 data]#touch file{0..9}.txt
  8. 8 [root@centos7 data]#ls
  9. 9 file0.txt file5.txt filea.txt filef.txt filek.txt filep.txt fileu.txt filez.txt
  10. 10 file1.txt file6.txt fileb.txt fileg.txt filel.txt fileq.txt filev.txt
  11. 11 file2.txt file7.txt filec.txt fileh.txt filem.txt filer.txt filew.txt
  12. 12 file3.txt file8.txt filed.txt filei.txt filen.txt files.txt filex.txt
  13. 13 file4.txt file9.txt filee.txt filej.txt fileo.txt filet.txt filey.txt

 

 

  1. 1 [root@centos7 data]#ls file[:lower:].txt
  2. 2 filee.txt filel.txt fileo.txt filer.txt filew.txt

 

1.2.7、复制文件和目录

Linux cp命令主要用于复制文件或目录

●  -i   如果目标已存在,覆盖前提示是否覆盖
●  -n  不覆盖,注意两者顺序
●  -r, -R 递归复制目录及内部的所有内容
●  -a 归档,相当于-dR --preserv=all,常用于备份功能
●  -d --no-dereference --preserv=links 不复制原文件,只复制链接名
●  --preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
●  -p 等同--preserv=mode,ownership,timestamp
●  -v --verbose
●  -f --force
●  -u --update 只复制源比目标更新文件或目标不存在的文件
●  -b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
 
●  --backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.~#~ ,可以保留多个版本

范例:

  1. 1 [root@centos7 data]#cp /etc/issue ./issue.bak 复制/etc/issue到当前目录下改名为issue.bak
  2. 2 [root@centos7 data]#ll !* 执行上一条命令的参数
  3. 3 ll /etc/issue ./issue.bak
  4. 4 -rw-r--r--. 1 root root 23 Sep 5 2019 /etc/issue
  5. 5 -rw-r--r--. 1 root root 23 Mar 29 20:46 ./issue.bak
  6. 6 [root@centos7 data]#date
  7. 7 Sun Mar 29 20:46:38 CST 2020

 

  1. 1 [root@centos7 data]#cp -p /root/windows2.txt windows3.txt
  2. 2 [root@centos7 data]#ls
  3. 3 file0.txt file5.txt filea.txt filef.txt filek.txt filep.txt fileu.txt filez.txt
  4. 4 file1.txt file6.txt fileb.txt fileg.txt filel.txt fileq.txt filev.txt issue.bak
  5. 5 file2.txt file7.txt filec.txt fileh.txt filem.txt filer.txt filew.txt windows3.txt
  6. 6 file3.txt file8.txt filed.txt filei.txt filen.txt files.txt filex.txt
  7. 7 file4.txt file9.txt filee.txt filej.txt fileo.txt filet.txt filey.txt
  8. 8 [root@centos7 data]#ll /root/windows2.txt windows3.txt
  9. 9 -rw-r--r--. 1 root root 9 Mar 24 09:49 /root/windows2.txt
  10. 10 -rw-r--r--. 1 root root 9 Mar 24 09:49 windows3.txt

 

1.2.8、移动和重命名文件

mv 命令可以实现文件或目录的移动和改名
同一分区移动数据,速度很快:数据位置没有变化
不同分区移动数据,速度相对慢:数据位置发生了变化
●   -i 交互式
●   -f 强制
●   -b目标存在。覆盖前先备份
范例:
移动文件

移动文件夹

 

rename可以批量修改文件名

  1. 1 [root@centos7 data]#touch file{1..10}conf
  2. 2 [root@centos7 data]#ls
  3. 3 file10conf file2conf file4conf file6conf file8conf
  4. 4 file1conf file3conf file5conf file7conf file9conf
  5. 5 [root@centos7 data]#rename conf conf.bak *
  6. 6 [root@centos7 data]#ls
  7. 7 file10conf.bak file2conf.bak file4conf.bak file6conf.bak file8conf.bak
  8. 8 file1conf.bak file3conf.bak file5conf.bak file7conf.bak file9conf.bak
  9. 9 [root@centos7 data]#

 

 1.2.9、硬链接和软连接的区别

1. 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件
2. 跨设备
硬链接:不支持
软链接:支持
3. inode
硬链接:相同
软链接:不同
4. 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化
5. 文件夹
硬链接:不支持
软链接:支持
6. 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径
7. 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问
8. 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关

创建硬链接(不允许跨分区创建,不允许创建文件夹的硬链接)

创建软链接

 

 二、标准I/O重定向和管道

 2.1、标准输入和输出

Linux给程序提供三种I/O设备

标准输入   -0   默认接受来自终端窗口的输入

标准输出   -1   默认输出到终端窗口

标准错误   -2   默认输出到终端窗口

  1. 1 root@centos7 ~]#ll /dev/std*
  2. 2 lrwxrwxrwx. 1 root root 15 Mar 29 09:32 /dev/stderr -> /proc/self/fd/2
  3. 3 lrwxrwxrwx. 1 root root 15 Mar 29 09:32 /dev/stdin -> /proc/self/fd/0
  4. 4 lrwxrwxrwx. 1 root root 15 Mar 29 09:32 /dev/stdout -> /proc/self/fd/1
  5. 5 [root@centos7 ~]#ll /proc/self/fd/*
  6. 6 ls: cannot access /proc/self/fd/255: No such file or directory
  7. 7 ls: cannot access /proc/self/fd/3: No such file or directory
  8. 8 lrwx------. 1 root root 64 Mar 29 21:43 /proc/self/fd/0 -> /dev/pts/1
  9. 9 lrwx------. 1 root root 64 Mar 29 21:43 /proc/self/fd/1 -> /dev/pts/1
  10. 10 lrwx------. 1 root root 64 Mar 29 21:43 /proc/self/fd/2 -> /dev/pts/1

 

 2.2、I/O重定向

2.2.1、标准输出和错误重定向

 支持的操作符号包括:

1> 或 >  把标准输出重定向到文件

2>          把标准错误重定向到文件

&            把所有输出重定向到文件

以上如果文件已存在,文件内容会被覆盖

set  -c  禁止将内容覆盖已有文件,但可追加,利用>|仍可强制覆盖

set +c  允许覆盖,默认

标准输出范例:

hostname 1> /dev/pts/1  在当前pts0终端输入该命令,输出到pts1终端

将uname  -r 的标准输出结果重定向到/data/stdout.log文件下,当前data下没有stdout.log文件执行命令会创建文件。(如果再执行一次会覆盖当前文件)

 

两个>不会覆盖原文件内容只会追加

()将多个命令的执行结果重定向到/data/f1.log文件

标准错误范例:

将执行xxx的错误输出命令放到/data/f1.log下

 

删除/data/f1.log将提示信息重定向到/data/all.log文件

加上&符号将执行命令的正确和错误信息都存到 /data/all.log中

 

 

 

 清除大文件

 

 

 2.2.2、标准输入重定向

利用<可以将标准输入重定向

范例:

将1-100相加的算式重定向到bc.log文件中,将bc.log重定向输入到bc计算机程序中

 

 

 多行重定向

范例:

  1. 1 [root@centos7 data]#cat > /data/cat1.log <<EOF
  2. 2 > 1
  3. 3 > 1
  4. 4 > EOF
  5. 5 [root@centos7 data]#cat cat1.log
  6. 6 1
  7. 7 1

 

2.3、管道

 管道用来连接多个命令

将命令1的标准输出发送给命令2的标准输入,命令2的标准输出发送到命令3的标准输入

所有命令会在当前shell进程的子shell进程中执行

范例:

管道符左边的命令输出的结果,传给右边输入执行

 

三、用户、组和权限

 

 用户管理命令

useradd

usermod

userdel

组账户维护命令

groupadd

groupmod

groupdel

3.1、用户创建

  • -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
  • -d<登入目录>  指定用户登入时的启始目录。
  • -D  变更预设值.
  • -e<有效期限>  指定帐号的有效期限。
  • -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  • -g<群组>  指定用户所属的群组。
  • -G<群组>  指定用户所属的附加群组。
  • -m  自动建立用户的登入目录。
  • -M  不要自动建立用户的登入目录。
  • -n  取消建立以用户名称为名的群组.
  • -r  建立系统帐号。
  • -s<shell>   指定用户登入后所使用的shell。
  • -u<uid>  指定用户ID。

 添加一般用户

# useradd tt

为添加的用户指定相应的用户组

# useradd -g root tt

创建一个系统用户

# useradd -r tt

为新添加的用户指定home目录

# useradd -d /home/myd tt

建立用户且制定ID

# useradd gjz -u 544

 

典型范例:

 

 

 

 生成随机口令

  1. 1 [root@centos7 ~]#openssl rand -base64 9
  2. 2 3upzvCXUYaUD
  3. 3 [root@centos7 ~]#

 

用户属性修改

Linux usermod命令用于修改用户帐号。

usermod可用来修改用户帐号的各项设定。

  • -c<备注>  修改用户帐号的备注文字。
  • -d登入目录>  修改用户登入时的目录。
  • -e<有效期限>  修改帐号的有效期限。
  • -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
  • -g<群组>  修改用户所属的群组。
  • -G<群组>  修改用户所属的附加群组。
  • -l<帐号名称>  修改用户帐号名称。
  • -L  锁定用户密码,使密码无效。
  • -s<shell>  修改用户登入后所使用的shell。
  • -u<uid>  修改用户ID。
  • -U  解除密码锁定。

 更改登录目录

# usermod -d /home/hnlinux root

 

改变用户的uid

# usermod -u 777 root

 

3.2、创建组

groupadd用于创建一个新的工作组

  1. -g:指定新建工作组的id;
  2. -r:创建系统工作组,系统工作组的组ID小于500;
  3. -K:覆盖配置文件“/ect/login.defs”;
  4. -o:允许添加组ID号不唯一的工作组。

建立一个新组,并设置组ID加入系统:

groupadd -g 344 jsdigname

修改组

Linux groupmod命令用于更改群组识别码或名称。

需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

  • -g <群组识别码>  设置欲使用的群组识别码。
  • -o  重复使用群组识别码。
  • -n <新群组名称>  设置欲使用的群组名称。

3.3、文件权限

查看gjz用户所属组

 

 

 更改文件f1.txt文件所有者root变为wang

 

 

 

 更改f1.txt文件的所属组

 

 

 同时更改f1.txt文件的所有者和所属组(所有者和所属组中间可用.或者:)

 

 

 

 

 

 

 参考f1文件属性更f2文件

 

 

 

 chown  -R递归更改,将dir1文件夹中的文件夹文件所属者改为mage,所属组改为g1(较危险)

 

 

 

 文件开头9个字符中前3个为文件所属者权限,中间3个为所属组权限,最后3个为other其他用户

 

修改文件权限chmod命令

 

 

 数字修改权限法

 

 

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

 

 指定umask值为754,默认创建文件夹权限为777-754=023,默认创建文件权限为666-754=022,6-7=-1(结果为奇数+1),6-5=1(结果为奇数+1),6-4=2,结果偶数不变

 

 

 临时更改umask值创建文件

 

 3.4、对root账户设置权限约束防止误操作

chattr  +i 防止root账户权限过大文件误删除   (不能删除,改名,更改)

 

chattr  -i取消限制   lsattr   查看

chattr  -a 可以追加内容不能删除改名

3.5ACL访问控制列表

setfacl命令 是用来在命令行里设置ACL(访问控制列表)。在命令行里,一系列的命令跟随以一系列的文件名

  1. -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
  2. -k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。
  3. -n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
  4. --mask:重新计算有效权限,即使ACL mask被明确指定。
  5. -d,--default:设定默认的acl规则。
  6. --restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。
  7. --test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。
  8. -R,--recursive:递归的对所有文件及目录进行操作。
  9. -L,--logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
  10. -P,--physical:跳过所有符号链接,包括符号链接文件。
  11. --version:输出setfacl的版本号并退出。
  12. --help:输出帮助信息。
  13. --:标识命令行参数结束,其后的所有参数都将被认为是文件名
  14. -:如果文件名是-,则setfacl将从标准输入读取文件名。

setfacl设置acl,getfacl查看acl

 

删除acl

 

清空所有acl

递归设置权限

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/211961
推荐阅读
相关标签
  

闽ICP备14008679号