linux命令复习(用户文件权限、root、组管理、用户管理与设置、which、su、修改文件权限)
1.
用户权限的相关命令:
权限类型:
01 读 read r 4
02 写 write w 2
03 执行 excute x 1
组权限:
开发组:将所有开发人员添加到一个组中,这个组中所有人就有相同的权限
我们可以使用ls -l查看文件的详细信息,就可以查看文件的权限
硬链接:即就是有多少种方式路径,可以访问到当前的目录或者文件
对于文件来说:
我们通过绝对路径可以访问到该文件,一般只有一个硬链接
对于目录:
示例1:
有这几种情况比如说/d/b,我们要访问b
1.如果我们当前就在b目录种,到达b目录的方式是cd .
2.如果我们直接使用绝对路径即可到达
所以只有俩个硬链接
示例2:
再比如说我们在b下面添加一个c目录: /d /b /c
1.绝对路径可以到达
2.切换到b中,我们cd .也可以到达b目录
3.我们可以切换到c目录中,cd …返回到b,也可以到达b
(也就是说,这目录的硬链接最少可以有2个,分别是当前和绝对路径,然后再加上他的子目录的个数,就是这个目录硬链接数)
修改权限的命令:
chmod +/- r/wx 文件名
该操作会使得同组用户和其他用户得到或者失去相应的权限
目录权限的含义:
对于目录而言,如果失去可执行权限,该目录就不能进去,不能访问这个目录的内容
如果失去rw权限,有执行权限,我们可以到目录进去,但是不能查看目录下文件的内容,也不能创建文件,因为对于目录而言,写权限相当于创建文件,或者修改文件内容
2.
超级用户 root
linux上root对操作系统的所有资源都有访问权限
所以一般情况下,不推荐linux以管理员身份登陆系统,因为可能会删除或者修改一些不可动的文件,导致系统崩溃
su:表示使用另一个用户的身份,而linux预设的另外一个用户就是root
sudo:表示以其他的身份来执行命令,一般是指root用户
用户使用sudo后,必须要输入密码,但是五分钟以内,我们再次执行需要sudo来执行,则不用输入密码。
如果未经授权的用户使用sudo,系统会给管理员发送警告邮件
3.
组管理:group相关命令
#以下命令需要通过sudo来执行,否则失败:
groupadd 组名:添加组
groupdel 组名 :删除组
cat /etc/group :确认组信息,看是否增加或者删除了组
chgrp -R 组名 文件名/目录名:修改文件/目录的所属组
(-R会将目录下所有文件所属递归的修改为对应的组)
(组的信息保存在 /etc/group文件中)
(/etc文件是用来保存系统配置的文件夹)
示例:创建一个目录test,并且新建一个组ne,然后将test目录的组修改为ne
- #创建新目录test
- mkdir test
- #新建一个组ne
- sudo groupadd ne
- #查看组是否创建成功,最后一行
- cat /etc/group
- #将test目录的所属修改为组ne所属
- chgrp -R ne test
- #查看目录所属,如上图
- ls -l
4.
4.1 用户管理:user相关命令
useradd -m -g 组名:
添加新用户 -m自动建立家目录,-g指定用户所在组,否则会给建立一个与用户名相同的组
passwd 用户名:
设置用户密码,如果是普通用户,可以用passwd来修改自己的账户密码
userdel 用户名:
删除用户, -r 自动的删除用户的家目录
cat /etc/passwd | grep 用户名:
确认用户信息修改状态
(创建用户时,如果忘记-m给新用户建立家目录,最好的办法是删除重新建立)
(创建用户如果不指定组,默认生成一个和用户名名字相同的组)
(用户的信息保存在/etc/passwd文件中)
示例:建立一个新用户名字为xx,属于组ne,并查看用户信息
1#创建用户并且指定组
2sudo useradd -m -g ne xx
3#给用户设置密码,切记不能忘,输入以下密码,回车
4sudo passwd xx
5#查看用户信息
6ls -l /home
7#确认用户信息
8cat /etc/passwd | grep 用户名
4.2
查看用户信息:id
id 用户名 :查看用户的UID和GID信息
who: 查看当前所有登陆的用户列表(linux是多用户的系统)
whoami:查看当前登陆用户的账户名(我是谁)
passwd文件:
1grep king /etc/passwd | cat -n
该文件由6个冒号组成7个信息,分别是:
1.用户名
2.密码:密码是加密的,所以看到是个x
3.UID(用户标识)
4.GID(组标识)
5.用户全名或者本地账号
6.家目录
7.登陆使用的shell,即登陆后使用的shell,ubuntu默认是dash
4.3
设置指定用户的主组/附加组和登陆shell的命令:usermod
什么是主组:
通常是新建用户时指定,在/etc/passwd的第四列GID(组标识)对应的那个组
什么是附加组:
在/etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
1cat -n /etc/group | grep king
2#从上图看到king的附加组中有sudo,说明可以用管理员权限进行系统操作
1#修改用户的主组,一般用不到,一般创建的时候指定即可
2usermod -g 组 用户名
3#修改用户的附加组
4usermod -G 组 用户名
5#修改用户登陆的shell
6usermod -s /bin/bash
如果用户不可以进行sudo操作怎么办:说明用户没有在这个附加组中,需要添加
1sudo usermod -G sudo 用户名
2# 命令执行以后退出重新登陆
(使用useradd添加的用户,默认没有sudo的权限,所以我们应该使用上述命令来把该用户添加到sudo的附加组中)
设置指定用户使用的shell:
什么是shell:如上图
分别是: 用户名@主机机器名:工作路径 $
1#给用户指定shell为bash,因为ubuntu默认登陆的shell是dash,不怎么好用
2#这样xshell登陆再次登陆主机后就可以使用bash为shell
3usermod -s /bin/bash
5.
查看执行命令所在的位置:which
1示例:
2which ls
3which pwd
4which useradd
(注意区分/usr/bin/passwd是用来修改用户密码的可执行命令)
(/etc/passwd是用来保存用户信息的文本文件)
扩展:/usr/bin和/usr/sbin的区别:
在linux上,绝大多数可执行文件是保存在/bin、/sbin、/usr/bin、/usr/sbin中
**/bin(binary)**是二进制执行文件目录,主要用于具体的应用
**/sbin (system binary)**是系统管理员专用的二进制代码存放的地方,主要用于系统管理
/usr/bin:(user command for applications):后期安装的一些软件
/usr/sbin:(super user commands for applications):超级用户的一些管理程序
(cd命令是设置在系统的内核中的,没有独立的文件,所以用which无法找到)
6.
用户切换:su
su - 用户名:切换用户,并且切换目录,-可以切换到用户家目录,否则位置保持不变,-可以忽略
exit:退出当前的用户,返回到之前的用户
(不输入用户名,将会切换到root su -)
7.
修改文件权限
1以下需要在sudo命令下执行:
2
3#修改文件或者目录的拥有者
4chown 用户名 文件名|目录名
5#把test文件所属给张三
6chown zhangsan test
7#递归的修改文件或者目录所属的组
8chgrp -R 组名 文件名|目录名
9#递归的修改文件的权限
10chmod -R 755 文件名|目录名
拥有者 组 其他人
r w x r w x r w x
4 2 1 4 2 1 4 2 1
u 表示该档案的拥有者 user
g 表示与该档案的拥有者属于同一个群体(group)者
o 表示其他以外的人 other
a 表示这三者皆是 all
chmod a +x test.txt