Linux 中权限最大的用户。我们注册的那个账户不是 root 用户,权限不足,比如不能在根目录下新建文件。
每个用户只有在自己的 home 下有最大权限,其他地方只有只读、执行权限,无修改权限。
可以通过 su [-] root
(好像默认密码 1234556,但是我的不是,不知道是新版本的问题还是设置虚拟机时没注意)或 sudo su [-] [root]
登录,默认切换到 root 用户,可换用户名。我们已经知道可以通过 sudo 命令临时获取权限。
exit
或 ctrl+d 返回上一个用户。普通用户切换用户需要密码,root 切换不用。
root 并不安全,还是 sudo 执行单条指令较为安全。当然用户需要有 sudo 权限才可以使用。
每隔一段时间使用 sudo 命令就需要重新输入密码。可以配置使得不用手动输入吗?
有个 sudoers 文件,存放于 etc/sudoers 下。可以直接通过 sudo visudo
编辑。
打开后还是通过 nano 编辑器编辑。但区别在于,修改的内容不会直接修改在原文件中,而是先保存在 tmp 文件中。
然后系统会检测 sudoers 文件的语法,语法错误会问你是否保存,或重新修改。一定不要保存错误的修改!!! 因为如果 sudoers 文件出错了,以后就使用不了 sudo 命令了,而且想再修改 sudoers 文件也要用到 sudo 命令,也改不了了。
添加一句:
%adm ALL=(ALL)NOPASSWD:ALL
,adm 是用户名。意为 adm 组里的所有用户使用 sudo 的时候都不需要密码,而且对于任何指令都是如此。
linux 中可以配置用户,配置用户组,每个用户可以在多个组里。
可以针对某一用户设置权限,也可以针对用户组。
useradd [-g -d] userName
-g:指定所在组。不指定会自动创建同名组并加入。如果已经存在同名组,必须加 -g。
-d:指定用户 home 路径,不指定自动在 /home/userName 下。
userdel [-r] userName
-r:删除 home 目录。
id [userName]
查看用户,默认看自己。
groupadd groupName
groupdel groupName
usermod -aG userName groupName
使用 getent passwd
或者查看 /etc/passwd 内容,逐行显示:
用户名:密码(x 代表有密码):userId:groupId:desc:家目录(该用户初次登录时处于哪个目录):该用户使用的 shell
。
getent group
查看组信息。
ls -l
文件列表也可以查看权限。
第一列:文件的权限控制信息。
第三列:所属用户。
第四列:所属用户组。
文件权限控制信息10位,分别的意义:
软链接之后再展开说~
r:读。w:写(增、删、改名文件夹,在文件夹中创建文件)。x:执行(cd 此文件夹)。
chmod [-R] 权限 文件或文件夹
-R 表示对文件夹内所有子内容都应用这个权限。
权限形如 u=rwx, g=rx, o=x
。
当一个文件权限为 rwxrwxrwx 时,这个文件在 ls -l
中会以红色显示。
快捷修改权限方法:
比如我们想把一个文件设置为 rwx rx x,即二进制 7 5 1,chmod 715 test.txt
.
直接把一个文件或文件夹改主人。
chown [-R] [user]:[userGroup] 文件或文件夹
,-R 同样表示迭代。
chown usr test.txt
chown :usrGroup test.txt
不过,普通用户没有权限执行这条指令,只有 root 用户可以执行。