如何用C语言实现linux的命令?cd,ls,pwd等

时间:2021-12-06 00:27:26
如题,问题一:我想在linux中新建一个用户(No_Cmd_User)让他没有任何命令的使用权限怎么做??
      问题二:用C语言实现linux的常用命令,并在这个用户(No_Cmd_User)下掉用自己写的命令

13 个解决方案

#1


system("./命令 命令参数");

#2


build-in 和 外部程序是不同的.

不能简单的system

#3


没有任何命令权限的话,就是这个用户什么事情也做不了吧。
你可以fork子进程中exec调用常用的命令,一直在循环,相当于你的shell

#4


公司不能用shell编程,system是调linux的命令,而此登录用户(No_Cmd_User)没有命令使用权限。所以syetem函数也不能用的。大羊头do_fork给说说呗!!!

#5


通过调用系统函数来实现。具体的,楼主可以参考《Unix环境高级编程》,相信楼主肯定能找到答案。

#6


引用楼主 haihui0705 的回复:
问题一:我想在linux中新建一个用户(No_Cmd_User)让他没有任何命令的使用权限怎么做??

这个颇为不易,linux的权限控制策略太简单。
所有文件仅可以设置三种权限,针对文件所有者设一种,针对文件所有者同组用户设一种,针对其它人设一种。
要达到你的目的必须有大动作:把系统中全部可执行文件的所有人设为root,把其余用户的用户组改成和root一个组。把所有可执行文件其它组的权限全部取消。这样你创建的非root组用户就用不了任何命令了。

引用楼主 haihui0705 的回复:
  问题二:用C语言实现linux的常用命令,并在这个用户(No_Cmd_User)下掉用自己写的命令

你也没必要自己写,把 ls 、 cat、login( 这个最重要) 这些可以用的命令复制出来,放在新用户的搜索路径里,把文件的所有者改成新用户或同组人,就可以了。

#7


我推荐一本书你看看那里有很多命令的实现:《UNIX/LINUX编程实践教程》

#8


直接使用busybox的源代码!

#9


linux实例编程,我记得是这本书吧,里面有linux命令里面的写法

#10


引用 6 楼 icansaymyabc 的回复:
引用楼主 haihui0705 的回复:
问题一:我想在linux中新建一个用户(No_Cmd_User)让他没有任何命令的使用权限怎么做??

这个颇为不易,linux的权限控制策略太简单。
所有文件仅可以设置三种权限,针对文件所有者设一种,针对文件所有者同组用户设一种,针对其它人设一种。
要达到你的目的必须有大动作:把系统中全部可执行文件的所有人设为root,把其余用户的用户组改成和……

up!

#11


 查查一些文件、目录操作函数吧

#12


问题1:将No_Cmd_User的命令搜索目录设置为“自定义的目录”,然后减去它对/bin 和/sbin的操作权限
问题2:要实现命令的定制的话,可以直接修改coreutils里的ls,cat等源码,然后编译后放在“自定义的目录下”

sudo apt-get source coreutils就可以得到源码

也可以直接搜索下载,系统用的ls,cat等命令的源码都在里边

要是有不在coreutils里的可以用

dpkg -S 命令名  来获取在哪个包里,然后下载源码包解压即可

#13


都有什么api可以调用呀,比如我想重新实现su功能

#1


system("./命令 命令参数");

#2


build-in 和 外部程序是不同的.

不能简单的system

#3


没有任何命令权限的话,就是这个用户什么事情也做不了吧。
你可以fork子进程中exec调用常用的命令,一直在循环,相当于你的shell

#4


公司不能用shell编程,system是调linux的命令,而此登录用户(No_Cmd_User)没有命令使用权限。所以syetem函数也不能用的。大羊头do_fork给说说呗!!!

#5


通过调用系统函数来实现。具体的,楼主可以参考《Unix环境高级编程》,相信楼主肯定能找到答案。

#6


引用楼主 haihui0705 的回复:
问题一:我想在linux中新建一个用户(No_Cmd_User)让他没有任何命令的使用权限怎么做??

这个颇为不易,linux的权限控制策略太简单。
所有文件仅可以设置三种权限,针对文件所有者设一种,针对文件所有者同组用户设一种,针对其它人设一种。
要达到你的目的必须有大动作:把系统中全部可执行文件的所有人设为root,把其余用户的用户组改成和root一个组。把所有可执行文件其它组的权限全部取消。这样你创建的非root组用户就用不了任何命令了。

引用楼主 haihui0705 的回复:
  问题二:用C语言实现linux的常用命令,并在这个用户(No_Cmd_User)下掉用自己写的命令

你也没必要自己写,把 ls 、 cat、login( 这个最重要) 这些可以用的命令复制出来,放在新用户的搜索路径里,把文件的所有者改成新用户或同组人,就可以了。

#7


我推荐一本书你看看那里有很多命令的实现:《UNIX/LINUX编程实践教程》

#8


直接使用busybox的源代码!

#9


linux实例编程,我记得是这本书吧,里面有linux命令里面的写法

#10


引用 6 楼 icansaymyabc 的回复:
引用楼主 haihui0705 的回复:
问题一:我想在linux中新建一个用户(No_Cmd_User)让他没有任何命令的使用权限怎么做??

这个颇为不易,linux的权限控制策略太简单。
所有文件仅可以设置三种权限,针对文件所有者设一种,针对文件所有者同组用户设一种,针对其它人设一种。
要达到你的目的必须有大动作:把系统中全部可执行文件的所有人设为root,把其余用户的用户组改成和……

up!

#11


 查查一些文件、目录操作函数吧

#12


问题1:将No_Cmd_User的命令搜索目录设置为“自定义的目录”,然后减去它对/bin 和/sbin的操作权限
问题2:要实现命令的定制的话,可以直接修改coreutils里的ls,cat等源码,然后编译后放在“自定义的目录下”

sudo apt-get source coreutils就可以得到源码

也可以直接搜索下载,系统用的ls,cat等命令的源码都在里边

要是有不在coreutils里的可以用

dpkg -S 命令名  来获取在哪个包里,然后下载源码包解压即可

#13


都有什么api可以调用呀,比如我想重新实现su功能