首页 > 系统相关 >linux基础2

linux基础2

时间:2023-07-03 15:37:10浏览次数:41  
标签:文件 sudo 基础 用户 linux 权限 root jxl

## 用户和权限的基本概念

用户管理包含用户和组的管理

linux系统必须有一个用户,而且对于不同的用户有不同的系统资源权限

对文件、目录的权限:

1688224687349

在实际工作中,是通过对用户进行分组,对组赋予对应的权限,来管理用户的权限

1688225090974

什么类型的文件 文件的拥有者权限 拥有者所在组的权限 组外用户的权限 硬链接数 用户名 组名 文件的大小 创建时间和修改时间 文件名

硬链接数

通俗讲就是有多少种方式,可以访问到当前目录、文件(包括绝对路径和相对路径 )
硬链接数都大于1,为硬链接
文件的硬链接是1
目录的硬链接数至少是2(包含一个.)

chmod

chmod可以修改用户/组对文件/目录的权限

chmod +/-  rwx 文件名/目录名   #会一次性修改拥有者和组的权限,不会修改其他用户的权限

1688226557779

在linux里,要操作目录,必须有可执行和可读权限, 不然会报权限不足 。一般都会有可读和可执行的权限

对于目录而言,可读权限就是可以阅读目录的内容。可写权限就是可以修改目录的内容,可执行权限必须要有,不然根本就无法操作目录

超级用户

root用户就是超级用户

linux在安装时自动创建的用户就叫做标准用户

sudo

  • su是substitute user的缩写,表示使用另一个用户的身份
  • sudo命令用来以其他身份来执行命令,预设的身份为root
  • 用户使用sudo时,必须先输入密码,之后有5分中的有效期限,超过时间,则必须重新输入密码
  • 若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

组管理 相关命令

1688228092746

组的信息保存在/etc/group下 (group是一个文件)

chgrp==》change group

R==》是指把文件或目录下的所有用户都递归修改文件或目录的所属组

jxl@jxl-virtual-machine:~/桌面$ sudo chgrp -R dev python学习/
[sudo] jxl 的密码:
jxl@jxl-virtual-machine:~/桌面$ ls -l
总用量 4
drwxrwxr-x 2 jxl dev 4096 7月   2 08:36 python学习

用户管理

1688258464572

  • 创建用户时,如果忘记添加-m选项指定新用户的家目录--最简单的方法就是删除用户,重新创建,不然自己手动去创建家目录赋权等比较麻烦

  • 创建用户时,不指定组的话,默认会创建一个和用户名同名的组名

  • 用户信息保存在/etc/passwd文件中

添加新用户(创建用户时需要添加用户和密码,不然远程无法连接)

sudu useradd -m -g dev zhangsan         
1)不使用-m建立用户家目录会怎样,在家目录看不到创建好的用户,系统不会创建这个用户的家目录,只会把创建好的用户信息保存在/etc/passwd里
2)不使用-g指定用户的主组,那么会默认建立一个和用户同名的组)

添加新用户的密码

passwd zhangsan 

/etc/passwd 文件

存放的是用户的信息,由6个分号组成的7个信息:

zhangsan:x:1001:1001::/home/zhangsan:/bin/sh
用户名:密码:uid:gid:用户全名(::之间,没有写就以用户名作为用户全名):主目录:登录使用的shell(就是登录之后,使用的终端命令,ubuntu添加的用户默认使用的是dash)

x是表示密码,只是不直接展现出来,有加密 
uid是用户的id    用户代号
gid是组的id    组代号
dash这种shell在windows的xshell里按向上和向下和删除等会出来下图的缺陷,不方便,可以把shell换成bin/bash 

1688295618339

无法在宿主环境与虚拟环境之间复制粘贴

解决方案
在Ubuntu的命令行中执行一下命令

sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop

查看用户信息

1688262683169

jxl@jxl-virtual-machine:~$ id
uid=1000(jxl) gid=1000(jxl) 组=1000(jxl),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
jxl@jxl-virtual-machine:~$ id zhangsan
uid=1001(zhangsan) gid=1001(dev) 组=1001(dev)

uid是保存在/etc/passwd
gid是保存在/etc/group

jxl@jxl-virtual-machine:~$ cat -n /etc/group|grep jxl
     5  adm:x:4:syslog,jxl
    18  cdrom:x:24:jxl
    21  sudo:x:27:jxl
    23  dip:x:30:jxl
    35  plugdev:x:46:jxl
    55  lpadmin:x:116:jxl
    65  jxl:x:1000:             
    66  sambashare:x:126:jxl

解释:
65行是组名+组代号
5/18/21/23/35/55/66  是passwd里定义的用户(jxl用户在admin组,和其他组的分别展示的权限)

jxl@jxl-virtual-machine:~$ id
uid=1000(jxl) gid=1000(jxl) 组=1000(jxl),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)

