Linux入门(用户操作及权限)
linux入门之 用户操作及权限
在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分。每个级别在公司的职责不同,权限也不同。在linux操作系统中也一样,不同的用户身份拥有着不同的功能与权限。
linux用户的分类
超级管理员: uid为0 root用户拥有至高无上的命令,root用户不能改名
系统用户:uid小于1000,用于管理服务,一般不允许登陆
普通用户:uid大于或等于1000,权限较小,允许登陆,只能使用bin下命令
1.用户创建,删除,修改
useradd命令
useradd - create a new user or update default new user information -c, --comment 描述 -d, --home home_dir 家目录 -e, --expiredate expire_date 过期时间 -f, --inactive inactive 是否启用过期机制 -g, --gid group 指定组id号 -g, --groups group1[,group2,...[,groupn]]] 附加组 -m, --create-home 建立家目录 -m, 不建立家目录 do not create the user′s home directory, even if the system wide setting from /etc/login.defs (create_home) is set to yes. -n, --no-user-group 不指定用户同名组 -r, --system 指定该帐号是系统帐号 -s, --shell shell 指定登录shell -u, --uid uid 指定用户id号 -u, --user-group 指定用户创建用户同名组 -o, --创建用户是可以uid重复
usermod命令
usermod - modify a user account -a, --append -l, --lock -u, --unlock -m, --move-home with -d
userdel命令
userdel - delete a user account and related files -f, --force -r, --remove 删除主目录及邮箱
change命令
chage -h, --help display this help message and exit -m, 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 -m, 密码保持有效的最大天数。 -w, 用户密码到期前,提前收到警告信息的天数。 -e, 帐号到期的日期。过了这天,此帐号将不可用。 -d, 上一次更改的日期 如果设置为0 用户下次登录必须改密码 -i, 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用 -l, 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
who命令
who命令将列出所有正在使用系统的用户、所用终端名和注册到系统的时间。而who am i 命令将列出使用该命令的当前用户的相关信息。例如:
[root@localhost ~]# who root :0 2019-10-10 07:59 (:0) root pts/0 2019-10-10 07:59 (:0) root pts/1 2019-10-10 07:59 (:0) [root@localhost ~]# who am i root pts/1 2019-10-10 07:59 (:0)
2.密码设置及密码文件
passwd命令
passwd - set user password -l, lock -u, unlock -d, delete a passwd for an account -s, this will output a short information about the status of the password for a given account. --stdin, echo linux |passwd --stdin vfast 1 > 0
密码文件
/etc/passwd user account information. [用户名]:[密码]:[uid]:[gid]:[身份描述]:[主目录]:[登录shell] /etc/shadow secure user account information. 用户名:这是用户登录系统时使用的用户名,它在系统中是惟一的 口令:此字段存放加密的口令 最后一次修改的时间:标识从某一时刻起到用户最后一次修改口令的天数 最小时间间隔:两次修改口令之间的最小天数 最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令 警告时间:从系统开始警告到口令正式失效的天数 不活动时间:口令过期多少天后,该账号被禁用 失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算) 标志:未使用
shadow文件
目前,大多数unix/linux系统中,利用/etc/shadow文件存放用户账户的加密密码信息和密码的有效期信息。
user01:!!:18173:0:99999:7:::
linux系统的shadow文件中,为每个用户提供一条记录,各个字段用“:”隔开,这9个字段按先后顺序分别是
注册名:密文密码:上次更改密码时间距1970年1月1日的天数:密码更改后不可以更改的天数:密码更改后必须再次更改的天数(即密码的有效期):密码失效前警告用户的天数:密码失效后距离账户被查封的天数:账户被查封时间距1970年1月的天数;保留字段
3.组的管理
groupadd
groupadd - create a new group 命令语法 groupadd [选项] 组名 命令选项 -g, --gid gid 指定gid -r, --system 创建一个系统组 -o, --non-unique 此选项允许添加一个使用非唯一 gid 的组 注意:组名最长为 32 个字符
groupmod命令
groupmod - modify a group definition on the system 命令语法 groupmod [选项] 组名 命令选项 -g, --gid gid -n, --new-name new_group 给组改名 -o, --non-unique 例子 1、将组名为test3的名字改为baism groupmod test3 -n baism
groupdel命令
groupdel - delete a group
4.组密码及组配置文件
gpasswd命令
gpasswd - administer /etc/group and /etc/gshadow -a, --add user add user to group -d, --delete user remove user from group -r, --remove-password remove the group's password -r, --restrict restrict access to group to its members 限制用户登录该组,除了组成员。 -m, --members user,... set the list of members of group -a, --administrators admin,... set the list of administrators for group 案例: 设置组root密码 #gpasswd root 用户组身份切换为root $newgrp root 组管理员设置 #gpasswd test -a user3 限制陌生用户切换到组 #gpasswd -r test 指定组的成员列表 # gpasswd test -m user3,user2
配置文件
/etc/group group account information. [组名]:[密码域]:[gid]:[组员列表] /etc/gshadow secure group account information.
5.相关文件
/etc/passwd 用户账户信息。 /etc/shadow 安全用户账户信息。 /etc/group 组账户信息。 /etc/gshadow 安全组账户信息。 /etc/default/useradd 账户创建的默认值。 /etc/skel/ 包含默认文件的目录。 /etc/login.defs shadow 密码套件配置。
6.身份切换
su 命令--用户身份的切换
su [options...] [-] [user [args...]] 如: su - root su user01
在大多的linux的版本中,都可以使用"su"或者"su -",但是"su"和"su -"有何差别:
"su"只是切换了root身份,但shell环境仍然是普通用户的shell;而"su -"连用户和shell环境一起切换成root身份了。只有切换了shell环境才不会出现path环境变量错误。"su"切换成root用户以后,"pwd"一下,发现工作目录仍然是普通用户的工作目录;而用"su -"命令切换以后,工作目录变成root的工作目录了。用"echo $path"命令看一下"su"和"su -"以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用"su -"命令。
当一个用户同时属于多个组,如何切换组身份 ?
newgrp 命令
newgrp指令类似login指令,它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。
附加知识:文件与文件夹权限
linux 基本权限
linux基本权限 使用ls -l filename 命令查看文件或文件夹详细权限 ls -l -rw-r--rw- 1 root root 22 jan 6 15:42 abc - --- --- --- 第1个 - 文件类型 第2-4个 - 文件所有者的权限 root rw- r 读 w 写 x 执行 第5-7个 - 文件所属的组中的成员对其权限 root r-- 第8-10个 - 其他人 rw- 22 文件或文件夹的大小 jan 6 15:42 创建日期 abc 文件名
chmod命令
chmod - 改变文件的访问权限 命令语法 chmod [options] mode file... 命令选项 -r 递归设置权限,针对目录有效 mode 谁给什么权限 u(所有者) g(所属组) o(其他人) a(所有人) + - = 权限 r 读 w 写 x 执行 数字权限 r 读 4 w 写 2 x 执行 1 chmod 760 abc
chown命令
chown 修改文件或文件夹所有者命令 命令语法 chown [options] user [:group] file... 命令选项 -r, 递归设置,针对文件夹 chown 新所有者 文件名 chown 新的所有者.新的所属组 文件名 -r, 递归修改
chgrp命令
chgrp 改变所属的组 命令语法 chgrp [选项] 组文件... 命令选项 -r, 递归设置权限,针对目录有效 chgrp 新所有组 文件名 chown .新的所属组 文件名
linux特殊权限
linux特殊权限 7 777 suid 4 当一个二进制文件拥有suid权限后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行 sgid 2 要求文件夹下的新建的子文件夹或者子文件继承父文件夹的属组 sticky bit 1 如果给文件夹 赋予粘连位 则该文件夹下的文件或文件夹只能由所有者及root删除
linux隐藏权限
chattr命令
chattr [+-=][asacdistu] 文件或文件名 命令选项: + : 增加某个特殊参数,其他原本存在的参数不动。 - : 删除某个特殊参数,其他原本存在的参数不动。 = : 设置一定,且仅有后面接的参数 a : 当设置了a属性时,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免例如手提电脑有磁盘i/o错误的情况发生。 s : 这个功能有点类似sync。就是将数据同步写入磁盘中。可以有效地避免数据流失。 a : 设置a之后,这个文件将只能增加数据,而不能删除,只有root才能设置这个属性。 c : 这个属性设置之后,将会自动将此文件“压缩”,在读取的时候将会自动解压缩,但在存储的时候,将会先进行压缩后再存储(对于大文件有用)。 d : 当执行dump(备份)程序的时候,设置d属性将可使该文件(或目录)具有转储功效。 i : i的作用很大。它可以让一个文件“不能被删除、改名、设置连接,也无法写入或新增数据”。对于系统安全性有相当大的帮助。 j : 当使用ext3文件系统格式时,设置j属性将会使文件在写入时先记录在journal中。但是,当文件系统设置参数为data=journalled时,由于已经设置日志了,所以这个属性无效。 s : 当文件设置了s参数时,它将会从这个硬盘空间完全删除。 u : 与s相反,当使用u来设置文件时,则数据内容其实还存在磁盘中,可以用来还原删除. 注意:这个属性设置上,比较常见的是a与i的设置值,而且很多设置值必须要root才能设置。
lsattr命令
lsattr 文件或文件名 查看文件或文件夹的隐藏权限
linux file acl 权限
setfacl命令
setfacl - set file access control lists 命令语法 setfacl [选项] file... 命令选项 -m, 修改acl -x, 删除acl -b, 删除所有acl -k, 删除默认的acl -r, 递归
getfacl命令
getfacl 查看文件权限 命令语法 getfacl file...