在Linux中每个用户必须属于一个组,不能独立于组外;
在Linux中每个文件有所有者、所在组、其他组的概念。
一般来说谁创建了文件,谁就是文件的所有者,用户所在组就是该文件的所在组。
查看文件的所有者
ls -ahl
修改文件的所有者
chown 用户名 文件名
chown 用户名:组名 文件/目录名
-R
,会修改某目录及其所有子目录和文件的所有者修改文件的所在组
chgrp 组名 文件/目录名
-R
,会修改某目录及其所有子目录和文件的所在组,如chgrp -R group1 /home/test1
,会将test1和他的所有子目录和文件的所有组都改为group1。改变用户所在组
usermod -g 组名 用户名
改变用户登录的初始目录
usermod -d 目录名 用户名
ls -l
中显示的内容如下:
-rw-rw-r--. 1 admin admin 146 Jan 2 05:28 mytest2.tar.gz
-rw-rw-r--. 1 tom admin 342 Jan 2 05:13 mytest.zip
drwxrwxr-x. 2 admin admin 23 Jan 2 05:26 test2
drwxrwxr-x. 3 admin admin 19 Jan 2 05:29 test3
第1列的0-9 位说明:
第 0 位确定文件类型(d, - , l , c , b)
第 1-3 位确定该文件的所有者对该文件的 权限。—User
第 4-6 位确定该文件所属的组和该组中的用户对该文件的 权限。—Group
第 7-9 位确定其他用户(不是所有者,也不是同一组的其他用户)对该文件的权限 。—Other
注意要区分是作用到文件还是作用到目录
基本指令:chmod
方法1:+、-、=变更权限
chmod u=rwx,g=rx,o=x 文件/目录名
,为用户赋予权限chmod o+w 文件/目录名
,+表示在原有的基础上追加权限chmod a-x 文件/目录名
,-表示撤销某权限方法2:通过数字变更范围
chmod u=rwx,g=rx,o=x 文件/目录名
,相当于chmod 751 文件/目录名
有两个组:police组,bandit组;有四个用户:jack,jerry,xh,xq;其中jack和jerry是警察,xh和xq是土匪。
创建组
[root@localhost ~]# groupadd police
[root@localhost ~]# groupadd bandit
创建用户(直接放到对应组)
[root@localhost ~]# useradd jack -g police
[root@localhost ~]# useradd jerry -g police
[root@localhost ~]# useradd xh -g bandit
[root@localhost ~]# useradd xq -g bandit
jack创建一个文件,自己可以读写rw,本组人可以读r,其它组没人任何权限
[jack@localhost ~]$ touch jack.txt
[jack@localhost ~]$ ll
total 0
-rw-r--r--. 1 jack police 0 Jan 3 03:05 jack.txt
[jack@localhost ~]$ chmod o-r jack.txt
[jack@localhost ~]$ ll
total 0
-rw-r-----. 1 jack police 0 Jan 3 03:05 jack.txt
jack修改该文件,让其它组人可以读,本组人可以读写
[jack@localhost ~]$ chmod o+r,g+w jack.txt
[jack@localhost ~]$ ll
total 0
-rw-rw-r--. 1 jack police 0 Jan 3 03:05 jack.txt
xh投靠警察
[root@localhost ~]# usermod -g police xh
[root@localhost ~]# id xh
uid=1004(xh) gid=1004(police) groups=1004(police)
测试xh和xq能不能对jack.txt文件进行读写
[root@localhost ~]# su - xh
[xh@localhost ~]$ cd /home/jack
-bash: cd: /home/jack: Permission denied
[xh@localhost ~]$ ll /home
total 4
drwx------. 16 admin admin 4096 Jan 2 05:11 admin
drwx------. 5 jack police 144 Jan 3 03:08 jack
drwx------. 3 jerry police 78 Jan 3 03:03 jerry
drwx------. 3 tom group1 78 Jan 3 00:27 tom
drwx------. 5 xh police 107 Jan 3 03:12 xh
drwx------. 3 xq bandit 78 Jan 3 03:03 xq
[xh@localhost ~]$
可见xh虽然有文件jack.txt的读写权限,但是没有目录/jack的访问权限依旧无法修改jack.txt
解决方案:jack修改其目录的权限为同组可访问
[jack@localhost ~]$ chmod g+rx /home/jack
[jack@localhost ~]$ ll /home
total 4
drwx------. 16 admin admin 4096 Jan 2 05:11 admin
drwxr-x---. 5 jack police 144 Jan 3 03:08 jack
drwx------. 3 jerry police 78 Jan 3 03:03 jerry
drwx------. 3 tom group1 78 Jan 3 00:27 tom
drwx------. 5 xh police 128 Jan 3 03:15 xh
drwx------. 3 xq bandit 78 Jan 3 03:03 xq
[jack@localhost ~]$ logout
[root@localhost ~]# su - xh
Last login: Wed Jan 3 04:03:08 PST 2024 on pts/0
[xh@localhost ~]$ cd /home/jack
[xh@localhost jack]$ ll
total 0
-rw-rw-r--. 1 jack police 0 Jan 3 03:05 jack.txt
[xh@localhost jack]$ echo 'hello' >> jack.txt
[xh@localhost jack]$ cat jack.txt
hello
结论:如果要对目录内的文件进行操作,首先要有对该目录有访问权限
注意: rwx权限对于文件夹(目录) 的细节讨论和测试!
ls
,将目录的内容显示出来,有r权限没有x权限表示可以进到这个目录,但是不能看到有哪些东西任务调度:是指系统在某个时间执行特定的命令或程序。 crond—>周期任务
任务调度分类:
基本语法:crontab [选项]
选项 | 作用 |
---|---|
-e | 编辑 crontab 任务 |
-l | 查询 crontab 任务 |
-r | 删除当前用户所有的 crontab 任务 |
每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt命令
/etc/crontab
crondtab -e
命令*/1 * * * * ls -l /etc/ > /tmp/to.txt
,意思就是每分钟执行一次ls -l /etc/ > /tmp/to.txt
命令项目 | 含义 | 范围 |
---|---|---|
第一个 “ * ” | 一个小时当中的第几分钟 | 0~59 |
第二个 “ * ” | 一天当中的第几小时 | 0~23 |
第三个 “ * ” | 一月当中的第几天 | 1~31 |
第四个 “ * ” | 一年当中的第几月 | 1~12 |
第五个 “ * ” | 一周当中的星期几 | 0~7(0和7都代表星期日) |
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个 " * " 就代表一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如 “0 8,12,16 * * * 命令”,就代表在每天的8:00、12:00、16:00都执行一次命令 |
- | 代表连续的时间范围。比如 “0 5 * * 1-6命令”,代表在周一到周六的凌晨5:00执行命令 |
*/n | 代表每隔多久执行一次。比如 “*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
一些执行时间案例
案例:每隔1分钟,将当前日期和日历都追加到/home/mycal文件中
方法1:
crontab -e
*/1 * * * * date >> /home/mycal
*/1 * * * * cal >> /home/mycal
方法2:写shell脚本
vim mycal.sh
脚本内容为:
crontab -e
编辑定时任务执行脚本*/1 * * * * /home/mycal.sh
crontab -r
:终止任务调度crontab -l
:列出当前有哪些任务调度service crond restart
:重启任务调度at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。
at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
因此,在使用 at 命令的时候,一定要保证atd进程的启动,可以使用指令ps -ef | grep atd
检测atd进程是否运行。
基本语法:at [选项] [时间]
,Ctrl + D结束at命令的输入
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | 显示任务队列,atq 的别名 |
-d<编号> | 删除某任务,atrm 的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q <队列> | 使用指定的队列 |
-f <文件> | 从指定文件读入任务而不是从标准输入读入 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
案例:两天后的下午5点执行 /bin/ls /home
执行指令atrm 3
就可以删除上述定时任务。
Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是组成整个文件系统的一部分。
Linux采用了一种叫"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
基本指令:lsblk
或 lsblk -f
可以看到新加的硬盘sdb
已经有了,但是还没有分区
分区命令:fdisk /dev/sdb
命令操作:
fdisk -l