解释:
展示默认的标准用户的用户代号和组代号,并在不同组拥有的权限。比如有1000这个jxl组的权限(主组权限),有4这个组adm的权限,……(附加组权限)

who

jxl@jxl-virtual-machine:~$ who
jxl      :0           2023-07-02 09:37 (:0)          #表示本机登录的(也就是ubuntu虚拟机本身登录的)
jxl      pts/1        2023-07-02 09:39 (192.168.206.1)   (是以太网适配器 VMware Network Adapter VMnet8的这台机器的登录的,我这里用的是mobaXterm的用户登录的)
jxl      pts/2        2023-07-02 16:27 (192.168.206.1)


whoami

jxl@jxl-virtual-machine:~$ whoami
jxl
`查询当前登录的用户是谁

usermod

  • usermod可以用来设置用户的主组/附加组和登录Shell

  • 主组:通常在新建用户时指定,在/etc/passwd的第四列GID对应的组(创建用户时所在的组)

  • 附加组:在/etc/group中最后一列表示该组的用户列表,用户指定用户的附加权限(用户自己本身组之外的组的权限)

    提示:设置了用户的附加组之后,需要重新登录才能生效

    #修改用户的主组(passwd中的GID)
    usermod -g 组 用户名
    
    #修改用户的附加组
    usermod -G 组 用户名
    
    #修改用户登录的shell
    usermod -s /bin/bash
    
    
    

在MoBaXterm快速连接

ssh 用户名@remote    
然后输入用户名和密码

注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中

usermod -G sudo 用户名

修改用户登录shell

sudo usermod -s /bin/bash 用户名

查看当前发行版可以使用的shell

[root@localhost ~]$ cat /etc/shells

查看当前使用的shell方法

一、最常用的查看shell的命令,但不能实时反映当前shell

[root@localhost ~]$ echo $SHELL
/bin/bash

**二、下面这个用法并不是所有shell都支持

**

[root@localhost ~]$ echo $0
-bash

**三、环境变量中shell的匹配查找

**

[root@localhost ~]$ env | grep SHELL
SHELL=/bin/bash

四、口令文件中shell的匹配查找

[root@localhost ~]$ cat /etc/passwd | grep root

五、查看当前进程

[root@localhost ~]$ asdf
bash: asdf: command not found

附:一条命令即可实现:

[root@localhost ~]$ ps -ef | grep echo $$ | grep -v grep | grep -v ps
root 1862 1860 0 01:50 pts/0 00:00:00 -bash

which

  • /etc/passwd 是用于保存用户信息的文件
  • usr/bin/passwd 是用于修改用户密码的程序

which命令可以查看执行命令所在位置 ,一定是可执行文件

cd 这个终端命令是内置在系统内核中,没有独立的文件,所以用which是查不到的

bin和sbin
在linux中,绝大多数可执行文件都保存在/bin、/sbin、/usr/bin、/usr/sbin
	在bin(binary)是二进制执行文件目录,主要用于具体应用
	在/sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
	/usr/bin(user commands for applications)后期安装的一些软件
	/usr/sbin(super user commands for applications)超级用户的一些管理程序

su

su -用户名 -可以切换用户家目录,不加-就只会切换用户,不会切换目录

exit 退出当前用户

安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下。 Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码

sudo passwd

建立一个新的root密码

1688298914870

修改文件权限

1688302522171

1688302683969

#修改文件|目录的拥有者
chown 用户名 文件名|目录名

#递归修改文件|目录的组
chgrp -R
#递归修改文件权限
chmod -R 755 文件名|目录名

小结:想要文件|目录有什么权限,首先把登录的是哪个用户,然后看这个文件|目录是不是登录用户的拥有者(如果是拥有者,就看拥有者对应的权限),看这个文件||目录是不是登录这个用户的所在组(如果是用户的所在组,就看所在组的权限),如果都不是,就看其他者拥有的相对应权限 。判断权限需要以登录的是哪个用户为基准然后再进一步判断

系统信息相关命令

时间和日期

date

查看系统时间

cal

查看日历

cal -y可以查看一年的日历

磁盘和目录空间

df

df -h disk free 显示磁盘剩余空间

du

du -h 【目录名】 disk usage (磁盘使用情况)显示目录下的文件大小,不写目录名就查当前目录的情况

进程信息

所谓进程,(进行中的程序)通俗讲就是当前正在执行的一个程序

1688307694593

ps

ps默认只会显示当前用户通过终端启动的应用程序

1688307777960

x 表示不是终端启动的进程,一般不看x 系统级的进行情况

top

cpu和内存占用率比较高的显示在最上面

kill

提示:使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃

查找文件

find 【路径】 -name 文件名     #路径不填就从当前路径查找

软链接

在linux中,文件名和文件的数据是分开存储的

只有文件的硬链接数等于0才会被删除

在日常生活中,几乎不会给文件建立硬链接

和硬链接对应

需要使用绝对路径

软链接 ln -s ( -s是symbolic 的意思,符号性的)

硬链接 ln (link files )

1688360853878

打包和压缩

tar

1688361172316

  • tar是linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件(只负责打包,不负责压缩)

  • tar的命令格式如下:

    #打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径……
    
    #解包文件
    tar -xvf 打包文件.tar
    
    

    1688361466051

    tar命令的czvf和xzvf参数分别代表的意义如下:

    -c 或--create 建立新的备份文件。
    -x或--extract或--get 从备份文件中还原文件。
    -z或--gzip或--ungzip 通过gzip指令处理备份文件。
    -v或--verbose 显示指令执行过程。
    -f<备份文件>或--file=<备份文件> 指定备份文件。

gzip

使用gzip和tar打包和压缩的文件扩展名为xxx.tar.gz

1688362055775

解压缩时,

如果是xxx.tar的文件 tar -xvf xxx.tar

如果是xxx.tar.gz的文件 tar -xzvf xxx.tar.gz

不常用,了解即可

1688362449398

软件安装

通过apt可以安装和卸载软件

1688367028750

#一个小火车提示
sudo apt install sl

#一个比较漂亮的查看当前进程排名的软件
sudo apt install htop

配置软件源(ubuntu)

1688368348998

标签:文件,sudo,基础,用户,linux,权限,root,jxl
From: https://www.cnblogs.com/jiangxuling/p/17522990.html

相关文章

  • linux搭建LAMP环境
    LAMP环境指在linux系统下搭建Apache服务器+mysql+php(1)安装Apache服务及其扩展包yum-yinstallhttpdhttpd-manualmod_sslmod_perlmod_auth_mysql(2)启动Apache服务systemctlstarthttpd.service(3)安装mysql  wgethttp://dev.mysql.com/get/mysql57-community-release......
  • linux 常用脚本
    启动python脚本并输出日志到文件nohuppython3-udoReport.py--env=prod>doReport.out2>&1&pip使用清华源pip3installscikit-learn-ihttps://pypi.tuna.tsinghua.edu.cn/simple......
  • Java线程池基础介绍
    一、线程池的优点1、线程池能够复用已经创建了的线程来执行任务,从而降低了频繁创建和销毁线程所带来的资源消耗;2、任务创建完成时,不必等待线程的创建,能够立即执行,提高了任务响应的速度。 二、创建线程池的七大核心参数1、corePoorSize核心线程数线......
  • linux | 时间同步 | 时钟同步 | ntp同步系统时间
    一、说明        1、linux系统        2、centos        3、系统时间快了2分钟,需要搞成同步二、具体实现1)安装ntpyum-yinstallntp2)启动systemctlstartntpd3)设置开机自启systemctlenablentpd4)查看状态systemctlstatusntpd5)修改配置文......
  • nodejs——linux安装环境
    yum安装nodejsv18.16.1model:unknown,wordcount:7,tokenestimate:14   在yum仓库中,可能没有提供Node.js18.16.1的特定版本。通常,yum仓库中提供的是最新稳定版本的软件包。如果您需要安装特定版本的Node.js,可以考虑使用Node版本管理工具(例如nvm......
  • Mysql基础篇(四)之事务
    一.事务简介事务是一组操作的集合,它是一个不可分隔的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如:张三给李四转账1000块钱,张三银行账户的钱减少了1000,而李四银行账户的钱要增加1000。这一组操作就必须在一......
  • MapReduce的基础知识
    1、什么是MapReduceHadoopMapReduce是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)MapReduce是一种面向海量数据处理的一种指导思想,也是一种用于对大规模数据进行分布式计算的编程模型......
  • 【numpy基础】--数组排序
    numpy数组通常是用于数值计算的多维数组,而排序功能可以快速、准确地对数据进行排序,从而得到更加清晰、易于分析的结果。在数据分析和处理过程中,常常需要对数据进行排序,以便更好地理解和发现其中的规律和趋势。排序会应用在很多场景中,比如:数据分类:将数据按照一定的特征进行分......
  • HTML+CSS+JavaScript基础
    1、HTML(HypertextMarkupLanguage,超文本标记语言),用来向浏览器说明内容的结构、2、DOM(DocumentObjectModel,文档对象模型)指的是HTML标签的层次结构。每一对HTML标签(有的时候是一个标签)都是一个元素。3、CSS(CascadingStyleSheets,层叠样式表),控制DOM元素的视觉外观......
  • 【JAVA基础】JSON转换
    JSON转换json字符串与dto转换publicJsonDataJtMdmResultDataDTOreceiveinfoMQ(StringreqContent){JtMdmMaterialReqDTOjtMdmMaterialReqDTO=newJtMdmMaterialReqDTO();List<JsonDataJtMdmResultDataInfosDTO>jsonDataJtMdmResultDataInfoDTOList......