linux基础总结之三
文件管理,用户管理,组用户,权限管理相关的命令
一、文件管理
文件相关命令: 【touch/rm/rmdir/cat/head/less/more】
#touch命令可以用来创建空文件或刷新文件的时间
#touch命令创建空文件
[root@rocky8 ~]# touch 1.txt
[root@rocky8 ~]# ls -l
total 4
-rw-r--r-- 1 root root 0 Oct 24 15:38 1.txt
-rw-------. 1 root root 1109 Oct 9 10:34 anaconda-ks.cfg
#touch命令刷新文件的时间
[root@rocky8 ~]# touch anaconda-ks.cfg
[root@rocky8 ~]# ls -l
total 4
-rw-r--r-- 1 root root 0 Oct 24 15:38 1.txt
-rw-------. 1 root root 1109 Oct 24 15:41 anaconda-ks.cfg
#rm命令删除文件或目录(-f 强制删除,-r 递归)
[root@rocky8 ~]# rm -rf ~/1.txt
#rmdir命令删除空目录(注意该命令无法删除非空目录)
[root@rocky8 ~]# mkdir test1 test2
[root@rocky8 ~]# echo 111111 > test2/1.txt
#可以看到rmdir命令可以删除空目录,而无法删除非空目录
[root@rocky8 ~]# rmdir test1
[root@rocky8 ~]# rmdir test2
rmdir: failed to remove 'test2': Directory not empty
#cat命令查看文件内容
#普通输出
[root@rocky8 ~]# cat test
1111111111
2222222222
3333333333
#开头显示行号
[root@rocky8 ~]# cat -n test
1 1111111111
2 2222222222
3
4 3333333333
#head命令将每个指定文件的头10行显示到标准输出。#head -10 /etc/passwd
[root@rocky8 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
##显示开头前2行
[root@rocky8 ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
##除最后2行外,显示剩余全部内容
[root@rocky8 ~]# head -n -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
#less 与more命令类似,可以通过翻页键查看上下页的内容 或者more /etc/passwd
命令内部操作
按键功能如下:
b 向前翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[root@rocky8 ~]# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
二、用户、用户组和其他用户概念
因为Linux是多用户多任务为特色,所以用户、用户组和其他用户的概念很重要。
用户及组:user/group 【useradd/userdel/usermode; groupadd/groupdel/groupmod; chsh/…】
用户: Linux是多用户多任务的系统,每个用户都有自己的个人隐私,这就是用户的作用。
用户组: Linux是多用户多任务的系统,你想和你团队合作者一起分享某些文件,非团队的用户不能看你分享的文件,这就是用户组的作用。(一个用户可以有多个用户组)
其他用户: Linux是多用户多任务的系统,例如一个人陌生人(其他用户)想要进入你家(用户组),你(用户)肯定不会让他进来,也肯定不会把你的隐私(用户拥有的文件)给他看。
注:root身份是超级管理员,拥有超级权限,不管你的文件或目录有没有设置权限,root身份的用户都可以进行各种操作。此时建议创建一个普通用户进行操作。
如何查看普通文件所拥有的用户,用户组,其他用户权限呢?
[root@rocky8 ~]# ls -ld /etc
drwxr-xr-x. 82 root root 8192 Oct 24 10:18 /etc
#可以看出这个/etc目录归属用户是root,归属用户组也是root,归属用户可以进行读、写、执行操作,归属用户组可读、不可写、可执行,其他用户可读、不可写、可执行。
#useradd 命令可以创建新的Linux用户
#创建新用户test
[root@rocky8 ~]# useradd test
#创建新用户test1并指定其家目录为/home/test1
[root@rocky8 ~]# useradd -d /home/test1 test1
#创建新用户test2,指定用户组为mytest,并指定用户家目录为/home/test2
[root@rocky8 ~]# useradd -g mytest -d /home/test2 test2
#usermod 命令可以修改用户属性
#更改test1用户的家目录为/home/test3
[root@rocky8 ~]# usermod -d /home/test3 test1
#userdel 可删除Linux 用户
[root@rocky8 ~]# userdel test
#groupadd 命令创建新的用户组
#添加一个用户组mytest
[root@rocky8 ~]# groupadd mytest
#添加一个用户组test,并指定GID
[root@rocky8 ~]# groupadd -g 456 test
#groupmod 命令修改用户组的属性
#将test1组名换成test2
[root@rocky8 ~]# groupmod test1 -n test2
#将test2的gid换成234
[root@rocky8 ~]# groupmod -g 234 test
#groupdel 命令删除用户组
[root@rocky8 ~]# groupdel test
#chsh 命令用于改变用户的登录 shell. 如果没有在命令行上指定 shell, chsh能够做出提示.
#改变当前用户shell,设置为 /bin/csh
[root@rocky8 ~]# chsh -s /bin/sh
Changing shell for root.
Shell changed.
三、文件和目录权限概念和设置命令详解
1、文件和目录权限概念: 从上面的例子可以看出用户(这里我就只用用户来讲,用户组和其他用户同理)对文件和目录有读、写和执行三个类型权限。对用户进行可否读、可否写以及可否执行的限制。文件和目录权限有所不同所以我分开讲一下。
2、文件权限:
(1)读( r ): 可否对文件内容的查看。
(2)写( w ): 可否对文件进行修改。(但不能删除该文件。这点很重要!!!)
(3)执行( x ): 可否该文件可以被系统执行。(可执行和执行成功有区别,例如一个文档如果有可执行权限,就可以执行这个文件,但是能否执行成功得看有没有可执行代码)
3、目录权限:
(1)读( r ): 可否查看此目录下的文件名和目录。
(2)写( w ): 写对目录来说有很大的权利
-
权利1:在该目录下创建新的文件或目录;
-
权利2:在该目录下删除文件或目录(不管该文件目录的权限);
-
权利3:将该目录下文件或目录进行更名或移动。
(3)执行( x ): 能否进入目录
注:一般给任何人看你的目录要同时开放r和x(w权限不要随便给!),但自己进行操作时,你确实知道目录下确实有这个文件,有x权限就够了。
四、权限管理 chown、chgrp和chmod区分和用法详解
权限 【chmod/chown/setfacl】
一、权限设置命令
以下操作切换为root身份不然有可能受到权限的限制:
**1、chown:**修改文件所属用户 (如果你想连目录下的所有文件目录的所属用户都改了就用-R,例如 “chown -R root 文件或目录” )
2、chgrp: 修改文件所属用户组;(如果你想连目录下的所有文件目录的所属用户都改了就用-R,例如 “ chgrp -R root 文件或目录 ” )
3、chmod: 修改文件的权限。
(1)、数字类型修改文件权限:**r:4 w:2 x:1(2)、符号类型修改文件权限:
**u:用户
g:用户组
o:其他用户
a:所有身份(用户、用户组和其他用户)
(2)、符号类型修改文件权限:**+:加入 -: 移除 =:设置 ** r:读 w:写 x:执行
#chown命令更改每个文件的所有者和/或所属组 注意chown -R 可以递归处理所有的文件及子目录
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 root root 0 Oct 24 16:37 2.txt
[root@rocky8 ~]# chown test1:test1 2.txt
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 test1 test1 0 Oct 24 16:37 2.txt
#chgrp命令改变文件的组所有权
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 test1 test1 0 Oct 24 16:37 2.txt
[root@rocky8 ~]# chgrp test2 2.txt
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 test1 test2 0 Oct 24 16:37 2.txt
#chmod命令 将每个文件的模式更改为指定值
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 root root 0 Oct 24 16:43 3.txt
[root@rocky8 ~]# chmod 655 3.txt
[root@rocky8 ~]# ls -l
-rw-r-xr-x 1 root root 0 Oct 24 16:43 3.txt
[root@rocky8 ~]# chmod go-x 3.txt
[root@rocky8 ~]# ls -l
-rw-r--r-- 1 root root 0 Oct 24 16:43 3.txt
#setfacl命令 设定文件访问控制列表
#getfacl命令 获取文件访问控制列表
[root@rocky8 ~]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
##修改文件的acl权限,修改test目录的用户组权限为只读
[root@rocky8 ~]# setfacl -m g:test1:r-- test
[root@rocky8 ~]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
group:test1:r--
mask::r-x
other::r-x